【发布时间】: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)
我尝试了一些方法:
- 如上所述,我看到 Kafka 和 Zookeeper 之间的 IP/TCP 流量似乎工作正常,所以我认为这不是底层路由问题。
- 这在某种程度上由 (1) 暗示,但我查看了
nat表中的iptables规则,这些规则似乎是正确的。zookeeper服务已正确 NAT 到zookeeperpod IP。 - 我已经手动尝试从 Kafka pod 中运行调试命令,以再次确认它是否可以与 Zookeeper 建立端到端连接。以下似乎有效:
echo mntr | nc 10.96.85.98 2181。 - 据我所知,我没有运行任何防火墙。
iptables中的某些东西完全有可能阻止另一层工作,但这是我希望弄清楚的。
【问题讨论】:
-
您的原始标题不是错误 - 我们在非 k8s 环境中看到相同的 SASL 消息,网络非常好。话虽如此,也许您可以分享其余的图表变量,以便有人可以重现您的问题?
-
@OneCricketeer 知道了,我实际上得到了这个工作(我可以发布单独的回复),这是由于每次我关闭和启动集群时都会留下糟糕的网络状态。跨度>
标签: kubernetes apache-kafka apache-zookeeper kubernetes-helm