我想构建一个 HA Kafka 集群,集群需要跨越 2 个可用区域。
我希望能够继续阅读和写入主题,即使 AZ 中的所有经纪人都失败了。
如果我在每个 AZ 中至少有 2 个代理,复制因子为 3,最小 ISR 为 2 且 acks 设置为 All,那么我认为当除了领导者之外的其他一个代理也会执行写操作时,生成器写入将被激活。机架感知算法是否强制 ISR 必须位于其他 AZ 中?文档只提到复制品,而不是 ISR。
这是否会让我在失去 AZ 的情况下继续阅读和写作?如果没有,那么实现这一目标需要什么?
1 回答
如果你想要一个真正的 HA Kafka 集群,你需要从 HA Zookeeper 集合开始,这通常意味着 3 个可用区,因为(与 Kafka 经纪人不同)Zookeeper 节点需要一个法定数量(大多数原始节点)才能运行,你不能拥有当一半节点关闭时占多数。
Zookeeper 很重要的原因是一个合适的 HA Kafka 集群不应该只是在失败后允许读写,而且还允许新主题创建和新的领导者选举,这两者都需要 Zookeeper 才能运行。