问题:Kafka一个节点挂掉,导致服务不可消费。
工作中遇到的一个问题,解决方法如下。
一、修改系统_offsets副本数为3
1、首先查看系统的_offsets副本是几个?
/usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper 192.6.36.159:2181|grep consumer_offsets
查看结果如下图:副本数为1。
2、修改kafka的核心配置文件server.properties
将num.partitions参数(默认为1)修改为3,
另外需要添加auto.create.topics.enable=true ,如果没有对用的topic可以主动创建topic。
由于__consumer_offsets是kafka默认的主题,无法删除,我们可以删除zookeeper中的__consumer_offsets。
进入zookeeper/bin目录执行./zkCli.sh
cd /usr/local/zookeeper/bin
./zkCli.sh
ls /broksers/topics
# 如果此命令报错,用下面代替
rmr /broksers/topics/__consumer_offsets
# 新版本zk去除了rmr命令,在这里我们用
deleteall /broksers/topics/__consumer_offsets
然后重启zookeeper、kafka
# 停止
/usr/local/zookeeper/bin/zkServer.sh stop
/usr/local/kafka/bin/kafka-server-stop.sh -daemon /usr/local/kafka/config/server.properties
# 启动
/usr/local/zookeeper/bin/zkServer.sh start
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
3、再次查看系统的_offsets副本是几个?
/usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper 192.6.36.159:2181|grep consumer_offsets
在节点1修改__consumer_offsets后,在节点2和节点3查看__consumer_offsets发现副本数已经变为3,不需要再进行修改。
!!!注意、到此问题没有解决,这里只是解决了系统的offsets副本,原先的topic的副本数依然为1,需要我们对已有的topic进行扩副本!!!
二、为现有普通topic扩副本
1、查看某个topic的副本数
/usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper 192.6.36.159:2181,192.6.36.161:2181,192.6.36.162:2181 --topic portal_device_info
2、制定分区及副本分配策略
添加json文件
vi /opt/portal_device_info.json
{"version":1,"partitions":[{"topic":"portal_device_info","partition":0,"replicas":[0,1,2]}]}
3、扩副本
/usr/local/kafka/bin/kafka-reassign-partitions.sh --zookeeper 192.6.36.159:2181,192.6.36.161:2181,192.6.36.162:2181--reassignment-json-file /opt/portal_device_info.json –execute
如下图,表示成功。
4、再次查看副本数量
/usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper 192.6.36.159:2181,192.6.36.161:2181,192.6.36.162:2181 --topic portal_device_info
至此,问题已解决,我们测试一下,把其中一个节点停掉,kafka依然可以正常消费。
参考:
https://blog.csdn.net/DreamsArchitects/article/details/108573887
https://blog.csdn.net/yabingshi_tech/article/details/120443647
版权归原作者 李振伟 所有, 如有侵权,请联系我们删除。