Java Docker swarm:org.apache.kafka.common.errors.TimeoutException:等待节点分配时超时

Java Docker swarm:org.apache.kafka.common.errors.TimeoutException:等待节点分配时超时,java,networking,apache-kafka,containers,docker-swarm,Java,Networking,Apache Kafka,Containers,Docker Swarm,我正在尝试将一个使用kafka的java服务器应用程序容器化。我观察到这种行为 案例1:作为单个容器运行时使用网桥网络 在这种情况下,它工作得很好。所以没问题 案例2:作为单一服务运行使用覆盖网络(群集模式) 在本例中,由于这个不成功的连接,我得到了org.apache.kafka.common.errors.TimeoutException WARN [2019-12-06T14:05:44,668] RequestSendThread: warn(): [Controller-0-to-br

我正在尝试将一个使用kafka的java服务器应用程序容器化。我观察到这种行为

案例1:作为单个容器运行时使用网桥网络

在这种情况下,它工作得很好。所以没问题

案例2:作为单一服务运行使用覆盖网络(群集模式)

在本例中,由于这个不成功的连接,我得到了
org.apache.kafka.common.errors.TimeoutException

WARN [2019-12-06T14:05:44,668] RequestSendThread: warn(): [Controller-0-to-broker-0-send-thread]: Controller 0's connection to broker 10.255.3.64:10101 (id: 0 rack: null) was unsuccessful
java.net.SocketTimeoutException: Failed to connect within 30000 ms
        at kafka.controller.RequestSendThread.brokerReady(ControllerChannelManager.scala:270) [kafka_2.12-1.0.0.jar:?]
        at kafka.controller.RequestSendThread.doWork(ControllerChannelManager.scala:223) [kafka_2.12-1.0.0.jar:?]
        at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:64) [kafka_2.12-1.0.0.jar:?]
我对卡夫卡知之甚少,也无法理解重叠网络在桥接网络中运行良好时如何影响卡夫卡过程

编辑1:

几乎发现了问题。。。在docker swarm模式下,由于两个接口
网桥
覆盖
,容器具有两个ip地址。IP是
端点:172.19.0.3、10.255.3.65

尝试连接到容器时(从同一容器内部)

桥接器I/F:
172.19.0.3:10101
-可以连接。指电信172.19.0.3 10101工程。 覆盖I/F:
10.155.3.65:10101
-无法连接到端口,但可以ping

卡夫卡使用的虚拟ip
10.155.3.65
,用于进行
TimeoutException

使用覆盖ip时无法连接到本地主机端口(但可以ping)。为什么会出现这种情况?

回答:

我的错。我使用了
default
overlay使问题

创建了一个可附加的自定义覆盖网络解决了这个问题

docker network create -d overlay --attachable my-attachable-overlay

请显示您的代理和docker配置文件。例如,您更改了某个端口,因为
10101
不是卡夫卡或Zookeeper@cricket_007. 我不认为这是配置错误。bcoz它在具有桥接接口的普通容器中工作。当它使用
覆盖
网络接口ip时出现问题。一种网络环境问题。。。我用我最新的观察结果更新了我的问题,编辑1…1)测试一个本地容器并不能证明网络连接正常工作。2) 您在哪里设置端口10101,为什么设置端口10101?3) 你读过这个吗@我相信,你的问题一定有很多原因。在我的场景中,指定的默认覆盖网络不允许通信<代码>--attachable解决了此问题。