簡體   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