5

我们正在尝试使用 kafka 集群实现 Kafka HA。在做研发的时候,我们发现推荐给 zookeeper 和 kafka broker 的最小节点数是 3。

我们理解为什么 zookeeper 应该至少有 3 个节点,因为对于领导者选举,最少 (n+1)/2 个节点应该启动并运行。

但不清楚,为什么至少需要 3 个 kafka 经纪人。为什么我们不能用 2 个 kafka 代理和 3 个 zookeeper 节点来实现 HA?

4

2 回答 2

9

由于 quorum 属性,Zookeeper 的最小节点数为 3。它应该是奇数,因为没有使用偶数个节点。eg: 8 个节点的 Zookeeper 可以降级到 7 个。Zookeepers 中的很多节点也因为共识算法的原因不好。(例如:Paxos)

对于Kafka集群,我个人认为设置2个broker是可以的。但最好有 3 个经纪人。原因是因为维护 ISR - In Sync Replicas。

假设您的 Kafka 集群有 2 个代理。为了保持数据的高可用性和一致性,我们将副本和 ISR 都设置为 2。有趣的部分是 min-ISR 属性。如果您将 min-ISR 设置为 1,那么领导者将失败,很可能您没有任何剩余的副本。如果将 min-ISR 设置为 2,则当领导者或跟随者失败时,生产者和消费者都无法工作。

如果我们的 Kafka 集群有 3 个代理并且我们将 ISR 设置为 3,则 min-ISR 等于 2。使用此配置,我们接受在工作时丢失 1 个副本(领导者或追随者)的风险。例如,如果我们失去了领导者,至少有一个跟随者同步切换。如果我们失去了一个追随者,我们仍然有剩余的追随者来保持最小 ISR 为 2。

于 2019-11-18T07:46:56.083 回答
2

除了@hqt 答案:

您可以设置一个只有 2 个代理的 Kafka HA 集群,但推荐的生产复制因子3,因此您需要 3 个代理才能实现这一点。

此外,您应该考虑 Confluent 正在将领导选举迁移到 Kafka,因此将来您将不再需要 Zookeeper,这可能意味着拥有奇数个 Kafka 代理。

于 2019-11-18T07:58:06.127 回答