【问题标题】:Building a Kafka Cluster using two servers only仅使用两台服务器构建 Kafka 集群
【发布时间】:2020-02-28 15:21:19
【问题描述】:

我打算用两台服务器构建一个 Kafka 集群,并在这两台服务器上托管 Zookeeper。

问题是,既然 Kafka 需要 Zookeeper 运行,那么 Zookeeper 在两台服务器上实现 Kafka 集群的最佳集群构建是什么?

例如。我目前在两台服务器上运行两个 Zookeeper,在每台服务器上运行一个 Kafka,在 Kafka 配置中它们指向所有 Zookeeper。

有没有更好的方法来做到这一点?

【问题讨论】:

  • 如果你失去了一个 ZK,你就失去了它和经纪人?两台机器都在同一个电源板上吗?这些数据到底有多重要?

标签: apache-kafka apache-zookeeper


【解决方案1】:

首先,您不必在同一台服务器上设置 Zookeper 和 Kafka。 Zookeeper 的角色之一是选举控制器。 (负责维护所有分区的leader/follower关系的broker之一)用于选举;大多数 Zookeper 节点必须处于活动状态。在您的情况下,即使一个 Zookeeper 实例已关闭,您也无法选择控制器。因此,拥有一两个 Zookeper 没有区别。这就是为什么建议在 Zookeeper 集群中至少有 3 个节点的原因。通过这种方式,您可以处理一个 Zookeeper 节点的故障。

除此之外,强烈建议在您的 Kafka 集群中至少拥有三个代理,以保持一致性和高可用性。 (link1, link2)

更新:

只要您仅限于两台服务器,那么您可以考虑通过设置min.insync.replicas=2 设置代理并使用replication.factor=2 设置主题来牺牲高可用性。如果 HA 比数据丢失更重要,那么您可以使用 min.insync.replicas=1(默认)代理配置和主题 replication.factor=2。在这种情况下,您的选择是这些恕我直言。 (正如我上面提到的,拥有一两个 Zookeeper 并不重要)

【讨论】:

  • 问题是我仅限于两台服务器,所以无论 zookeeper 在这两台服务器上构建它都是无用的。我想我将单独运行两个 Kafka 服务器,并让一个客户端将收到的任何消息复制到另一个。
猜你喜欢
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多