深坑!关于zookeeper报错: [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@588] - Cannot open channel

关于启动集群后查看状态时报错:

[myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@588] - Cannot open channel

注意!!这个是个深坑!!!其表现在zookeeper集群搭建完成后,我在三台机器(你可能是其他数量)上启动集群可以启动成功,但是查看状态时报错。具体就是not running啦。看到这个错我打印了zookeeper.out的日志。发现具体报错如下:

我便在网上查了一些博客,网上总结的问题主要有两点,我不排除你的问题是出在这两个上,因此这里我也列出来供大家参考。

1.防火墙没关导致通信失败,无法连接到其他节点上。如果你恰巧是这个问题,那很好解决,把每一台服务器的防火墙关闭即可。

命令行:chkconfig iptables off (关闭防火墙)

    service iptables status(查看防火墙状态)

或者直接 service iptables stop

然后把服务全部重启即可。

2.配置文件问题

a. /zookeeper/conf/zoo.cfg文件配置问题

例如dataDir格式不对,或者没有创建dataDir指定的文件等等,所以细心地检查你的配置文件,至于这个文件的内容请大家自行百度。

b. dataDir指定的目录下创建myid文件,然后再文件写上你在zoo.cfg中该节点的对应server号,例如server.1,那么myid中就写1。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

如果你上面两个地方都确信没有问题,但是集群还是起不了,那恭喜你和我一样中奖了!因为你遇到了一个深坑,而且在网上还很难找到其他的解决方案。

我后来仔细的检查了一遍,发现是version-2的权限问题导致的。

我们仔细观察我们创建myid的那个data文件夹。这里我放的目录是/usr/local/software/zookeeper-3.4.14/data。

我们发现当我们启动zookeeper后data中除了自己写的myid外还多出一个version-2的文件夹,这就是关键!!我们可以看到这个文件夹对root可执行,但是当我们进入之后,发现里面的三个文件都是不可执行的。我们需要修改他们的权限!

修改完之后,他们就变成可执行了!

我们对每一台服务器都进行修改。

然后再重启zookeeper,查看状态,发现集群就启动了!!

 

这里,我们在zookeeper.out中只看到了表面错误Connection Refused。但是真正造成错误的原因就在于

/usr/local/software/zookeeper-3.4.14/data/version-2/acceptedEpoch.tmp(Permissoin denied)

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