使用 Zookeeper命令行修改 Kafka Cluster ID

1.前言

先讲一下做这件事的背景,笔者用 Docker搭了一套 Kafka的环境用于测试,某天发现 Kafka频繁重启,查看日志中的报错如下:

ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.common.InconsistentClusterIdException: The Cluster ID q3r3fhGkTya24-s3dfvYUQ doesn't match stored clusterId Some(kguWHlzQQGmCHczV3u38vQ) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.
        at kafka.server.KafkaServer.startup(KafkaServer.scala:218)
        at kafka.Kafka$.main(Kafka.scala:109)
        at kafka.Kafka.main(Kafka.scala)

这里的报错很清晰:

​ Kafka meta.properties文件中记录的 Cluster ID与 ZK中的不一致

查看网上的资料,基本都讲的是修改 meta.properties文件中的 Cluster ID与 ZK一致即可,但由于笔者的 Kafka此时正在不断重启,完全无法进入容器内部,那么该如何去修改这个文件呢?

——暂时找不到方法修改 meta.properties文件

那么换个思路,是不是可以修改 ZK中记录的 Cluster ID呢

2.如何找到 Kafka Cluster ID的存储位置

第一步,进入 ZK命令行

# 进到 ZK的安装目录后执行下面的脚本
./bin/zkCli.sh

第二步,使用 ls命令寻找保存 cluster id的文件

ls /kafka/cluster
# [id]

第三步,获取上一步找到的 id文件中的内容

get /kafka/cluster/id
# {"version":"1","id":"q3r3fhGkTya24-s3dfvYUQ"}

至此,已经成功找到了 ZK上存储 cluster id的文件

3.修改 Kafka Cluster ID

把日志里面 Kafka存储的 cluster id设置到 ZK里即可:

# 修改 cluster id
set /kafka/cluster/id {
    
    "version":"1","id":"kguWHlzQQGmCHczV3u38vQ"}

# 确认修改结果
get /kafka/cluster/id
# {"version":"1","id":"kguWHlzQQGmCHczV3u38vQ"}

修改完毕后重启 Kafka容器,可以看到 Kafka已经可以正常启动

4.总结

回溯 Kafka中存储的 cluster id和 ZK不一致的原因,应该是笔者重新创建 ZK容器导致的。

另外,解决问题的时候思路一定要打开,一条路走不通的时候,及时换一条路。

猜你喜欢

转载自blog.csdn.net/Daphnisz/article/details/126020149