首页 > 解决方案 > kafka和zookepeer高可用配置

问题描述

我想在我的生态系统中建立一个高可用性的 kafka-zookeper。我在每个数据中心有 2 个数据中心和 3 台物理服务器。

直流1

服务器 1 - 第一个 Kafka 代理

服务器 2 - 第二个 Kafka 代理

服务器 3 - 第三个 Kafka 代理

所以一个拥有 3 个 Broker 的 Kafka 集群

Zookepeer ensemble - 3 个物理服务器中的 3 个 zookeeper 实例

直流2

与 DC1 类似的配置

现在我的问题是——

  1. 通过进行上述设置,我们确保了容错性和完整的 HA
  2. 是首选主动-主动设置还是主动-被动设置?为什么?
  3. 如何跨数据中心异步镜像数据?

标签: apache-kafkaapache-zookeeperhigh-availability

解决方案


通过上述设置,我们是否确保了容错性和完整的 HA?

当然可以,但仅限于每个数据中心。

在 AWS(和其他云,我猜)中,您还会有可用区 (AZ),它们是地理上接近的数据中心,但仍然彼此足够隔离,因此与一个区域的断开连接不会影响分布在多个区域上的应用程序. 为了获得真正的高可用性,最佳实践表明您将跨 AZ 扩展集群

此外,最好选择 5 个 Zookeeper,因为这样您可能会失去 2 台机器并且没事。

是首选主动-主动设置还是主动-被动设置?为什么?

如果您将 Kafka 数据主动镜像到辅助集群,那么它并不是真正的“被动”,IMO

如果不实际编辑客户端配置以使用此“备份”引导服务器集,我就无法将 Kafka 客户端“无缝”迁移到“故障转移集群”。另外,如果数据被发送到一个集群,但另一个集群在一段时间内不可用,然后又回来了,那么您需要您的消费者应用程序来协调主题数据中的这些差异。

如何跨数据中心异步镜像数据?

内置在 Kafka 中的是 MirrorMaker。存在其他工具,例如 Confluent Replicator,它添加了MirrorMaker(和类似的 Kafka 镜像工具)目前没有的更多 HA 功能。MirrorMaker2 弥补了这些差异

Confluent 最近更新了他们的白皮书,该白皮书被描述为

配置多个 Apache Kafka 集群的实用指南,以便在发生灾难情况时,您可以制定故障转移、故障恢复和最终成功恢复的计划

你可以在这里下载


推荐阅读