解决Zookeeper集群 java.net.ConnectException: Connection refused (Connection refused)
前言
今天在搭建Zookeeper集群启动出现异常。
异常信息
java.net.BindException: Cannot assign requested address (Bind failed)
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at java.net.ServerSocket.bind(ServerSocket.java:329)
at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener.run(QuorumCnxManager.java:742)
2018-12-01 14:37:22,465 [myid:3] - INFO [QuorumPeer[myid=3]/0.0.0.0:2183:QuorumPeer@865] - LOOKING
2018-12-01 14:37:22,466 [myid:3] - INFO [QuorumPeer[myid=3]/0.0.0.0:2183:FastLeaderElection@818] - New election. My id = 3, proposed zxid=0x0
2018-12-01 14:37:22,470 [myid:3] - WARN [WorkerSender[myid=3]:QuorumCnxManager@588] - Cannot open channel to 1 at election address /119.29.181.129:3881
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:562)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:538)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)
at java.lang.Thread.run(Thread.java:748)
问题分析
错误关键 Cannot assign requested address (Bind failed)
,无法分配请求地址,核心错误Connection refused (Connection refused)
、,意思是连接被拒绝。
解决办法
看到其它资料说是防火墙的问题,我试着把防火墙关闭,然而并没有用。
最后找到,我的是云服务器,不能使用外网的IP连接。改成内网直接启动就OK了。
修改 zoo.cfg文件的server
IP改成内网IP
server.1=172.16.32.13:2881:3881
server.2=172.16.32.13:2882:3882
server.3=172.16.32.13:2883:3883
重新启动成功
总结
1、如果是云服务器,zoo.cfg里面的ip要是内网地址,不能是别名或者公网地址。
2、端口的防火墙必须关。
还没有评论,来说两句吧...