kafka啟動后閃退-已解決


今天忘記了服務器的root密碼,所以重置了一下密碼,因此重新啟動一下服務器。噩夢隨之降臨。

問題描述和嘗試解決

服務器重啟后,kafka就得重啟,但是我在啟動zookeeper后,使用原先在后台啟動kafka的命令
nohup bin/kafka-sever-start.sh config/server.properties 1>/dev/null 2>&1 &
並沒有啟動成功,因為當我通過 查看kafka的所有主題來測試 是否啟動成功時,發現連不上broker
bin/kafka-topics.sh --list --bootstrap-server localhost:9092;
報錯如下:
[root@aliyun-lch kafka_2.13-2.6.0]# bin/kafka-topics.sh --list --bootstrap-server localhost:9092;
[2020-11-30 13:33:00,583] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-11-30 13:33:00,686] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-11-30 13:33:00,890] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-11-30 13:33:01,091] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-11-30 13:33:01,593] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-11-30 13:33:02,396] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
[2020-11-30 13:33:03,600] WARN [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
這個報錯信息很明顯就是沒有啟動kafka, 因為沒有啟動kafka, 所以node等於-1,但是我剛才明明運行了啟動命令啊,所以我再次運行啟動命令, 然后使用ps查看進程是否啟動
[1]+  Exit 127                nohup bin/kafka-sever-start.sh config/server.properties > /dev/null 2>&1
但是因為是后台啟動的,所以我們不知道出錯的原因到底是什么。
查看kakfa根目錄下的logs文件夾下的server.log, 也沒看到什么有用的信息
排錯的過程中參考了很多網上博主的意見,大部分都說修改server.properties中的listenters參數, 但是我試過了,沒有用,而且我是在本機的kafka連接本機的zookeeper, 所以並不需要設置這個 listeners參數,采用默認的即可。
如果我的腦子能再爭氣一點,也就不會忘了密碼,也就不用接受kafka的再次考驗, 每每想到這里,不禁想反手給自己一個大嘴巴子,但還是忍住了,畢竟以后還得靠臉吃飯。

問題解決方法:

其實我們不知道問題出在哪主要是因為沒有報錯信息,而之所以沒有報錯信息,是因為我們采用的是后台運行的方式來啟動kafka的,所以如果我們采用前台運行的方式啟動kafka, 即用正常的方式啟動kafka, 那控制台應該就會打印出失敗信息了。
事實證明確實如此,我直接輸入下面的命令進入kafka 的bin目錄后在前台啟動kafka
cd bin
./kafka-server-start.sh ../config/server.properties
控制台成功打印出了我們想要的提示信息
把圖片中的那段復制如下:
kafka.common.InconsistentClusterIdException: The Cluster ID kqQ_nDLhRueawDs9bNJ9lQ doesn't match stored clusterId Some(d3tnQCC8TkW9xGQOJP2yBg) in meta.properties. The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.
 可以看出是當前kakfa集群的id和meta.properties文件中的集群id不匹配,當前的cluster_id 是 kqQ_nDLhRueawDs9bNJ9lQ 而 系統記錄的cluster_id是 d3tnQCC8TkW9xGQOJP2yBg, 所以兩者不匹配,導致 The broker is trying to join the wrong cluster. Configured zookeeper.connect may be wrong.
meta.properties這個文件的位置在我們在server.properties配置文件中配置的日志目錄下。因為我沒有修改默認日志路徑,所以這里還是/tmp/kafka-logs/目錄。
所以為了保持一致,我們刪掉meta.properties文件即可。
為了保險起見,我刪掉了kafka的日志文件下的所有文件,讓它下次運行時重新生成,這樣就不會有參數前后不匹配的問題出現了。
刪除文件后,進入kafka的bin目錄,運行下面的命令來前台啟動kafka
./kafka-server-start.sh ../config/server.properties
發現kafka已經可以正常啟動了
測試是否真的啟動成功了,我們重新開一個控制台,連接到遠程主機后,進入kafka的根目錄,查看kafka當前所有的topic, 輸入命令后停頓了幾秒后沒有打印出任何東西就打印出了命令提示符,說明kafka確實是啟動成功了,因為我的kafka當前確實沒有任何topic, 如果啟動失敗會有報錯,但是沒有報錯,就說明啟動成功了
Ctrl + Z強行停止前台kafka程序后,再次后台啟動kafka
nohup bin/kafka-sever-start.sh config/server.properties 1>/dev/null 2>&1 &
發現kafka還是會被立即關閉,
但是如果再次使用前台啟動的方式來啟動kafka, 又發現又可以了,然后再次后台啟動,還是不行,好吧,跟后台啟動杠上了。
既然nohup后台啟動的方式不行,那就使用守護線程的方式來啟動kafka, 也可以達到在后台運行程序的目的。
cd bin
./kafka-server-start.sh -daemon ../config/server.properties
ps,查看進程,沒有馬上退出,查看當前kafka的所有topic, 沒有報錯,終於完美解決了。
bin/kafka-topics.sh --list --bootstrap-server localhost:9092;

感想:

1、配環境真不是人干的事哇,太玄學了,建議每次登陸服務器之前先心中默念”***, 永遠滴神,保佑我這次登陸服務器沒毛病“。否則小心***給你扔了個噩夢。
2、部署好環境之后及時創建一個快照,后面可以及時恢復到這個快照狀態,避免這么多麻煩事QAQ。
3、 遇到問題首先應該想各種辦法找到報錯信息或者其他有用的提示信息,盲目的在網上找解決方案然后嘗試只會浪費時間,有了明確的提示信息再去找解決辦法才會事半功倍。就比如這篇文章的問題,剛開始我一直在網上解決方案,嘗試了各種方法,浪費了時間不說,最主要還沒解決問題。后面把后台啟動改成前台啟動找到了報錯提示,很快就找到了原因所在,最終一步步地解決了問題。
 


免責聲明!

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



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