单机四节点可以正常运行
但是到了多机四节点就出现了java.net.BindException: Cannot assign requested address,查看原因可能是由于ip与本机不匹配。
我的情况是通过k8s创建了4个pod,他们各有ip,但是我配置共识用的是集群ip。如果不配置集群ip那重启后会导致每个pod重新获得新ip,导致其他问题,但是配置了共识ip就出现java.net.BindException: Cannot assign requested address这个问题,改如何解决呢?或者是别的原因造成的?
以下是详细异常:
[2023-02-24 08:58:00:421] [Thread-1] [ERROR] - bftsmart.communication.client.netty.NettyClientServerCommunicationSystemServerSide.(NettyClientServerCommunicationSystemServerSide.java:126) - [NettyClientServerCommunicationSystemServerSide] start exception!
java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind0(Native Method) ~[?:1.8.0_342]
at sun.nio.ch.Net.bind(Net.java:461) ~[?:1.8.0_342]
at sun.nio.ch.Net.bind(Net.java:453) ~[?:1.8.0_342]
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:222) ~[?:1.8.0_342]
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:134) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:562) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:260) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_342]
[2023-02-24 08:58:00:427] [Thread-1] [ERROR] - bftsmart.tom.ServiceReplica.(ServiceReplica.java:189) - [ServiceReplica] start exception!, error = {}
java.lang.RuntimeException: Unable to build a communication system.
at bftsmart.tom.ServiceReplica.init(ServiceReplica.java:229) ~[bft-smart-0.7.7.RELEASE.jar:0.7.7.RELEASE]
at bftsmart.tom.ServiceReplica.(ServiceReplica.java:175) ~[bft-smart-0.7.7.RELEASE.jar:0.7.7.RELEASE]
at bftsmart.tom.ServiceReplica.(ServiceReplica.java:144) ~[bft-smart-0.7.7.RELEASE.jar:0.7.7.RELEASE]
at com.jd.blockchain.consensus.bftsmart.service.BftsmartNodeServer$1.run(BftsmartNodeServer.java:808) ~[consensus-bftsmart-1.6.5.RELEASE.jar:1.6.5.RELEASE]
at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_342]
Caused by: java.lang.RuntimeException: [NettyClientServerCommunicationSystemServerSide] exception.
at bftsmart.communication.client.netty.NettyClientServerCommunicationSystemServerSide.(NettyClientServerCommunicationSystemServerSide.java:127) ~[bft-smart-0.7.7.RELEASE.jar:0.7.7.RELEASE]
at bftsmart.communication.client.ClientCommunicationFactory.createServerSide(ClientCommunicationFactory.java:18) ~[bft-smart-0.7.7.RELEASE.jar:0.7.7.RELEASE]
at bftsmart.tom.ServiceReplica.init(ServiceReplica.java:222) ~[bft-smart-0.7.7.RELEASE.jar:0.7.7.RELEASE]
... 4 more
Caused by: java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind0(Native Method) ~[?:1.8.0_342]
at sun.nio.ch.Net.bind(Net.java:461) ~[?:1.8.0_342]
at sun.nio.ch.Net.bind(Net.java:453) ~[?:1.8.0_342]
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:222) ~[?:1.8.0_342]
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:134) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:562) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:260) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-all-4.1.66.Final.jar:4.1.66.Final]
... 1 more