Zookeeper启动成功后拒绝连接的解决方案

zookeeper启动成功后zkServer.sh status出错


一、问题出现情形

运行zookeeperd后显示启动成功:

JMX enabled by default
Using config: /data/programfiles/zookeeper-3.4.5/bin/../conf/zoo.cfg
StarTIng zookeeper ... STARTED

但用zkServer.sh status查看,反馈如下:

JMX enabled by default
Using config: /data/programfiles/zookeeper-3.4.5/bin/../conf/zoo.cfg

Error contacTIng service. It is probably not running.

二、查看问题原因

查看zookeeper.out文件(默认在zookeeper目录下)
vim zookeeper.out

在底部可看到报错(部分截取):

23 00:59:07,068 [myid:1] - WARN  [WorkerSender[myid=1]:QuorumCnxManager@382] - Cannot open channel to 2 at election address /192.168.110.127:3888
java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:579)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:341)
        at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:449)
        at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:430)
        at java.lang.Thread.run(Thread.java:744)
2016-08-23 00:59:07,074 [myid:1] - WARN  [WorkerSender[myid=1]:QuorumCnxManager@382] - Cannot open channel to 3 at election address /192.168.110.126:3888
java.net.ConnectException: Connection refused

三、问题排查

(原因分析)

1. java环境

查看jdk版本是否与zookeeper版本兼容

java -version

2.排查端口占用

netstat -apn | grep 2181   #默认2181端口为服务端提供端口

备注:若集群未启动 则不应该有端口占用

kill -9 pid                #pid为占用端口的进程id号

3.排除网卡问题

ip addr

Zookeeper启动成功后拒绝连接的解决方案_第1张图片

备注:如果为物理地址则 重启网卡

service network restart

4.排除网络问题

ping ip               #ping其他节点主机 若zoo.cfg 使用域名则用域名

备注:无ping命令则安装 yum install iputils-ping 若有问题则 host映射问题

5.排查节点配置信息

dataDir 是否存在 myid文件内容与 service.x 中x对应

例如:zk01 其对应service.x 则该目录下myid内容为1

Zookeeper启动成功后拒绝连接的解决方案_第2张图片

6.防火墙拦截端口

systemctl status firewalld.service
systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止启动防火墙

总的来说,一般就是这六点原因:

第一,zoo.cfg文件配置出错:dataLogDir指定的目录未被创建;

第二,myid文件中的整数格式不对,或者与zoo.cfg中的server整数不对应

第三,防火墙未关闭;

第四,2181端口被占用;

第五,zoo.cfg文件中主机名出错;

第六,hosts文件中,本机的主机名有两个对应,只需保留主机名和ip地址的映射


本人最终未得以解决,希望找的这些解决方案对大家有用吧~

你可能感兴趣的:(Zookeeper基础)