Zookeeper 无法监听 3888 端口
Posted
技术标签:
【中文标题】Zookeeper 无法监听 3888 端口【英文标题】:Zookeeper unable to listen on port 3888 【发布时间】:2015-03-12 11:18:42 【问题描述】:我在 aws 上有 3 台服务器。每个带有 open jdk 7 和 zookeeper 3.4.6 的都有唯一的弹性 IP。 每个 conf/zoo.cfg 都有
clientPort=2181 server.1=server1:2888:3888 server.2=server2:2888:3888 server.3=server3:2888:3888然后我用 ./zkServer.sh start 启动它(说 STARTED) 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 security 上打开了所有端口以排除这种情况。
使用 ruok 远程登录 2181 获取 imok。 telnet 到 2888 无法连接。连接被拒绝。 telnet 到 3888 无法连接。连接被拒绝。netstat 显示没有任何东西阻塞 2888 和 3888
我什至在所有 3 个启动了 zookeeper 的服务器上都试过这个。 这是怎么回事?我如何打开这些端口以供使用。
【问题讨论】:
我想我解决了。我在 zoo.cfg 中使用内部 AWS IP 的服务器列表现在在 ./zkServer.sh 状态我在其他 2 上获得领导者和追随者 你是如何解决这个问题的?对我来说同样的问题 【参考方案1】:您的问题已得到解答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
这一步解决了我的问题。
【讨论】:
【参考方案2】:基于zoo.cfg在所有节点上交叉验证myid。同样的问题发生在我身上,在查看 myid 模式在 2 个节点上发生了变化。
【讨论】:
以上是关于Zookeeper 无法监听 3888 端口的主要内容,如果未能解决你的问题,请参考以下文章