【问题标题】:Kubernetes Kafka to Zookeeper - "ZooKeeperClientTimeoutException" errorKubernetes Kafka 到 Zookeeper - “ZooKeeperClientTimeoutException”错误
【发布时间】:2021-05-03 17:47:34
【问题描述】:

就上下文而言,我正在使用 Kubernetes 的 Ubuntu 机器上通过 Helm 在本地启动 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
  4. 据我所知,我没有运行任何防火墙。 iptables 中的某些东西完全有可能阻止另一层工作,但这是我希望弄清楚的。

【问题讨论】:

  • 您的原始标题不是错误 - 我们在非 k8s 环境中看到相同的 SASL 消息,网络非常好。话虽如此,也许您可​​以分享其余的图表变量,以便有人可以重现您的问题?
  • @OneCricketeer 知道了,我实际上得到了这个工作(我可以发布单独的回复),这是由于每次我关闭和启动集群时都会留下糟糕的网络状态。跨度>

标签: kubernetes apache-kafka apache-zookeeper kubernetes-helm


【解决方案1】:

我现在有这个工作。这似乎是因为我反复关闭和​​启动集群并且没有正确清除网络状态,这可能导致某处出现某种黑洞。

这可能有点矫枉过正,但我​​最终做的只是刷新iptables 规则并重新启动所有相关服务,例如需要特殊iptables 规则的docker。现在集群正在工作,我不打算重复重新创建集群。

【讨论】:

    猜你喜欢
    • 2019-05-18
    • 2016-05-09
    • 2016-03-27
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2019-04-08
    • 2018-08-25
    • 2019-09-27
    相关资源
    最近更新 更多