【已解决-最全分析】zookeeper启动后,zkServer.sh status报错:Error contacting service. It is probably not running
zookeeper启动后,zkServer.sh status报错:Error contacting service. It is probably not running
[root@master zookeeper-3.4.5]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.5/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
一直运行的好好,突然就这样了~~
尝试解决:
我之前conf/zoo.cfg
是这样的:主从3个节点
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
1、按照网友的改成:主从节点都改,其中主机名:心跳端口、数据端口
,改成有区别的,还是不行
server.1=master:2878:3878
server.2=slave1:2888:3888
server.3=slave2:2898:3898
查看zookeeper.out
:
WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@368] - Cannot open channel to 2 at election address slave1/192.168.172.11:3888
java.net.ConnectException: Connection refused (Connection refused)
...
2019-07-29 03:35:22,807 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@368] - Cannot open channel to 3 at election address slave2/192.168.172.12:3898
java.net.ConnectException: Connection refused (Connection refused)
...
依然报这个错。
2、按网友说的:zoo.cfg
和zoo_sample.cfg
,不能两个文件同时存在。 删除后者。依然报错!
说明与此无关。
3、再次检查:节点的防火墙是否关闭
3个节点都是关闭状态
[root@slave2 conf]# firewall-cmd --state
not running
[root@slave2 conf]# getenforce
Disabled
4、查看是否打开相应端口(2888
,3888
等节点对应端口)
查看监听(Listen)的端口
netstat -lntp | grep xxx
5、本机用节点 用 0.0.0.0
IP代替主机名,三个节点都是,改成下方这种方式:
依然不行!!说明跟这个也无关系。
[root@master bin]# sh zkServer.sh status
JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.5/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
6、检查myid
是否对应, 发现是对应的。
7、检查环境配置文件是否有JAVA、ZOOKEEPER配置,是否正确:/etc/profile
JAVA_HOME=/usr/local/src/jdk1.8.0_172
JAVA_BIN=/usr/local/src/jdk1.8.0_172/bin
ZOOKEEPER_HOME=/usr/local/src/zookeeper-3.4.5
PATH=$PATH:$ZOOKEEPER_HOME/bin
发现OK!
网友说要新增:/etc/environment
[root@master zookeeper-3.4.5]# vim /etc/environment
JAVA_HOME=/usr/local/src/jdk1.8.0_172
JAVA_BIN=/usr/local/src/jdk1.8.0_172/bin
ZOOKEEPER_HOME=/usr/local/src/zookeeper-3.4.5
PATH=$PATH:$ZOOKEEPER_HOME/bin
发现并非如此,于是删除这个/etc/environment
。
8、检查/etc/hosts
、各个节点相互ssh
发现都是OK的。
网友说/etc/hosts
不能如下这些,于是删除
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
还是不行。
9、清空各个节点下zk的data
和log
内容,最后依然报该错。
查看data 和log权限,也是OK的。
10、网友还说可能跟存储空间分布或不够有关:
查看空间使用情况:
df -h
查看内存大小
free -h
并非如此。
回到原点,分析:
Cannot open channel to 2 at election address slave1/192.168.172.11:3888
译作:无法在选举地址slave1/192.168.172.11:3888
中打开channel 2
java.net.ConnectException: Connection refused (Connection refused)
,译作:java连接异常:连接被拒绝。
Error contacting service
,译作:联系不上service
并联想到zookeeper_server.pid
。
它是一个再zk启动时才创建的一个文件,里面是一个pid,也就是这个zk运行的pid
,zk的server脚本就是通过配置文件的data路径配置来找这个pid文件,从而确定server脚本要处理哪一个zk进程,所以一旦配置文件的data目录配置有问题,那么zk服务脚本就找不到这个pid文件了,就会报下方的错
或这个错:
[root@master zookeeper-3.4.5]# bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.5/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
所以,解决方案来了:
(0)在确保如下没错的情况下:
etc/profile
etc/hosts
conf/zoo.cfg
- 在zk目录下有data和log目录
myid
(1)每个节点单独启动zk,即在zoo.cfg
中注释掉非本机的内容:以slave1节点为例,注释掉master和slave2节点
#server.1=master:2888:3888
server.2=slave1:2888:3888
#server.3=slave2:2888:3888
然后,每个节点单独启动zk:
zkServer.sh start
这个时候可看到每个节点log、data目录分别生成了新的version
文件夹、zookeeper_server.pid
,这是关键。
(2)将每个节点在(1)中的注释去掉。然后各个节点重新启动zk
zkServer.sh restart
[root@slave2 zookeeper-3.4.5]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader
[root@slave1 zookeeper-3.4.5]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
[root@master zookeeper-3.4.5]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower
更多推荐
所有评论(0)