繁体   English   中英

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

[英]Docker swarm : org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment

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

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

在这种情况下,它运行良好。 所以没问题。

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

在这种情况下,由于连接失败,我得到了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:?]

我对kafka不太了解,无法理解覆盖网络如何在桥接网络中运行良好时影响 kafka 进程

编辑1:

差点找到问题了... 在docker swarm模式下,容器因为有bridgeoverlay两个接口,所以有两个ip地址 ips 是endpoint:172.19.0.3, 10.255.3.65

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

桥接 I/F : 172.19.0.3 : 10101 - 可以连接。 表示telent 172.19.0.3 10101有效。 Overlay I/F : 10.155.3.65 : 10101 - 无法连接到端口,但可以 ping 工作。

kafka 使用的虚拟 ip 10.155.3.65产生TimeoutException

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

回答:

我的错。 我使用了导致问题的default叠加层.. https://docs.docker.com/network/overlay/

创建一个--attachable自定义覆盖网络解决了这个问题。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM