现象:zookeeper无法启动;
异常:$dataDir/myid file is missing;
原因:zk集群中的节点需要获取myid文件内容来标识该节点,缺失则无法启动;
解决:在zk数据文件存放目录下(见 $ZK/conf/zoo.cfg,dataDir属性),创建myid文件并写入一个数字用来标识本节点(类似这个节点的身份证)。
?
?
class="java">#示例节点 dataDir=/home/crxj-coll/zookeeper-3.4.5/data cd /home/crxj-coll/zookeeper-3.4.5/data #这个节点准备命名为 第8号节点,新建文件myid并写入数字8 echo '8' > /var/tmp/zookeeper/myid
?
?
PO主今天重启了下服务器,突然发现集群都无法工作了。查看zookeeper.out里面的日志输出,发现myid文件没有了。
myid文件用来在zk集群中标识本节点的编号,缺失后将无法启动。
于是着手重建myid文件。先在zoo.cfg中找到dataDir属性,发现数据文件存放与/var/tmp目录下,是的你没有看错,确实将数据文件存放在了/var/tmp目录下。PO主在重启机器之后该临时目录就被自动清除了Orz.
怎么就脑洞大开放到临时目录下,PO主到现在仍百思不得其解。
后面将dataDir转移到zk根目录就略过不表了。
?
详细异常贴下:
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing /home/crxj-coll/zookeeper-3.4.5/bin/../conf/zoo.cfg at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:121) 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: /var/tmp/zookeeper/myid file is missing at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:344) at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:117) ... 2 more Invalid config, exiting abnormally
?
转载请标明作者和原文链接
ifuteng#gmail.com 2014/8/26