首页 > 解决方案 > 如何处理 kubernetes 中 kafka 和 zookeeper 的故障场景

问题描述

我有运行在 server1、server2 和 server3 上的 zookeeper 设置,同样 kafka 也在 server1、server2 和 server3 上运行。

安装程序在 Kubernetes 中运行。

问题陈述:

  1. 万一一个zookeeper设置失败,整个设置都会失败,因为kafka依赖于zookeeper。我对吗?

  2. 如果 Q1 正确 - 是否有任何方法可以进行设置,例如如果一个 zookeeper 服务器将关闭,那么 kafka 应该按原样运行?

  3. 如何在 kubernetes 设置中公开 kafka 端口?

  4. 在生产服务器的 Kubernetes 中持久保存数据的推荐方法是什么?

标签: kubernetesapache-kafkaapache-zookeeper

解决方案


我看不到 Zookeeper 的问题与 k8s 有什么关系……但是您绝对应该设置关联规则,使 Zookeeper 和 Kafka 不在同一个物理服务器上或共享同一个磁盘

如果三分之三的 Zookeeper 出现故障,您最终会出现脑裂事件,因为没有一个 Zookeeper 知道应该由哪个负责领导。这实际上会导致 Kafka 崩溃或损坏,是的。

为了降低这种风险,您可以选择运行 5 个 Zookeeper,在这种情况下,您最多可以失去 3 个服务器以达到相同的状态。权威指南书的前几章涵盖了这些概念

关于其他问题 - 一般而言,NodePorts 和 PVCs。

使用 Github 上流行的 Kafka 运算符之一,您无需考虑设置这些属性

您仍然必须在任何安装中手动执行 Kafka 管理任务...如果您想减少工作量,您可以使用 Cruise Control 等额外服务,不过


推荐阅读