Zookeeper 合奏没有出现 [英] Zookeeper ensemble not coming up
问题描述
我正在尝试按照 文档.所有这些都在 Linux Ubuntu 上.在所有三个节点上的配置文件如下所示:
I am trying to configure the ensemble of 3 nodes following the documentation. All of them are on Linux Ubuntu. on all the three nodes configuration file looks like this :
$ZOOKEEPER_HOME/conf 下的zoo.cfg
tickTime=2000
dataDir=/home/zkuser/zookeeper_data
clientPort=2181
initLimit=5
syncLimit=2
server.1=ip.of.zk1:2888:3888
server.2=ip.of.zk2:2888:3888
server.3=ip.of.zk3:2888:3888
我还在 /home/zkuser/zookeeper_data/
目录下放置了相应的myid
"文件.这个 myid 文件包含 1,它在节点 (ip.of.zk1) 上,依此类推.
I've also placed respective "myid
" files under /home/zkuser/zookeeper_data/
directory.
This myid files contain 1 which is on node (ip.of.zk1), so on and so forth.
当我使用 bin/zkServer.sh start 启动 zk 服务器时,控制台上没有显示任何异常.但是,当我打开 bin 目录下的 zookeeper.out 文件时,我看到以下错误.
When I start the zk server using bin/zkServer.sh start without showing any exception on the console. However when I open the zookeeper.out files under bin directory I see the following errors.
2014-11-04 00:23:49,120 [myid:3] - WARN [WorkerSender[myid=3]:QuorumCnxManager@382] - Cannot open channel to 1 at election address /ip.of.zk1:3888
java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:385)
at java.net.Socket.connect(Socket.java:546)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:341)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:449)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:430)
at java.lang.Thread.run(Thread.java:701)
2014-11-04 00:23:49,123 [myid:3] - WARN [WorkerSender[myid=3]:QuorumCnxManager@382] - Cannot open channel to 2 at election address /ip.of.zk2:3888
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:385)
at java.net.Socket.connect(Socket.java:546)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:368)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:341)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:449)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:430)
at java.lang.Thread.run(Thread.java:701)
注意:我已经在每台机器上使用 iptables 打开了相应的端口.例如 :链输入(策略接受)
Note :I've opened the appropriate ports using iptables on each machines. For example : Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- IP.of.ZK1 anywhere
ACCEPT all -- IP.of.ZK2 anywhere
ACCEPT all -- IP.of.ZK3 anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
谁能告诉我我错过了什么?
Can anyone please tell me what I've been missing ?
问候,乙脑
推荐答案
确保:
- 您已经在所有 3 个服务器上启动了 Zookeeper 服务器
- 所有服务器都通过运行
echo ruok 以无错误模式运行 |netcat ip.of.zk2 2181
.如果没问题,服务器应该用imok
响应(仅供参考,这里有一个 所有支持的 4 字母命令的列表) /home/zkuser/zookeeper_data/myid
分别包含每个服务器的值 1/2/3- 您可以从第一台服务器 ping 其他 2 台服务器
- you have started the Zookeeper server on all 3 servers
- all servers run in non-error mode by running
echo ruok | netcat ip.of.zk2 2181
. If ok, the server should respond withimok
(FYI, here's a list of all supported 4-letter commands) /home/zkuser/zookeeper_data/myid
contains values 1/2/3 for each server, respectively- you can ping other 2 servers from the first server
如果有兴趣,我已经创建了一个 vagrant+ansible 脚本来创建一个 3 节点的虚拟 Zookeeper 集群,参见 https://github.com/mkrcah/virtual-zookeeper-cluster
If interested, I have created a vagrant+ansible script to create a 3-node virtual Zookeeper cluster, see https://github.com/mkrcah/virtual-zookeeper-cluster
这篇关于Zookeeper 合奏没有出现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!