栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

kafka 集群服役新节点

kafka 集群服役新节点

前言

在生产环境下,kafka集群中发现遇到了性能瓶颈,主要体现在现有的集群下,某个topic的分区存储不够用了,生产者生产消息量太大,或者消费端消费速度跟不上生产进度,导致分区数据大量堆积;

在这种情况下,为缓解集群压力,可以考虑动态扩容kafka集群,也叫做服役新节点,本篇演示下如何基于现有的kafka集群快速服役一台新的kafka节点(或实例)

环境准备

1、虚拟机一台,并安装centos7的系统(或者阿里云等云服务器),4核8G
2、kafka_2.12-2.7.0 安装包,以及zookeeper安装包

kafka集群搭建

为演示后面的效果,需要提前搭建好kafka集群,这里演示下单机模式下的3节点kafka伪集群搭建过程

1、解压安装包

tar -zxvf kafka_2......

2、创建一个data目录,并在data目录下创建4个子目录

这些目录分别用于存储集群中各个kafka实例的数据

3、进入kafka主目录下的config目录

将该目录下的server.properties 再复制出3份,伪集群模式,只需要启动的时候指明配置文件即可

4、修改第3步中的4个配置文件

以server.properties为例进行说明,只需要修改其中几个关键的参数即可,参考如下配置

broker.id=1  #每个实例的唯一标识,不能重复,本例建议数字依次递增即可
listeners=PLAINTEXT://IP:9092  #云服务器这里设置为内网IP
advertised.listeners=PLAINTEXT://IP:9092 #云服务器这里设置为外网IP (如果是虚拟机,这个可以不用设置)
log.dirs=/usr/local/soft/kafka/datas/data1  #数据存放目录
zookeeper.connect=IP:2181  #zookeeper地址,IP建议使用外网

其他的几个配置文件,只需要修改各自的 brokerId数字、端口号,数据存放目录即可,再次强调: brokerId数字,端口号和数据存放目录一定要改正确,避免出现各种意想不到的问题,这里我们规划的端口号分别是:9092,9093,9094,9095

5、启动kafka集群

先启动zookeeper服务,然后进入kafka的主目录下,依次执行下面的命令,先启动3个实例,留下一个实例用于后面的节点服役实验

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

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

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

6、检查服务状态

可以看到,kafka集群已经启动了

如果不放心,可以去zk中检查下node节点状况,通过命令行客户端检查ids节点下的kafka各个节点,如果出现下面的状态,说明集群中3个实例已经正常可以使用了

7、创建一个测试用的topic

./kafka-topics.sh --zookeeper IP:2181 --create --topic zcy222 --partitions 3 --replication-factor 3

然后可以使用下面的命令进行查看topic列表

./kafka-topics.sh --zookeeper IP:2181 --list

然后,使用下面的命令查看下上面创建的这个 zcy222这个主题的情况

通过上面的主题信息展示情况,可以清楚的看到分区、副本的纯粹情况,到这里,集群搭建完成,同时,前置的准备工作也已经基本完成

接下来,将演示下服役新节点的完整步骤

服役新节点过程

所谓服役新节点,即在现有的集群基础上,动态扩展一个或多个新的节点,即将新的kafka实例加入到现有的集群节点中,从而起到分摊存储或增强集群吞吐能力的目的

在上面搭建集群的过程中,我们启动了3个实例,形成了3节点的kafka集群,另外还有一个server3.properties的配置文件,就是接下来要使用的启动第四个实例的配置文件

1、再启动一个kafka实例

进入kafka主目录,执行下面的命令

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

这时可以看到4个kafka实例全部存在了

2、在bin目录下添加一个即将用于均衡的主题配置文件

配置内容如下,如果主题有多个,在后面继续追加,用逗号分割即可

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

3、生成一个负载均衡的计划

进入binm目录下,执行下面的命令,生成一个即将进行分配的计划

./kafka-reassign-partitions.sh --zookeeper IP:2181 --topics-to-move-json-file topics-to-move.json --broker-list "1,2,3,4" --generate

执行完毕后得到下面的内容提示,得到即将分配的计划内容

4、创建increase-replication-factor.json文件

即创建执行副本的文件,用于下面生成新的分配计划

在bin目录下创建increase-replication-factor.json 文件,将第三步中的计划内容拷贝到该文件中

5、执行第四步中的副本计划

执行下面的命令

./kafka-reassign-partitions.sh --zookeeper IP:2181 --reassignment-json-file increase-replication-factor.json --execute


从上面的输出日志看到对副本计划成功做了执行

6、验证第五步中的副本存储计划

执行下面的命令进行验证

./kafka-reassign-partitions.sh --zookeeper IP:2181 --reassignment-json-file increase-replication-factor.json --verify

可以看到 broker上面这时候存在了1,2,3,4个节点,即节点4也被加入到当前主题的分区中

7、查看当前主题的分区以及副本描述信息

./kafka-topics.sh --zookeeper IP:2181 --describe --topic zcy222	

对比上文中第一次执行该命令时候的展示内容,可以发现这时候 isr信息已经发生了变化

也可以进入到zookeeper的客户端窗口,查看broker的信息,已经发生了变化

通过上面的演示,我们成功将一个新节点动态服役到原来的集群下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751003.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号