消费者在关闭Kafka中的代理时不工作

3yhwsihp  于 2023-04-29  发布在  Apache
关注(0)|答案(2)|浏览(128)

我有3个经纪人的集群。我使用的主题配置了3个和4个分区的复制因子。我使用Kafka python API来设置生产者和消费者。
我的问题是,当我停止其中一个代理时,在某些情况下,我的消费者停止接收消息。

(When broker 1 is unavailable):
Topic: frogakas Partition: 0    Leader: 5   Replicas: 5,3,1 Isr: 5,3
    Topic: frogakas Partition: 1    Leader: 3   Replicas: 3,1,5 Isr: 3,5
    Topic: frogakas Partition: 2    Leader: 5   Replicas: 1,5,3 Isr: 5,3
    Topic: frogakas Partition: 3    Leader: 5   Replicas: 5,1,3 Isr: 5,3

问题是,当我关闭任何一家经纪人时,一些消费者群体就会消失。我的所有消费者共享相同的组ID,因此,他们停止工作,因为他们的组不在组列表中。
当所有代理都可用时,这些是组:

root@m3-virtual-machine:/opt/kafka/bin# ./kafka-consumer-groups.sh  --list --bootstrap-server localhost:9092
test_group_kas
test_group_1
test_group_2
test_group

当代理1不可用时,仅显示test_group_2:

root@m3-virtual-machine:/opt/kafka/bin# ./kafka-consumer-groups.sh  --list --bootstrap-server localhost:9092
test_group_2

此时,如果我启动一个groupId为test_group_2的消费者,消息将被正确接收。
我想知道当经纪人福尔斯时,是否有任何方法可以避免服务中断。

pdkcd3nj

pdkcd3nj1#

默认情况下,Kafka以offsets.topic.replication.factor=1开头
如果关闭托管偏移主题的代理,消费者组管理将无法工作。
列出的组可能是您配置zookeeper而不是引导服务器的错误。

0md85ypi

0md85ypi2#

如果Kafka集群中的代理出现故障,它可能会导致服务中断,原因是分区复制因子下降和副本不可用。为了避免这种情况,一个选项是增加复制因子,以确保即使在失败的情况下也有足够的副本可用。此外,代理之间的自动负载平衡可以帮助避免特定代理的过载。同样重要的是,确保消费者和生产者被正确配置,以处理代理和分区故障。Kafka可以提供状态信息,以便消费者和生产者可以调整他们的行为以响应失败事件。

相关问题