阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ZooKeeper集群搭建中Connection refused而导致的启动失败

113次阅读
没有评论

共计 3623 个字符,预计需要花费 10 分钟才能阅读完成。

1. 前言

每一次搭建集群环境都像一次战斗,作战中任何一个细节的出错都会导致严重的后果,所以搭建中所需要做的配置如系统配置、网络配置(防火墙记得关)、用户权限、文件权限还有配置文件等等内容,都必须非常仔细,将失误扼杀在摇篮之中,避免因为粗心或者想要提高速度省下的一分钟,在后面付出几个小时的调试时间,因小失大实在不值,切记核对、核对再核对

今天就来说说在搭建 ZooKeeper 集群遇到的一个常见的问题Connection refused,也就是网上很多朋友也会出现的问题,问题的表现也许是一样,但是导致问题的原因却不尽相同,所以要重视自己的 log 文件报的错误,再确认外部大环境没有的情况下,集中力量解决 log 中的错误

2. 我的问题

下面是我在搭建集群时报的错:

这是表面上错误
2016-12-08 05:11:07,890 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@382] - Cannot open channel to 5 at election address lzx15/192.168.80.175: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.connectAll(QuorumCnxManager.java:402) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:840) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:762) 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.connectAll(QuorumCnxManager.java:402) at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:840) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:762)
这是实际上的错误
java.io.FileNotFoundException: /home/Hadoop/data/zookeeper/zkdata/version-2/acceptedEpoch.tmp(Permissoin denied)

3. 其他人的 解决方案:

主要为以下两点:

1)防火墙没关导致通讯失败,无法连接到其他节点上,我在反复检查之后确认防火墙已全部关闭,所以这个方法对我的问题无效

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

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

2)配置文件问题

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

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

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

4. 我的解决方案

找到 zookeeper 的 log 文件 zookeeper.out 在哪里?正常的路径是 你的 zookeper 安装目录 /zookeeper.out,我在这个 zookeeper.out 只能找到那个表面的错误即 Connection refused,所以一直找不到问题,最后我在无意中发现

[hadoop@linuxidc hadoop]$ cd /home/hadoop
[hadoop@linuxidc ~]$ ls
app  data  tools  zookeeper.out

我在这个 zookeeper.out 中找到我问题的真实错误,/home/hadoop/data/zookeeper/zkdata/version-2/acceptedEpoch.tmp(Permissoin denied),所以我去查看了 verison- 2 文件夹的权限,发现他居然是 root 用户的,我立刻把它转到 hadoop 用户下,然后再重新启动集群,三个节点启动成功。

5. 总结

很多时候我们都会去针对遇到的表面问题来寻找解决思路,但是很多问题只是因为其他地方出了问题导致的,所以在你认为找到解决目前这个问题的方法后却仍然没有能解决问题的时候,想想会不会在前面某个地方出错,去别的地方找找答案,记住,钥匙一般不在锁里面。

ZooKeeper 学习总结  http://www.linuxidc.com/Linux/2016-07/133179.htm

Ubuntu 14.04 安装分布式存储 Sheepdog+ZooKeeper  http://www.linuxidc.com/Linux/2014-12/110352.htm

CentOS 6 安装 sheepdog 虚拟机分布式储存  http://www.linuxidc.com/Linux/2013-08/89109.htm

ZooKeeper 集群配置 http://www.linuxidc.com/Linux/2013-06/86348.htm

使用 ZooKeeper 实现分布式共享锁 http://www.linuxidc.com/Linux/2013-06/85550.htm

分布式服务框架 ZooKeeper — 管理分布式环境中的数据 http://www.linuxidc.com/Linux/2013-06/85549.htm

ZooKeeper 集群环境搭建实践 http://www.linuxidc.com/Linux/2013-04/83562.htm

ZooKeeper 服务器集群环境配置实测 http://www.linuxidc.com/Linux/2013-04/83559.htm

ZooKeeper 集群安装 http://www.linuxidc.com/Linux/2012-10/72906.htm

Zookeeper3.4.6 的安装 http://www.linuxidc.com/Linux/2015-05/117697.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138024.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计3623字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中