当前位置:   article > 正文

zookeeper集群重启后 Error contacting service. It is probably not running 的原因分析及解决方案

zookeeper集群重启后 Error contacting service. It is probably not running 的原因分析及解决方案

       zookeeper集群重启后 Error contacting service. It is probably not running 的原因分析及解决方案

Zookeeper集群搭建相对比较容易,但有些细节需要注意,否则很可能会报错:Error contacting service. It is probably not running ,这个错误是查询集群节点状态的时候所反馈的报错信息,也就是 zkServer.sh status 这个命令的输出。

集群的根本在于节点之间互相知道对方的存在,从而互相之间能够通信,同步数据,进而达到ha高可用的状态,以上的报错最多的原因是节点间的通信受阻,而一般受阻的原因为系统防火墙的阻拦(iptables或者Firewalls)。

因此,解决方案为要么正确的设置防火墙,放行通信端口,要么关闭防火墙,使得通信端口正常工作。

在zookeeper中有三个端口需要特别注意,2888,3888,2181,其中的2888是节点服务器的对外服务端口,3888是节点之间的选举端口(通过3888端口节点内部商量选举一个leader),2181端口是客户端连接节点的端口,比如,一个服务要注册到zookeeper,那么,就需要通过2181端口告诉集群,我,是一个服务,我要你管理我,从而完成注册,以及后续的监听流程。

具体解决方案如下:

一,查看zookeeper进程,是否存在,如不存在查看zookeeper.out 文件,排查原因,直到错误解决,进程正常出现。

root@centos9 ~]# ps -ef | grep zookeep
root       947     1  0 11:51 ?        00:00:05 java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/local/src/zookeeper-3.4.6/bin/../build/classes:/usr/local/src/zookeeper-3.4.6/bin/../build/lib/*.jar:/usr/local/src/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/src/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/src/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/usr/local/src/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/usr/local/src/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/usr/local/src/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/usr/local/src/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/usr/local/src/zookeeper-3.4.6/bin/../conf: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /usr/local/src/zookeeper-3.4.6/bin/../conf/zoo.cfg
root      3075  1063  0 12:26 pts/0    00:00:00 grep --color=auto zookeep

这个是正常的进程状态。

二,selinux和防火墙的状态

建议全部关闭,关闭方法不用多说。

三,vim /zookeeper.out

可能很多人不知道这个文件在哪,这个简单,find / -name zookeeper.out

如果文件内有timeout 或者refuse这样的字眼,请执行第二步。

2020-11-21 11:56:49,687 [myid:2] - INFO  [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:ZooKeeperServer@162] - Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /usr/local/zk/version-2 snapdir /usr/local/zk/version-2
2020-11-21 11:56:49,690 [myid:2] - INFO  [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Leader@358] - LEADING - LEADER ELECTION TOOK - 314353
以上是文件部分片段,表示成功选举出了leader。出现了什么错误,不要慌,找这个日志文件,仔细查看报错信息,针对解决。

四,节点ID标识文件myid是否正确

myid这个文件的内容要和主配置文件的内容相呼应,比如:

server.1=192.168.0.17:2888:3888 在192.168.0.17这个机器上的配置文件设定的myid是1,那么你新建的myid文件内容就应该是1,如果你修改配置文件内容为

server.22=192.168.0.17:2888:3888 ,那么myid文件的内容就应该是22。

其中的IP可以使用域名简化,但域名需要其余的节点能够解析,因此,要么搭建dns服务自己解析,要么写入hosts文件,让节点之间互相认识,才可以写域名,否则必定报以上的错。

总结:

这个报错九成都是防火墙和selinux的锅,如果可以查到进程,基本就是这两项的问题。主配置文件的域名需要节点之间都可以互相认识才可以使用域名,否则请使用IP。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/603119
推荐阅读
相关标签
  

闽ICP备14008679号