zookeeper無法找到myid文件(myid file is missing)

zookeeper配置單機僞集羣,啓動後查看狀態沒有正常運行。

[root@ZhOu bin]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@ZhOu bin]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/opt/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

打開bin中zookeeper.out,提示錯誤信息如下:

org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /usr/opt/zookeeper1/bin/../conf/zoo.cfg
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:154)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:101)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
Caused by: java.lang.IllegalArgumentException: /usr/opt/zookeeper1/data/myid file is missing
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:406)
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:150)
        ... 2 more

原因:
集羣中的每臺ZK server都會有一個用於惟一標識自己的id,有兩個地方會使用到這個id:myid文件和zoo.cfg文件中。myid文件存儲在dataDir目錄中,指定了當前server的server id。在zoo.cfg文件中,根據server id,配置了每個server的ip和相應端口。Zookeeper啓動的時候,讀取myid文件中的server id,然後去zoo.cfg 中查找對應的配置。

解決方案如下:
在zoo.cfg中指定的dataDir目錄中創建文件myid,裏面只需要填寫你設置的server編號即可。如下:

server.1=127.0.0.1:2800:3800
server.2=127.0.0.1:2801:3801
server.3=127.0.0.1:2802:3802

在第一個zookeeper裏面,創建myid文件,裏面填寫個1就可以了,2、3裏面同樣各自設置,然後重啓就可以了。

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