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

在這裏插入圖片描述

備註:如果爲物理地址則 重啓網卡

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

在這裏插入圖片描述

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地址的映射


本人最終未得以解決,希望找的這些解決方案對大家有用吧~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章