首页 > 解决方案 > zookeeper:myid 文件丢失

问题描述

环境:

苹果系统

动物园管理员3.6.1

问题:

我可以运行独立模式,但是当我启动集群(包括 3 个节点)时,它会引发错误:

  org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /Volumes/苹果存储盘/zookeeper/zookeeper2181/bin/../conf/zoo.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

关键是,在数据目录中创建了 myid 文件,并且在 myid.xml 中写入了正确的值。

例如:

cd/Volumes/苹果存储盘/zookeeper/zookeeper2181/data

echo "1" > myid

但它仍然会抛出这个错误。我可以确保 myid 文件的位置是正确的

标签: apache-zookeeper

解决方案


只需在 Zookeeper Data Dir 中创建一个具有名称的文件myid(您可以在 zookeeper 配置文件中检查它的位置)并将该服务器的 id 放入其中。

例如,对于 id 为 1 的服务器,我们可以这样做:

echo "1" > /var/zookeeper/myid


推荐阅读