Docker 我可以在Kafka上自动重新分配分区吗?

Docker 我可以在Kafka上自动重新分配分区吗?,docker,kubernetes,apache-kafka,Docker,Kubernetes,Apache Kafka,我正在设置一个Kafka群集,在Kubernetes上有3个节点。如果节点崩溃,我应该通过脚本自动重新划分分区吗? 非常感谢。如果分区的复制设置正确,Kafka会负责管理分区。Kafka中的每个主题分区被复制n次,其中n是主题的复制因子。 因此,简言之,如果您已经设置了复制,则无需采取任何行动,pod可以下降和备份,生产者和消费者不会受到影响 关于这项工作的详细描述,请看@asolanki提到的,卡夫卡将自动将领导者故障切换到活动的代理。我只是想指出,这不是所谓的重新分配,而是所谓的领导者故障转

我正在设置一个Kafka群集,在Kubernetes上有3个节点。如果节点崩溃,我应该通过脚本自动重新划分分区吗?
非常感谢。

如果分区的复制设置正确,Kafka会负责管理分区。Kafka中的每个主题分区被复制n次,其中n是主题的复制因子。 因此,简言之,如果您已经设置了复制,则无需采取任何行动,pod可以下降和备份,生产者和消费者不会受到影响


关于这项工作的详细描述,请看@asolanki提到的,卡夫卡将自动将领导者故障切换到活动的代理。我只是想指出,这不是所谓的重新分配,而是所谓的领导者故障转移

在卡夫卡中,一个分区被分配给N个副本(N=复制因子)。同步副本集(ISR)是同步(活动且具有最新数据)的副本集。ISR自然遵循副本集

重新分配是指当您更改此分区应承载的副本时。我想举个例子可以说明这一点:

一个简单的故障切换:

1. partition=0 is on brokers (replicas) replicas=[1,2,3], isr=[1,2,3]. Broker 1 is the leader
2. broker 1 fails. Kafka automatically fails over to another broker
3. replicas=[1,2,3], isr=[2,3] (broker 1 is dead)
1. partition=0 is on brokers (replicas) replicas=[1,2,3], isr=[1,2,3]
2. We reassign partition=0 to replicas=[4,5,6]
3. replicas=[4,5,6], isr=[4,5,6]
一次简单的重新分配:

1. partition=0 is on brokers (replicas) replicas=[1,2,3], isr=[1,2,3]. Broker 1 is the leader
2. broker 1 fails. Kafka automatically fails over to another broker
3. replicas=[1,2,3], isr=[2,3] (broker 1 is dead)
1. partition=0 is on brokers (replicas) replicas=[1,2,3], isr=[1,2,3]
2. We reassign partition=0 to replicas=[4,5,6]
3. replicas=[4,5,6], isr=[4,5,6]