Zookeeper无法侦听端口3888

aor9mmx1  于 2022-12-09  发布在  Apache
关注(0)|答案(2)|浏览(550)

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

  • 客户端端口=2181
  • 服务器.1 =服务器1:2888:3888
  • 服务器.2 =服务器2:2888:3888
  • 服务器.3 =服务器3:2888:3888

然后我用./zkServer.sh开始(说STARTED)开始,Zookeeper说

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安全上的所有端口来排除这种情况。

  • 远程登录到2181与ruok得到imok。
  • telnet至2888无法连接。连接被拒绝。
  • telnet至3888无法连接。连接被拒绝。

netstat显示没有任何东西阻塞2888和3888
我甚至已经尝试了这与所有3个服务器有zookeeper启动。这是怎么回事?我如何让这些端口打开使用。

pbpqsu0x

pbpqsu0x1#

您的问题在此处得到解答。
用几句话来说:在每台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

这一步解决了我的问题。

iqih9akk

iqih9akk2#

基于zoo.cfg交叉验证所有节点上的myid。同样的问题也发生在我身上,在查看myid模式时,其中2个节点上发生了更改。

相关问题