問題描述
某據點演示環境,用代碼自動創建topic及kafka-console-consumer.sh手動創建topic,用kafka-topic.sh查看topic詳細信息時,leader列顯示爲none,且SIR列顯示爲空。如圖所示:
解決過程
1、首先想到的是zookeeper /controller目錄下是否有值,controller在選舉partition leader有重要作用。如下圖所示:
2、/brokers/topic/topic名,檢查該目錄的權限,執行結果顯示如下:
3、根據topic partition leader選舉過程來說,不應該會出現該問題,只能讓現場同事去停掉kafka服務,並且手動清空zookeeper中和kafka相關的一些節點,相關的節點如下所示:
- /consumers—消費者、消費者組信息
- /admin—刪除的topic
- /config—配置信息
- /controller—控制節點的broker.id(沒有ip信息有點遺憾)
- /brokers—集羣幾點信息,topic信息
- /controller_epoch—集羣經過了多少次controller選取
手把手教現場運維清理的時候,出現一個現象,讓我有了靈感:/controller目錄,同事反饋說清除不掉,我第一反應是不可能啊~然後他說確定刪除不了。然後我叫他查看一下/controller節點的值。最終,我發現他還有一臺機器用這個zookeeper,導致該節點刪了又立馬創建。
4、我讓他修改一下另外一個kafka集羣server.properties文件中的zookeeper.connect,讓這兩個kafka集羣寫zookeeper的路徑不一樣。
5、最終,重啓了kafka集羣之後,可以正常的創建topic,並使用。
如果對你有幫助,關注一下公衆號吧~