簡體   English   中英

Kubernetes Kafka 到 Zookeeper - “ZooKeeperClientTimeoutException”錯誤

[英]Kubernetes Kafka to Zookeeper - “ZooKeeperClientTimeoutException” error

對於上下文,我通過 Helm 使用 Kubernetes 在 Ubuntu 機器上本地啟動 Kafka 和 Zookeeper:

  - name: kafka
    version: 12.7.3
    repository: https://charts.bitnami.com/bitnami

我已經查看了有關此錯誤的現有問題,但似乎沒有一個與我的問題完全相關。 對於這些現有的問題,我看到問題似乎涉及 docker 網絡或通信。 但是,在我的本地設置中,我可以看到 Kafka可以成功與 Zookeeper 通信並啟動 TCP 連接。 我看到了以下tshark日志,其中.83是 Kafka, .80是 Zookeeper:

 57 118.532604170 192.168.83.83 → 192.168.83.80 TCP 74 44978 → 2181 [SYN] Seq=0 Win=64800 Len=0 MSS=1440 SACK_PERM=1 TSval=3500466016 TSecr=0 WS=128
   58 118.532617080 192.168.83.80 → 192.168.83.83 TCP 74 2181 → 44978 [SYN, ACK] Seq=0 Ack=1 Win=64260 Len=0 MSS=1440 SACK_PERM=1 TSval=1996498322 TSecr=3500466016 WS=128
   59 118.532633329 192.168.83.83 → 192.168.83.80 TCP 66 44978 → 2181 [ACK] Seq=1 Ack=1 Win=64896 Len=0 TSval=3500466016 TSecr=1996498322
   60 118.535617526 192.168.83.83 → 192.168.83.80 TCP 115 44978 → 2181 [PSH, ACK] Seq=1 Ack=1 Win=64896 Len=49 TSval=3500466019 TSecr=1996498322
   61 118.535644624 192.168.83.80 → 192.168.83.83 TCP 66 2181 → 44978 [ACK] Seq=1 Ack=50 Win=64256 Len=0 TSval=1996498325 TSecr=3500466019
   62 118.537006985 192.168.83.80 → 192.168.83.83 TCP 107 2181 → 44978 [PSH, ACK] Seq=1 Ack=50 Win=64256 Len=41 TSval=1996498326 TSecr=3500466019
   63 118.537047974 192.168.83.83 → 192.168.83.80 TCP 66 44978 → 2181 [ACK] Seq=50 Ack=42 Win=64896 Len=0 TSval=3500466020 TSecr=1996498326
   64 118.540259005 192.168.83.83 → 192.168.83.80 TCP 78 44978 → 2181 [PSH, ACK] Seq=50 Ack=42 Win=64896 Len=12 TSval=3500466024 TSecr=1996498326
   65 118.540263332 192.168.83.80 → 192.168.83.83 TCP 66 2181 → 44978 [ACK] Seq=42 Ack=62 Win=64256 Len=0 TSval=1996498330 TSecr=3500466024
   66 118.541564514 192.168.83.80 → 192.168.83.83 SMPP 86 Bind_receiver[Malformed Packet]
   67 118.541607278 192.168.83.83 → 192.168.83.80 TCP 66 44978 → 2181 [ACK] Seq=62 Ack=62 Win=64896 Len=0 TSval=3500466025 TSecr=1996498331
   68 118.541999795 192.168.83.80 → 192.168.83.83 TCP 66 2181 → 44978 [FIN, ACK] Seq=62 Ack=62 Win=64256 Len=0 TSval=1996498331 TSecr=3500466025
   69 118.542214437 192.168.83.83 → 192.168.83.80 TCP 66 44978 → 2181 [FIN, ACK] Seq=62 Ack=63 Win=64896 Len=0 TSval=3500466026 TSecr=1996498331

盡管如此,我似乎仍然在 Kafka 日志中看到以下錯誤:

[2021-01-29 19:17:49,922] INFO Session: 0x1000031e07c0011 closed (org.apache.zookeeper.ZooKeeper)
[2021-01-29 19:17:49,922] INFO EventThread shut down for session: 0x1000031e07c0011 (org.apache.zookeeper.ClientCnxn)
[2021-01-29 19:17:49,925] INFO [ZooKeeperClient Kafka server] Closed. (kafka.zookeeper.ZooKeeperClient)
[2021-01-29 19:17:49,928] ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
    at kafka.zookeeper.ZooKeeperClient.$anonfun$waitUntilConnected$3(ZooKeeperClient.scala:262)
    at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:258)
    at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:119)
    at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1881)
    at kafka.server.KafkaServer.createZkClient$1(KafkaServer.scala:441)
    at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:466)
    at kafka.server.KafkaServer.startup(KafkaServer.scala:233)
    at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)
    at kafka.Kafka$.main(Kafka.scala:82)
    at kafka.Kafka.main(Kafka.scala)

我嘗試了幾件事:

  1. 如上所述,我看到 Kafka 和 Zookeeper 之間的 IP/TCP 流量似乎工作正常,所以我不認為這是一個底層路由問題。
  2. 這有點由(1)暗示,但我查看了nat表中的iptables規則,這些規則似乎是正確的。 zookeeper服務已正確 NAT 到zookeeper pod IP。
  3. 我已經手動嘗試從 Kafka pod 中運行調試命令,以再次確認它是否可以與 Zookeeper 建立端到端連接。 以下似乎有效: echo mntr | nc 10.96.85.98 2181 echo mntr | nc 10.96.85.98 2181
  4. 據我所知,我沒有運行任何防火牆。 完全有可能在iptables中存在阻止另一層工作的東西,但這是我希望弄清楚的。

我現在有這個工作。 這似乎是因為我反復關閉和啟動集群並且沒有正確清除網絡 state,這可能導致某處出現某種黑洞。

這可能是矯枉過正,但我最終做的只是刷新iptables規則並重新啟動所有相關服務,例如需要特殊iptables規則的docker 現在集群正在工作,我不打算重復重新創建集群。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM