Zookeeper集群status状态一直失败解决方案

Zookeeper集群status状态一直失败解决方案

最近在搭建Zookeeper集群,遇到这个问题头疼了非常久,看了很多网上的教程,还是没能解决相应的问题。最后的最后,终于被我发现了,哎,其实都是自己还不够细心,分享一下,希望有共同问题的朋友可以不用像我一样浪费太多的时间。

简单来说在我每次运行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.

我看到有篇文章说到,主要的原因有以下几点:
可能有以下几个原因:

第一,zoo.cfg文件配置出错:dataLogDir指定的目录未被创建;
第二,myid文件中的整数格式不对,或者与zoo.cfg中的server整数不对应
第三,防火墙未关闭;
第四,2181端口被占用;
第五,zoo.cfg文件中主机名出错;
第六,hosts文件中,本机的主机名有两个对应,只需保留主机名和ip地址的映射(原文链接https://blog.csdn.net/u010657789/article/details/51393517)

由于我一开始真的不知道自己的问题出在哪里,于是一个个尝试。。。

解决方案一

我多次查看zoo.cfg文件,刚开始的时候没有dataLogDir的路径内容,于是后面补上去了。以及反复确认两条路经的正确(后面myid文件保证在dataDir路径下面),还有最后面三个server.1的内容,应该是和网络上一样了。(黄色部分)
在这里插入图片描述

然后尝试重新运行Zookeeper————结果依旧失败哎
(尝试dataDir=/…/data/ 加个斜杆

解决方案二

myid文件中的整数格式不对————反复确认,并没有什么问题,只要你是按照教程走的,这个问题基本不存在。

解决方案三

防火墙未关闭,我按照网上说的防火墙的介绍,发现我这个根本不存在,于是这个方案被我pass
在这里插入图片描述

解决方案四

采用命令:netstat -nlp |grep 2181 查看当前zookeeper集群端口背运用的情况
我首先是用jps 查看了一下我启动的zookeeper运动的线程号是多少,发现当前2181端口也就是我的这个zookeeper再使用而已。但保险起见,我还是kill了一次,然后重新打开,事实上也没有太大的帮助。但也有可能会有其他线程占用的情况发生,还是可以试试查看一下。
在这里插入图片描述

(我这里没有格外占用的情况)

解决方案五

zoo.cfg文件中主机名出错————该文件查看多次,没有什么问题。

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

解决方案六

hosts文件中,本机的主机名有两个对应,只需保留主机名和ip地址的映射——打开 vi /etc/hosts
查询一下主机名和ip地址,这个在前面的基础配置应该就已经是确定无误的了。大概率不会是这个差错。

其他

除了上述六个问题之后,我看到的还有说是因为版本不对,我换了三个版本,3.4.10、3.4.5、3.3.6 配置上都一样,最后并没有什么变化,都没能够解决status的问题。

我的问题解决

最后我查询了bin下面的zookeeper.out文件,看看到底是什么问题。一开始出现过:启动地址已使用的情况,全部kill重启之后问题变化了。
最后是出现“没有找到主机路由”这样的消息,然后特地查询了这个是怎么回事,发现还是很多说是因为没有把防火墙关闭的原因,但不同的是,这次我看到了不同版本的虚拟机用的命令是不一样的!!!!
我一下子感觉到了什么,一个早上+半个晚上的艰难配置,居然就这?
先列一下各个版本的虚拟机下Linux是怎么关闭防火墙的

Ubuntu
查看防火墙状态
ufw status

关闭防火墙
ufw disable

Centos6
查看防火墙状态
service iptables status

关闭防火墙
chkconfig iptables off

Centos7
查看防火墙状态
firewall-cmd --state

关闭防火墙
systemctl stop firewalld.service

永久关闭
systemctl disable firewalld.service

果然,我用了centos7版本的防火墙关闭方法,顺利的得到了结果!

在这里插入图片描述

版本问题真的害人啊,都是些小细节,大问题也都没有,话费自己这么长时间也有点无奈,记录一下希望没有人跟我犯一样的错误了!

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值