apache-kafka - kafka和zookepeer高可用配置
问题描述
我想在我的生态系统中建立一个高可用性的 kafka-zookeper。我在每个数据中心有 2 个数据中心和 3 台物理服务器。
直流1
服务器 1 - 第一个 Kafka 代理
服务器 2 - 第二个 Kafka 代理
服务器 3 - 第三个 Kafka 代理
所以一个拥有 3 个 Broker 的 Kafka 集群
Zookepeer ensemble - 3 个物理服务器中的 3 个 zookeeper 实例
直流2
与 DC1 类似的配置
现在我的问题是——
- 通过进行上述设置,我们确保了容错性和完整的 HA
- 是首选主动-主动设置还是主动-被动设置?为什么?
- 如何跨数据中心异步镜像数据?
解决方案
通过上述设置,我们是否确保了容错性和完整的 HA?
当然可以,但仅限于每个数据中心。
在 AWS(和其他云,我猜)中,您还会有可用区 (AZ),它们是地理上接近的数据中心,但仍然彼此足够隔离,因此与一个区域的断开连接不会影响分布在多个区域上的应用程序. 为了获得真正的高可用性,最佳实践表明您将跨 AZ 扩展集群
此外,最好选择 5 个 Zookeeper,因为这样您可能会失去 2 台机器并且没事。
是首选主动-主动设置还是主动-被动设置?为什么?
如果您将 Kafka 数据主动镜像到辅助集群,那么它并不是真正的“被动”,IMO
如果不实际编辑客户端配置以使用此“备份”引导服务器集,我就无法将 Kafka 客户端“无缝”迁移到“故障转移集群”。另外,如果数据被发送到一个集群,但另一个集群在一段时间内不可用,然后又回来了,那么您需要您的消费者应用程序来协调主题数据中的这些差异。
如何跨数据中心异步镜像数据?
内置在 Kafka 中的是 MirrorMaker。存在其他工具,例如 Confluent Replicator,它添加了MirrorMaker(和类似的 Kafka 镜像工具)目前没有的更多 HA 功能。MirrorMaker2 弥补了这些差异
Confluent 最近更新了他们的白皮书,该白皮书被描述为
配置多个 Apache Kafka 集群的实用指南,以便在发生灾难情况时,您可以制定故障转移、故障恢复和最终成功恢复的计划
你可以在这里下载
推荐阅读
- java - 我们可以在代码中不使用 Webdriver 接口的情况下运行 selenium 测试吗?
- java - 在while循环的条件下,有没有办法在用户没有输入有效值时显示错误消息
- angularjs - 在 Angular 1.x 中访问范围函数之外的变量
- java - 静态类模拟中的 org.powermock.api.mockito.ClassNotPreparedException
- powerbi - 过滤运行总计
- python - 检查字符串是否为回文时出现递归错误
- javascript - 在 Node 中验证 TypeForm Webhook 有效负载
- material-ui - 如何使用 Material-ui withStyles HoC 实现 ag-grid 自定义浮动过滤器?
- agda - With-抽象和相等
- python-3.x - 如何在python中将两个嵌套列表分组?