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了解不多并且无法理解overlay网络在桥接网络中运行良好时如何影响kafka进程 ?
编辑 1:
几乎找到问题了...在docker群模式下,容器有两个IP地址,因为有两个接口bridge
和[=15] =]. 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使用的虚拟ip10.155.3.65
使得TimeoutException
.
使用覆盖 ip 时无法连接到本地主机端口(但可以 ping)。为什么会出现这种情况?
答案:
我的错。我使用了 default
叠加层导致了问题.. https://docs.docker.com/network/overlay/ .
创建了一个 --attachable
自定义覆盖网络解决了这个问题。
docker network create -d overlay --attachable my-attachable-overlay
我正在尝试将使用 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了解不多并且无法理解overlay网络在桥接网络中运行良好时如何影响kafka进程 ?
编辑 1:
几乎找到问题了...在docker群模式下,容器有两个IP地址,因为有两个接口bridge
和[=15] =]. 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使用的虚拟ip10.155.3.65
使得TimeoutException
.
使用覆盖 ip 时无法连接到本地主机端口(但可以 ping)。为什么会出现这种情况?
答案:
我的错。我使用了 default
叠加层导致了问题.. https://docs.docker.com/network/overlay/ .
创建了一个 --attachable
自定义覆盖网络解决了这个问题。
docker network create -d overlay --attachable my-attachable-overlay