解决centos启动zookeeper集群,但是状态显示报错:Error contacting service. It is probably not running 与连接超时,连接被拒绝问题
安装zookeeper-3.4.10的时候,启动正常没报错,但bin/zkServer.sh status查看状态的时候却出现错误,如下:
这些都是我之前出现的问题,刚开始我出现的问题是连接超时,后来就变成了连接被拒绝 总之检查下jdk;zoo.cfg 还有环境变量:etc/profile 修改后不要忘了 source /etc/profile ;server.1等 这里的主机名 还有跟1对应一样的myid都要检查好,我当时都检查没问题,后来重新搞得jdk 又整了防火墙重新开关,又整了那个文件夹权限,最后没法救自己瞎捉摸来回杀那是那三台主机关于zookeeper的进程 杀完再启动zookeeper ,一直重复 最后才好 。咱也不知道啥原因,杀进程杀了好几次,文末我有个脚本你们可以最后看看
可能有以下几个原因:
第一,zoo.cfg文件配置出错:dataLogDir指定的目录未被创建;
第二,myid文件中的整数格式不对,或者与zoo.cfg中的server整数不对应
第三,防火墙未关闭;
第四,2181端口被占用;
第五,zoo.cfg文件中主机名出错;
第六,hosts文件中,本机的主机名有两个对应,只需保留主机名和ip地址的映射
zookeeper启动三台主机要都启动
查看zookeeper.out分析原因(在zookeeper-3.4.10目录下)
- 打开日志 zookeeper.out 查看错误信息,根据错误信息进行百度。
[root@zly1 zookeeper-3.4.10]# vim zookeeper.out
都要root权限
分析思考一:myid 的序号是否正确对应 zoo.cfg中设置的server.*(zoo.cfg配置文件的问题)
zoo.cfg文件中主机名出错————该文件查看多次,没有什么问题。
想必大家都是跟着教程做的 ,这方面的问题不大可能出问题
大家还是检查一下myid是否错误
分析思考二 :防火墙问题
建议大家还是开启下防火墙,再关闭防火墙
大部分问题防火墙重启再关闭即可解决 注意是三台主机都重启防火墙,再关闭防火墙
firewall防火墙开启
systemctl start firewalld.service
firewall防火墙关闭
systemctl stop firewalld.service
注意:是关闭firewalld.service
分析思考三:java环境问题
检查下java环境
java -version
java
实在不行重装一下jdk,再重新配置下jdk环境
vim /etc/profile
分析思考四:排查端口占用
netstat -apn | grep 2181 #默认2181端口为服务端提供端口
我首先是用 jps 查看了一下我启动的zookeeper运行的线程号是多少,发现当前2181端口也就是我的这个zookeeper再使用而已。但保险起见,我还是kill了一次,然后重新打开
备注:若集群未启动 则不应该有端口占用
kill -9 pid #pid为占用端口的进程id号
分析思考五:
删除节点残留信息(三台主机都操作)
rm -rf version-2/ zookeeper_server.pid
分析思考六:提高zookeeper权限
chmod -R 777 zookeeper-3.4.10
分析思考七:杀死进程
查看每台主机zookeeper的进程
查看命令:
jps
杀掉对应的进程,每台都操作,杀完之后每台都启动zookeeper,最后查看状态
bin/zkServer.sh start
bin/zkServer.sh status
bin/zkServer.sh restart #重新启动 ,这个我用了几次一直显示没有那个进程,这时候你就看看是不是这台主机的原因 我主要用的还是上面两个命令
如果三台进程杀完并且启动完,但是查看状态依然报错,那就多杀它几次,我就是这样,杀了4,5次才好
启动zookeeper集群和查看状态脚本
#!/bin/bash
echo "***********正在启动zookeeper集群************ "
ssh root@zly1 source /etc/profile;/usr/zookeeper/zookeeper-3.4.10/bin/zkServer.sh start
ssh root@zly2 source /etc/profile;/usr/zookeeper/zookeeper-3.4.10/bin/zkServer.sh start
ssh root@zly3 source /etc/profile;/usr/zookeeper/zookeeper-3.4.10/bin/zkServer.sh start
echo "* * * * * * *查看是否启动成功及状态信息* * * * * * * * * * "
echo "* * * * * * * * * localzly查看 * * * * * * * * * *"
ssh root@zly1 "source /etc/profile;jps;/usr/zookeeper/zookeeper-3.4.10/bin/zkServer.sh status"
echo "* * * * * * * * * slave1查看 * * * * * * * * * * *"
ssh root@zly2 "source /etc/profile;jps;/usr/zookeeper/zookeeper-3.4.10/bin/zkServer.sh status"
echo "* * * * * * * * * slave3查看 * * * * * * * * * * *"
ssh root@zly3 "source /etc/profile;jps;/usr/zookeeper/zookeeper-3.4.10/bin/zkServer.sh status"
大家如果哪个有效的话可以来个回访,如果谁有问题大家可以一起探讨,总之就是来回琢磨。