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

时间:2019-12-18 01:50:40

标签: docker kubernetes apache-kafka

我正在Kubernetes上建立一个具有3个节点的Kafka集群。如果节点崩溃,是否应该通过脚本自动重新分区? 非常感谢。

2 个答案:

答案 0 :(得分:0)

如果正确设置了分区的复制,Kafka将负责管理分区。 Kafka中的每个主题分区都被复制n次,其中n是主题的复制因子。 简而言之,如果您设置了复制,则无需采取任何操作,pod可以上下移动,生产者和使用者都不会受到影响。

有关其工作原理的详细说明,请参见this

答案 1 :(得分:0)

正如@asolanki所述,Kafka将自动将领导者故障转移到还活着的经纪人。我只是想指出,这不称为重新分配-它称为 领导者故障转移

在Kafka中,将分区分配到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]