安装zookeeper的时候遇到这个问题,google了很多,但是都不是我遇到的。
我安装的版本是zookeeper3.4.7,当出现问题的时候,记得查看日志zookeeper.out
,在你配置的dataDir(在conf/zoo.cfg中查看)目录下。
2015-12-29 11:09:38,034 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@400] - Cannot open channel to 3 at election address Node2/10.0.0.102:38888
java.net.ConnectException: 拒绝连接
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:381)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:354)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)
at java.lang.Thread.run(Thread.java:745)
可以看到是连接到Node2的38888端口不通(我配置文件设置的节点端口,server.3=Node2:28888:38888),这样就找到问题了,所以当遇到问题的时候记得查看日志文件,这才是最有帮助的,而不是修改什么nc参数。
查看Node2节点发现,38888端口绑带到127.0.0.1上了,这让Master节点怎么连接呀,只需修改/etc/hosts
文件即可,同理,修改Node1,然后重启zookeeper,发现问题解决。
#127.0.0.1 localhost.localdomain localhost
#::1 localhost6.localdomain6 localhost6
127.0.0.1 localhost #这里原来是Node2,现在改为localhost
10.0.0.100 Master
10.0.0.101 Node1
10.0.0.102 Node2
========================================================
写在最后,遇到问题记得查看日志文件,提醒自己。