kafka啟動報錯"A broker is already registered on the path /brokers/ids/1"解決方案


問題

kafka掛掉后,啟動報錯日志如下

[2020-03-19 17:50:58,123] FATAL Fatal error during KafkaServerStartable startup. Prepare to shutdown (kafka.server.KafkaServerStartable)
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:408)
        at kafka.utils.ZkUtils.registerBrokerInZk(ZkUtils.scala:394)
        at kafka.server.KafkaHealthcheck.register(KafkaHealthcheck.scala:71)
        at kafka.server.KafkaHealthcheck.startup(KafkaHealthcheck.scala:51)
        at kafka.server.KafkaServer.startup(KafkaServer.scala:269)
        at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:39)
        at kafka.Kafka$.main(Kafka.scala:67)
        at kafka.Kafka.main(Kafka.scala)
[2020-03-19 17:50:58,123] INFO [Kafka Server 1], shutting down (kafka.server.KafkaServer)

分析

This probably indicates that you either have configured a brokerid that is already in use提示可知,zookeeper中可能已經注冊了此broker id,正常情況下,你應該不會啟動兩個相同broker id的kafka server(除非你沒注意弄錯了使得兩個kafka server用了相同的broker id)

於是我用$KAFKA安裝包下帶有的zookeeper client 連接了zk server,看一下kafka broker的注冊情況

$KAFKA/bin/zookeeper-shell.sh 192.168.0.1:2181 ls /brokers/ids

執行后顯示

Connecting to 192.168.0.1:2181

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[1, 2, 3]

然而實際情況是,broker id為1的kafka server並沒有啟動起來。原因是這台機器之前因為卡死被物理重啟,kafka broker沒有正常下線,zk上還保留着它的broker id。

解決方案

找到原因后,解決就很簡單了,把注冊在zookeeper上的這個broker id delete掉就行了

$KAFKA/bin/zookeeper-shell.sh 192.168.0.1:2181 delete  /brokers/ids/1

然后再啟動觀察日志就正常了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM