zookeeper非正常結束後啓動失敗問題排查

問題產生背景

    本地電腦中運行了三個zookeeper實例搭建的集羣,在其正常運行的時候,電腦重啓了,然後想要啓動zookeeeper集羣,但是提示:

ZooKeeper JMX enabled by default
Using config: apache-zookeeper-3.6.1/conf/zoo1.cfg
Starting zookeeper ... FAILED TO START

問題排查

    查看運行日誌,默認日誌目錄在zookeeper根目錄有個logs,發現其中有一個後綴爲 .out 的文件,zookeeper-localhost-server-root.out,cat查看該文件內容,發現日誌中記錄瞭如下異常信息:

2020-05-24 15:31:09,954 [myid:] - ERROR [main:QuorumPeerMain@98] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing apache-zookeeper-3.6.1/conf/zoo1.cfg
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:197)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:124)
    at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:90)
Caused by: java.lang.IllegalArgumentException: myid file is missing
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.checkValidity(QuorumPeerConfig.java:810)
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:681)
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:506)
    at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:193)
    ... 2 more
Invalid config, exiting abnormally
從異常信息來看是 myid 這個文件丟失了,然後查看對應的zookeeper的conf目錄中對應配置文件中 dataDir配置的目錄下果然沒有myid這個文件了,搭建集羣運行的時候是配置了的,既然沒有,那就再在對應的dataDir目錄中添加myid文件,我的目錄是/tmp/zookeeper/zoo1,所以執行命令  echo 1 > /tmp/zookeeper/zoo1/myid 添加myid文件並且文件內容爲1,這個id可以隨意但是不能重複,因爲zk集羣中的節點需要獲取myid文件內容來標識該節點.如果有多個cfg文件,那使用的目錄也是要做同樣操作的.

然後執行啓動命令 bin/zkServer.sh start conf/zoo1.cfg,成功啓動,日誌如下:

ZooKeeper JMX enabled by default
Using config: conf/zoo1.cfg
Starting zookeeper ... STARTED

總結        

      現在看來文件丟失的原因就是因爲我把這個目錄建在了linux的/tmp 目錄了,這個目錄中的文件再系統關閉的時候會清除文件,因此,建議不要把zookeeper/conf目錄中的配置文件中dataDir參數值(路徑)設置到系統的/tmp 中.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章