【问题标题】:Zookeeper ensemble not coming up动物园管理员合奏没有出现
【发布时间】:2019-02-20 13:03:02
【问题描述】:

我正在尝试在documentation 之后配置 3 个节点的集合。它们都在 Linux Ubuntu 上。 在所有三个节点上的配置文件如下所示:

$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) 上,依此类推。

当我使用 bin/zkServer.sh start 启动 zk 服务器时,控制台上没有显示任何异常。 但是,当我打开 bin 目录下的 zookeeper.out 文件时,我看到以下错误。

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 打开了相应的端口。 例如 : 链输入(策略接受)

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    

谁能告诉我我错过了什么?

问候, 乙肝

【问题讨论】:

  • 您是如何解决这个问题的?我也面临同样的问题。

标签: ubuntu-12.04 apache-zookeeper


【解决方案1】:

我遇到了类似的问题。我从herehere 得到了一些关于问题可能出在哪里的提示。就我而言,命令netstat -plutn 的输出 正在为选举端口 3888 显示包括 127.0.0.1:3888 在内的内容。我已经通过更改服务器 n 上 zoo.cfg 的一部分来解决问题,例如

server.1=name.of.s1:2888.3888
...
server.n=localhost:2888:3888
...

server.1=name.of.s1:2888.3888
...
server.n=0.0.0.0:2888:3888
...

ZooKeeper 重启后,netstat -plutn 的输出包括:::3888

显然,ZooKeeper 需要这样才能正确公开选举端口,在本例中为 3888。

【讨论】:

    【解决方案2】:

    确保:

    • 您已在所有 3 台服务器上启动 Zookeeper 服务器
    • 所有服务器通过运行echo ruok | netcat ip.of.zk2 2181 以非错误模式运行。如果没问题,服务器应该回复imok(仅供参考,这里是list of all supported 4-letter commands
    • /home/zkuser/zookeeper_data/myid 分别包含每个服务器的值 1/2/3
    • 您可以从第一台服务器 ping 其他 2 台服务器

    如果有兴趣,我已经创建了一个 vagrant+ansible 脚本来创建一个 3 节点的虚拟 Zookeeper 集群,请参阅https://github.com/mkrcah/virtual-zookeeper-cluster

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 2013-09-14
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多