zookeeper启动成功后zkServer.sh status出错
一、问题出现情形
代码语言:javascript复制运行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.
二、查看问题原因
代码语言:javascript复制查看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版本兼容
代码语言:javascript复制java -version
2.排查端口占用
代码语言:javascript复制netstat -apn | grep 2181 #默认2181端口为服务端提供端口
备注:若集群未启动 则不应该有端口占用
代码语言:javascript复制kill -9 pid #pid为占用端口的进程id号
3.排除网卡问题
代码语言:javascript复制ip addr
备注:如果为物理地址则 重启网卡
代码语言:javascript复制service network restart
4.排除网络问题
代码语言:javascript复制ping ip #ping其他节点主机 若zoo.cfg 使用域名则用域名
备注:无ping命令则安装 yum install iputils-ping 若有问题则 host映射问题
5.排查节点配置信息
dataDir 是否存在 myid文件内容与 service.x 中x对应
例如:zk01 其对应service.x 则该目录下myid内容为1
6.防火墙拦截端口
代码语言:javascript复制systemctl status firewalld.service
代码语言:javascript复制systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止启动防火墙
总的来说,一般就是这六点原因:
第一,zoo.cfg文件配置出错:dataLogDir指定的目录未被创建;
第二,myid文件中的整数格式不对,或者与zoo.cfg中的server整数不对应
第三,防火墙未关闭;
第四,2181端口被占用;
第五,zoo.cfg文件中主机名出错;
第六,hosts文件中,本机的主机名有两个对应,只需保留主机名和ip地址的映射
本人最终未得以解决,希望找的这些解决方案对大家有用吧~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/179702.html原文链接:https://javaforall.cn