我在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启动。这是怎么回事?我如何让这些端口打开使用。
2条答案
按热度按时间pbpqsu0x1#
您的问题在此处得到解答。
用几句话来说:在每台ZooKeeper机器上,在您的
conf/zoo.cfg
上,您必须将当前服务器的IP设置为0.0.0.0
。例如:如果您当前在server1上,则配置应包含以下行:这一步解决了我的问题。
iqih9akk2#
基于zoo.cfg交叉验证所有节点上的myid。同样的问题也发生在我身上,在查看myid模式时,其中2个节点上发生了更改。