卡夫卡复制问题

Kafka replication issue

我正在使用 3 代理卡夫卡。 如果我停止第三个节点:没问题,我可以从节点 1 或 2 使用 LOGS。 如果我停止第二个节点:没问题,我可以从节点 1 或 3 使用日志。 如果我停止第一个节点:我无法消费任何东西。

当我重启 kafka-runner 服务时。日志在这里并且写得正确。

我的主题配置是: 主题:log_topic TopicId:xxx PartitionCount:32 ReplicationFactor:3 配置:segment.bytes=1073741824,retention.ms=7200000 主题:log_topic 分区:0 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:1 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:2 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:3 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:4 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:5 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:6 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:7 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:8 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:9 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:10 领导者:2 副本:2,3,1 Isr:2,3,1 主题:log_topic 分区:11 领导者:3 副本:3,1,2 Isr:2,3,1 主题:log_topic 分区:12 领导者:3 副本:1,3,2 Isr:2,3,1 主题:log_topic 分区:13 领导者:2 副本:2,1,3 Isr:2,3,1 主题:log_topic 分区:14 领导者:3 副本:3,2,1 Isr:2,3,1 主题:log_topic 分区:15 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:16 领导者:2 副本:2,3,1 Isr:2,3,1 主题:log_topic 分区:17 领导者:3 副本:3,1,2 Isr:2,3,1 主题:log_topic 分区:18 领导者:3 副本:1,3,2 Isr:2,3,1 主题:log_topic 分区:19 领导者:2 副本:2,1,3 Isr:2,3,1 主题:log_topic 分区:20 领导者:3 副本:3,2,1 Isr:2,3,1 主题:log_topic 分区:21 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:22 领导者:2 副本:2,3,1 Isr:2,3,1 主题:log_topic 分区:23 领导者:3 副本:3,1,2 Isr:2,3,1 主题:log_topic 分区:24 领导者:3 副本:1,3,2 Isr:2,3,1 主题:log_topic 分区:25 领导者:2 副本:2,1,3 Isr:2,3,1 主题:log_topic 分区:26 领导者:3 副本:3,2,1 Isr:2,3,1 主题:log_topic 分区:27 领导者:2 副本:1,2,3 Isr:2,3,1 主题:log_topic 分区:28 领导者:2 副本:2,3,1 Isr:2,3,1 主题:log_topic 分区:29 领导者:3 副本:3,1,2 Isr:2,3,1 主题:log_topic 分区:30 领导者:3 副本:1,3,2 Isr:2,3,1 主题:log_topic 分区:31 领导者:2 副本:2,1,3 Isr:2,3,1

当我停止领导节点时。 leader 正确更改。

有什么想法吗?

确保您的 __consumer_offsets 主题 有三个副本,并且不仅托管在代理 1 上。默认情况下它只有 1 个副本,如 [=11] 中所述=]

这似乎是 __consumer_offsets 主题的配置问题。

_consumer_offsets is used to store information about committed offsets for each topic:partition per group of consumers (groupID)

每当一个组中的消费者从kafka读取数据时,它会定期将信息存储在该点上,直到数据被读取到一个名为__consumer_offsets的特殊主题中。这样做是为了在发生故障时消费者可以从其最后位置恢复。

问题

__consumer_offsets 主题的复制因子将设置为 1,并且该主题的所有分区也将出现在代理 1 中。

你可以描述__consumer_offsets题目来验证上面的内容。 如果是这种情况,那么解决该问题的最简单方法是删除 __consumer_offsets 主题并使用所需的复制因子重新创建它。

如果删除不是一个选项,则按照下面线程中的说明进行操作