kafka中节点实现服役和退役方式

 更新时间:2025年11月12日 09:42:08   作者:小王同学mf  
本文详细描述了如何在Kafka集群中进行节点的服役和退役操作,包括节点准备、负载均衡计划的创建与执行、以及验证副本存储计划等步骤

服役新节点

1)新节点准备

(1)关闭 bigdata03,进行一个快照,并右键执行克隆操作。

(2)开启 bigdata04,并修改 IP 地址。

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改完记得重启网卡:

systemctl restart network

(3)在 bigdata04 上,修改主机名称为 bigdata04。

hostname bigdata04    # 临时修改
[root@bigdata04 ~]# vim /etc/hostname

bigdata04

还要记得修改 /etc/hosts文件,并进行同步

修改bigdata01的hosts 文件,修改完之后,记得同步一下

192.168.52.11 bigdata01
192.168.52.12 bigdata03
192.168.52.13 bigdata02
192.168.52.14 bigdata04

xsync.sh /etc/hosts
scp -r /etc/hosts root@bigdata04:/etc/

(4)重新启动 bigdata03、bigdata04。

(5)修改 bigdata04 中 kafka 的 broker.id 为 3。

进入bigdata04的kafka中,修改里面的配置文件 config/server.properties

(6)删除 bigdata04 中 kafka 下的 datas 和 logs。

