配置的时候我三台机子都报了这个错,后面排查的时候参考了一下大佬们的答案,在这里记录一下。
使用“vi /root/zookeeper-3.4.14/bin/zookeeper.out”查看报错原因。
找到有报错信息的地方,看是怎么提示的。
情况一:
我找到了“Caused by...”这一行,我的均提示“/usr/local/zookeeper/data/myid file is missing”,但我明明都配置了的,于是三台虚拟机逐一查看。其实就是我手贱打错字了......第一台myid文件里的:2888后多了个空格;第二台文件名打错了;第三台同样也是myid文件里输错了......
情况二:Connection refused
这种情况去看看你另外的机子是不是没有执行“./zkServer.sh start”(这一步之前记得cd /root/zookeeper-3.4.14/bin这个目录),全部开启了服务以后再执行./zkServer.sh status。
情况三:
在执行【./zkServer.sh start】这一条命令之前,我还需要执行如下两条命令:
mkdir /tmp/zookeeper
echo 1 > /tmp/zookeeper/myid
但我经常会漏掉,导致执行了上面那条命令以后,总是提示【Error contacting service. It is probably not running】,虽然重新回头创建了myid文件,但怎么重启服务也还是报错。
我的解决方法:【进入创建myid的那个文件夹中,把开启服务后出现的一个文件“zookeeper_server.pid”删除,然后重新开启服务。】(涉及到的虚拟机全部都要执行一次)
步骤如下,这里只贴出其中一台虚拟机的代码,其他虚拟机同理:
[root@xnode3 bin]# cd
[root@xnode3 ~]# rm /tmp/zookeeper/zookeeper_server.pid
rm: remove regular file ‘/tmp/zookeeper/zookeeper_server.pid’? y
[root@xnode3 ~]# cd zookeeper-3.4.14
[root@xnode3 zookeeper-3.4.14]# cd bin
[root@xnode3 bin]# ./zkServer.sh start./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@xnode3 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
所以还是得善用错误输出文件排查原因。
这里贴一下解释zookeeper_server.pid是什么文件的文章:
【zookeeper】data/zookeeper_server.pid: No such file or directory FAILED TO WRITE PID 报错-CSDN博客