【问题标题】:Can I auto-reassign partitions on Kafka?我可以在 Kafka 上自动重新分配分区吗?
【发布时间】:2020-04-10 13:23:16
【问题描述】:

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

【问题讨论】:

    标签: docker kubernetes apache-kafka


    【解决方案1】:

    正如@asolanki 所提到的,Kafka 会自动将领导者故障转移到活跃的代理。我只是想指出,这不称为重新分配 - 它称为 leader 故障转移。

    在 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]
    

    【讨论】:

      【解决方案2】:

      如果分区的复制设置正确,Kafka 会负责管理分区。 Kafka 中的每个主题分区都被复制 n 次,其中 n 是主题的复制因子。 所以简而言之,如果您设置了复制,则无需任何操作,pod 可以停机和备份,生产者和消费者不受影响。

      有关其工作原理的详细说明,请查看this

      【讨论】:

        猜你喜欢
        • 2021-11-26
        • 1970-01-01
        • 2020-10-08
        • 2013-09-09
        • 2020-11-14
        • 1970-01-01
        • 1970-01-01
        • 2021-01-07
        • 1970-01-01
        相关资源
        最近更新 更多