rm -rf datas/* logs/*

(7)启动 bigdata01、bigdata02、bigdata03 上的 kafka 集群。

先启动zk集群

xcall.sh zkServer.sh stop
xcall.sh zkServer.sh start

启动kafka集群(只能启动三台)

kf.sh start 

(8)单独启动 bigdata04 中的 kafka。

bin/kafka-server-start.sh -daemon ./config/server.properties

查看kafka集群first主题的详情:

bin/kafka-topics.sh --bootstrap-server bigdata01:9092 --topic first --describe

发现副本数并没有增加。

由于我之前创建first这个主题的时候只有一个副本,不是三个副本,所以呢,演示效果不佳。

kafka-topics.sh --bootstrap-server bigdata01:9092 --topic third --create --partitions 3 --replication-factor 3

2)执行负载均衡操作

(1)创建一个要均衡的主题

创建一个文件:vi topics-to-move.json

写上如下代码,如果多个topic 可以使用,分隔

{
  "topics": [
    {"topic": "third"}
  ],
  "version": 1
}

(2)生成一个负载均衡的计划

在创建的时候,记得启动bigdata04节点,否则计划中还是没有bigdata04

bin/kafka-reassign-partitions.sh --bootstrap-server bigdata01:9092 --topics-to-move-json-file topics-to-move.json --broker-list "0,1,2,3" --generate

未来的分区策略拷贝一份:

{"version":1,"partitions":[{"topic":"abc","partition":0,"replicas":[2,0,1],"log_dirs":["any","any","any"]},{"topic":"abc","partition":1,"replicas":[3,1,2],"log_dirs":["any","any","any"]},{"topic":"abc","partition":2,"replicas":[0,2,3],"log_dirs":["any","any","any"]}]}

(3)创建副本存储计划(所有副本存储在 broker0、broker1、broker2、broker3 中)。

vi increase-replication-factor.json
{"version":1,"partitions":[{"topic":"first","partition":0,"replicas":[3,2,0],"log_dirs":["any","any","any"]},{"topic":"first","partition":1,"replicas":[0,3,1],"log_dirs":["any","any","any"]},{"topic":"first","partition":2,"replicas":[1,0,2],"log_dirs":["any","any","any"]}]}

以上这个内容来自于第二步的执行计划。

(4)执行副本存储计划。

bin/kafka-reassign-partitions.sh --bootstrap-server bigdata01:9092 --reassignment-json-file increase-replication-factor.json --execute

(5)验证副本存储计划。

bin/kafka-reassign-partitions.sh --bootstrap-server bigdata01:9092 --reassignment-json-file increase-replication-factor.json --verify

如果不相信添加成功,可以查看first节点的详情:

退役旧节点

1)执行负载均衡操作

先按照退役一台节点,生成执行计划,然后按照服役时操作流程执行负载均衡。

(1)创建一个要均衡的主题

kafka下添加文件:vim topics-to-move.json 

添加如下内容:

{
 "topics": [
 {"topic": "abc"}
 ],
 "version": 1
}

(2)创建执行计划。

bin/kafka-reassign-partitions.sh --bootstrap-server bigdata01:9092 --topics-to-move-json-file topics-to-move.json --broker-list "0,1,2" --generate

(3)创建副本存储计划(所有副本存储在 broker0、broker1、broker2 中)。

添加文件: vi increase-replication-factor.json 

添加如下代码:

{"version":1,"partitions":[{"topic":"first","partition":0,"replicas":[0,2,1],"log_dirs":["any","any","any"]},{"topic":"first","partition":1,"replicas":[1,0,2],"log_dirs":["any","any","any"]},{"topic":"first","partition":2,"replicas":[2,1,0],"log_dirs":["any","any","any"]}]}

(4)执行副本存储计划

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop11:9092 --reassignment-json-file increase-replication-factor.json --execute

(5)验证副本存储计划。

bin/kafka-reassign-partitions.sh --bootstrap-server hadoop11:9092 --reassignment-json-file increase-replication-factor.json --verify

2)执行停止命令

在 bigdata04上执行停止命令即可。

bin/kafka-server-stop.sh

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于@Autowierd(自动装配)的使用说明

    基于@Autowierd(自动装配)的使用说明

    这篇文章主要介绍了@Autowierd(自动装配)的使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 当Mybatis遇上目录树超全完美解决方案

    当Mybatis遇上目录树超全完美解决方案

    这篇文章主要介绍了当Mybatis遇上目录树有哪些解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 浅析Bean Searcher 与 MyBatis Plus 区别介绍

    浅析Bean Searcher 与 MyBatis Plus 区别介绍

    Bean Searcher号称任何复杂的查询都可以一行代码搞定,但 Mybatis Plus 似乎也有类似的动态查询功能,最近火起的 Bean Searcher 与 MyBatis Plus 倒底有啥区别?带着这个问题一起通过本文学习下吧
    2022-05-05
  • 深入浅析SPI机制在JDK与Spring Boot中的应用

    深入浅析SPI机制在JDK与Spring Boot中的应用

    SPI是一种使软件框架或库更加模块化、可扩展和可维护的有效方法。通过遵循“开闭原则”, SPI 确保了系统的稳定性和灵活性,从而满足了不断变化的业务需求,这篇文章主要介绍了SPI机制在JDK与Spring Boot中的应用,需要的朋友可以参考下
    2023-09-09
  • jvm-jstack常用的用法示例

    jvm-jstack常用的用法示例

    jstack 是一个常用的用于分析 Java 进程的工具。它可以显示 Java 进程中所有线程状态和堆栈信息,帮助定位 Java 进程中的问题,这篇文章主要介绍了jvm-jstack常用的用法示例,需要的朋友可以参考下
    2023-06-06
  • 使用jaxws建立webservice客户端并实现soap消息的handler验证示例

    使用jaxws建立webservice客户端并实现soap消息的handler验证示例

    这篇文章主要介绍了使用jaxws建立webservice客户端并实现soap消息的handler验证示例,需要的朋友可以参考下
    2014-03-03
  • Java快速排序案例讲解

    Java快速排序案例讲解

    这篇文章主要介绍了Java快速排序案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Mybatis查询语句结果集的总结大全

    Mybatis查询语句结果集的总结大全

    这篇文章主要给大家总结介绍了关于Mybatis查询语句结果集的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • SpringBoot API接口超时时间的五种配置方式详解

    SpringBoot API接口超时时间的五种配置方式详解

    在开发API接口时,配置API接口的超时时间是一项非常重要的任务,SpringBoot中有多种方式可以配置API接口的超时时间,下面小编就为大家介绍一下吧
    2025-03-03
  • Java格式化输出详细讲解(printf、print、println、format等)

    Java格式化输出详细讲解(printf、print、println、format等)

    Java的格式化输出等同于String.Format,与C有很大的相似,下面这篇文章主要给大家介绍了关于Java格式化输出(printf、print、println、format等)的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-03-03

最新评论