虚拟机上的 kafka 被强制断电之后,重新启动的时候报错
[2019-01-03 15:57:46,279] INFO Creating /brokers/ids/1 (is it secure? false) (kafka.utils.ZKCheckedEphemeral)
[2019-01-03 15:57:46,294] INFO Result of znode creation is: NODEEXISTS (kafka.utils.ZKCheckedEphemeral)
[2019-01-03 15:57:46,295] FATAL [Kafka Server 1], Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
java.lang.RuntimeException: A broker is already registered on the path /brokers/ids/1. This probably indicates that you either have configured a brokerid that is already in use, or else you have shutdown this broker and restarted it faster than the zookeeper timeout so it appears to be re-registering.
at kafka.utils.ZkUtils.registerBrokerInZk(ZkUtils.scala:417)
at kafka.utils.ZkUtils.registerBrokerInZk(ZkUtils.scala:403)
at kafka.server.KafkaHealthcheck.register(KafkaHealthcheck.scala:70)
at kafka.server.KafkaHealthcheck.startup(KafkaHealthcheck.scala:50)
at kafka.server.KafkaServer.startup(KafkaServer.scala:280)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
at kafka.Kafka$.main(Kafka.scala:65)
at kafka.Kafka.main(Kafka.scala)
[2019-01-03 15:57:46,297] INFO [Kafka Server 1], shutting down (kafka.server.KafkaServer)
查了一下,说是 zk 上有节点由于断电没有及时清除,看到 bin 下有 zookeeper-shell.sh,应该可以用这个来搞一搞
$ ./zookeeper-shell.sh 192.168.56.101:2181
Connecting to 192.168.56.101:2181
Welcome to ZooKeeper!
JLine support is disabled
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
然后删掉节点
rmr /brokers/ids/1
Node does not exist: /brokers/ids/1
发现报错不存在
ls /
[isr_change_notification, zookeeper, admin, consumers, cluster, config, latest_producer_id_block, brokers, controller_epoch]
ls /brokers
[seqid, topics, ids]
ls /brokers/ids
[]
发现 ids 为空
尝试重启 kafka,这次可以了,那应该是在上次不行的时候启动进程自动删除了之类的