卡夫卡的一个经纪人崩溃了,如何恢复



我想我对kafka集群的工作方式感到困惑和不清楚。

当前结构:

我通过从这里下载,用3台机器制作了kafka broker集群

其中一个主题是这样的

ubuntu@kafka1:~/.kafka$ bin/kafka-topics.sh --describe --zookeeper localhost:11111 --topic multi_partitions
Topic:multi_partitions      PartitionCount:10       ReplicationFactor:3     Configs:retention.ms=-1,retention.bytes=-1
Topic: multi_partitions     Partition: 0    Leader: 1       Replicas: 2,0,1 Isr: 1,0
Topic: multi_partitions     Partition: 1    Leader: 0       Replicas: 0,1,2 Isr: 1,0
Topic: multi_partitions     Partition: 2    Leader: 1       Replicas: 1,2,0 Isr: 1,0
Topic: multi_partitions     Partition: 3    Leader: 1       Replicas: 2,1,0 Isr: 1,0
Topic: multi_partitions     Partition: 4    Leader: 0       Replicas: 0,2,1 Isr: 1,0
Topic: multi_partitions     Partition: 5    Leader: 1       Replicas: 1,0,2 Isr: 1,0
Topic: multi_partitions     Partition: 6    Leader: 1       Replicas: 2,0,1 Isr: 1,0
Topic: multi_partitions     Partition: 7    Leader: 0       Replicas: 0,1,2 Isr: 1,0
Topic: multi_partitions     Partition: 8    Leader: 1       Replicas: 1,2,0 Isr: 1,0
Topic: multi_partitions     Partition: 9    Leader: 1       Replicas: 2,1,0 Isr: 1,0

正如您所看到的,存在三个复制副本,但replica2已经崩溃,所以它不再工作。

问题

  1. 如果我可以恢复replica2,它会在创建的数据崩溃时同步吗?

  2. 如果我不能恢复replica2,我如何向这个主题添加一个新的代理,并使其复制副本集群中的所有数据?

如果我可以恢复replica2,它是否在创建的数据崩溃时同步?

正如您在评论中提到的,在您的集群中,replication factor = 2acks = 1。假设崩溃的节点是node2。

有两种情况:

场景-1:没有主题分区将您的node2选为领导者。你已经做好了准备,你不会有数据丢失。一旦该节点返回,主题分区领导将丢失的数据推送到node2。

场景-2:假设有一个主题分区选择崩溃的节点作为其领导者。如果是这种情况,集群将选择另一个节点中的一个作为主题分区的领导者。当node2回来,并且其他每个节点都工作正常时,新的领导者将数据推送到node2,以维护配置replication factor = 3

如果我不能恢复replica2,如何在本主题中添加新的broker并使其复制副本群集中的所有数据?

一旦崩溃的节点加入集群,集群就能够恢复副本。

最新更新