在 Kafka HA 中,为什么所需的最小代理数量是 3 而不是 2
In Kafka HA, why minimum number of brokers required are 3 and not 2
我们正在尝试使用kafka集群实现Kafka HA。在做研发时,我们发现zookeeper和kafka broker推荐的最小节点数是3.
我们理解为什么 zookeeper 应该至少有 3 个节点,因为对于领导者选举,最少 (n+1)/2 个节点应该启动 & 运行.
但不清楚为什么至少需要 3 个 kafka 代理。为什么我们不能用 2 个 kafka 代理和 3 个 zookeepr 节点实现 HA?
Zookeeper的最小节点数是3个,因为quorum属性。它应该是奇数,因为没有使用偶数个节点。例如:总节点数为 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,当leader或follower有一个失效时,producer和consumer都不能工作
如果我们的 Kafka 集群有 3 个代理,并且我们将 ISR 设置为 3,则最小 ISR 等于 2。使用此配置,我们接受在工作时丢失 1 个副本(领导者或跟随者)的风险。例如,如果我们失去领导者,至少有一个跟随者同步切换。如果我们失去了一个追随者,我们仍然有一个剩余的追随者来保持最小 ISR 为 2。
除了@hqt回答:
您可以设置一个只有 2 个代理的 Kafka HA 集群,但是推荐的生产 replication-factor 是 3,所以您需要 3 个经纪人 才能实现这一目标。
您还应该考虑到 Confluent 正在努力将领导者选举迁移到 Kafka,因此将来您将不再需要 Zookeeper,这可能意味着有奇数个 Kafka broker。
我们正在尝试使用kafka集群实现Kafka HA。在做研发时,我们发现zookeeper和kafka broker推荐的最小节点数是3.
我们理解为什么 zookeeper 应该至少有 3 个节点,因为对于领导者选举,最少 (n+1)/2 个节点应该启动 & 运行.
但不清楚为什么至少需要 3 个 kafka 代理。为什么我们不能用 2 个 kafka 代理和 3 个 zookeepr 节点实现 HA?
Zookeeper的最小节点数是3个,因为quorum属性。它应该是奇数,因为没有使用偶数个节点。例如:总节点数为 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,当leader或follower有一个失效时,producer和consumer都不能工作
如果我们的 Kafka 集群有 3 个代理,并且我们将 ISR 设置为 3,则最小 ISR 等于 2。使用此配置,我们接受在工作时丢失 1 个副本(领导者或跟随者)的风险。例如,如果我们失去领导者,至少有一个跟随者同步切换。如果我们失去了一个追随者,我们仍然有一个剩余的追随者来保持最小 ISR 为 2。
除了@hqt回答:
您可以设置一个只有 2 个代理的 Kafka HA 集群,但是推荐的生产 replication-factor 是 3,所以您需要 3 个经纪人 才能实现这一目标。
您还应该考虑到 Confluent 正在努力将领导者选举迁移到 Kafka,因此将来您将不再需要 Zookeeper,这可能意味着有奇数个 Kafka broker。