【发布时间】:2020-08-14 23:34:18
【问题描述】:
我正在使用 kafka 2.4.1 版本(最近从 2.2.0 升级到 2.4.1)并注意到一个奇怪的问题。
即使应用程序(kafka 流)已关闭(没有正在运行的应用程序),但消费者组命令将状态返回为重新平衡。我们的应用程序作为 kubernetes pod 运行。
root@bastion-0:# ./kafka-consumer-groups --describe --group groupname --bootstrap-server kafka-0.local:9094
Warning: Consumer group 'groupname' is rebalancing.
我现在已经等了一段时间(30 分钟),即使应用程序关闭,命令仍然报告“重新平衡”。
即使我尝试删除该组,它也会给出以下消息。
root@bastion-0:/app/kafka_2.12-2.4.1/bin# ./kafka-consumer-groups.sh --delete --group group1 --bootstrap-server kafka.local:9094
Error: Deletion of some consumer groups failed:
* Group 'group1' could not be deleted due to: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.GroupNotEmptyException: The group is not empty.
root@bastion-0:/app/kafka_2.12-2.4.1/bin# ./kafka-consumer-groups.sh --delete --group group2 --bootstrap-server kafka.local:9094
Error: Deletion of some consumer groups failed:
* Group 'group2' could not be deleted due to: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.GroupNotEmptyException: The group is not empty.
当我查看组成员时,即使应用程序未运行,也会列出成员。是因为新的再平衡协议(合作再平衡)吗?
./kafka-consumer-groups 从哪里读取组成员信息。应用挂了会保存会员信息吗?
更新:
我用不同的组名提出了应用程序,结果很好。我也可以描述这个组。即便如此,旧组仍处于“再平衡”状态。
新更新 此外,我发现所有组的组协调器是 kafka 集群中的节点之一,当我重新启动该节点时,问题就消失了。
问题:
组元数据存储在哪里?问题可能与损坏的 zookeeper 有关吗?
【问题讨论】:
-
pod 是否仍处于活动状态?显然,kafka 认为某些消费者正在运行
-
Pod 已关闭。这对我来说真的很奇怪。其他应用程序(其他组)很好。我第一次在这个新的 kafka 集群上提出这个问题。即使我使用 --members 运行,它也会显示客户端 ID 列表,但 pod 再次关闭。
-
我在 AWS MSK 中遇到了同样的问题,不幸的是我无法重新启动代理节点。也许这需要作为一个错误向 Kafka 团队提出。
-
更新:它已经作为一个错误提出来了! issues.apache.org/jira/browse/KAFKA-9935
标签: apache-kafka apache-kafka-streams