Zookeeper无法收听端口3888

时间:2015-01-14 09:58:06

标签: amazon-web-services port apache-zookeeper

我在aws上有3台服务器。每个开放的jdk 7和zookeeper 3.4.6都有独特的弹性ip。 每个conf / zoo.cfg都有

  • clientPort = 2181
  • server.1 = server1:2888:3888
  • server.2 = server2中:2888:3888
  • server.3 =服务器3:2888:3888

然后我用./zkServer.sh start启动它(说起始处) 和zookeeper.out说

2015-01-14 09:27:55,919 [myid:1] - INFO  [Thread-1:QuorumCnxManager$Listener@504] - My election bind port: /server1ipaddress:3888
2015-01-14 09:27:55,920 [myid:1] - ERROR [/server1ipaddress:3888:QuorumCnxManager$Listener@517] - Exception while listening
    java.net.BindException: Cannot assign requested address
            at java.net.PlainSocketImpl.socketBind(Native Method)
            at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
            at java.net.ServerSocket.bind(ServerSocket.java:376)
            at java.net.ServerSocket.bind(ServerSocket.java:330)
            at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener.run(QuorumCnxManager.java:507)

所以它无法打开端口。 我最终打开了aws安全的所有端口以排除这种情况。

  • telnet进入2181,ruok得到了imok。
  • telnet进入2888无法连接。连接被拒绝。
  • telnet进入3888无法连接。连接被拒绝。

netstat显示没有阻止2888和3888

我甚至尝试过使用zookeeper启动的所有3台服务器。 这是怎么回事?我如何让这些端口打开使用。

2 个答案:

答案 0 :(得分:0)

您的问题得到解答here

简而言之:在每台ZooKeeper机器上,在conf/zoo.cfg上,您必须将当前服务器的IP设置为0.0.0.0。 例如:如果您当前在server1上,则配置应包含以下几行:

server.1=0.0.0.0:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888

这一步解决了我的问题。

答案 1 :(得分:0)

基于zoo.cfg在所有节点上交叉验证myid。同样的问题发生在我身上,我发现其中 2 个节点上的 myid 模式发生了变化。