Zookeeper何时更改Kafka集群ID?

Par*_*olu 4 apache-kafka apache-zookeeper

有时,我在尝试运行 Kafka 代理时会出现以下错误:

ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.common.InconsistentClusterIdException: The Cluster ID m1Ze6AjGRwqarkcxJscgyQ doesn't match stored clusterId Some(1TGYcbFuRXa4Lqojs4B9Hw) 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:220)
        at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)
        at kafka.Kafka$.main(Kafka.scala:84)
        at kafka.Kafka.main(Kafka.scala)
[2020-01-04 15:58:43,303] INFO shutting down (kafka.server.KafkaServer)
Run Code Online (Sandbox Code Playgroud)

我知道错误消息的含义,并且可以通过删除 Kafka 日志目录中的 meta.properties 来解决。

我现在想知道这种情况何时发生,以防止这种情况发生。为什么/何时 Zookeeper 查找的集群 ID 有时会发生变化?

小智 7

Kafka 需要 Zookeeper 来启动。当您使用开箱即用的设置运行 zk 时,它包含设置为 tmp 目录的 data/log 目录。当您的实例/计算机重新启动时,tmp 目录将被刷新,并且 Zookeeper 会丢失其身份并创建一个新的身份。Kafka 无法连接到新的 zk,因为meta.properties文件包含先前cluster_id的引用

为了避免这种情况,请将您的$KAFKA_HOME/config/zookeeper.properties 更改配置dataDir为在 Zookeeper 关闭/重新启动后仍将保留的目录。

这将避免 zk 在每次机器重新启动时丢失其 cluster_id。