• 使用 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里的报错很清晰:

    ​ 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
    
    • 1
    • 2

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

    ls /kafka/cluster
    # [id]
    
    • 1
    • 2

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

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

    至此,已经成功找到了 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"}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    4.总结

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

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

  • 相关阅读:
    RocketMQ 5.0 vs 4.9.X 图解架构对比
    Day06
    【杂谈】快来看看如何使用LGMT这样的蜜汁缩写来进行CodeReview吧!
    无人机的视频图传技术
    Python——列表(数组)
    聊聊CWE 4.14 与 ISA/IEC 62443中,如何保障工业软件的安全性
    Mybatis-Plus(核心功能篇 ==>主键策略
    基于JavaWeb的果蔬生鲜交易系统
    SmartNews 基于 Flink 的 Iceberg 实时数据湖实践
    Qt 子线程中无限递归的信号槽导致主线程槽失效的原因和解决办法
  • 原文地址:https://blog.csdn.net/Daphnisz/article/details/126020149