3.2. zookeeper 集群配置


在大多数生产环境中,建议您部署复制 ZooKeeper 实例的集群。稳定且高度可用的 ZooKeeper 集群对于运行可靠的 ZooKeeper 服务非常重要。ZooKeeper 集群也称为 ensembles

ZooKeeper 集群通常由奇数个节点组成。ZooKeeper 要求集群中的大多数节点都已启动并在运行。例如:

  • 在具有三个节点的集群中,至少有两个节点必须启动并在运行。这意味着它可以容许一个节点被停机。
  • 在由五个节点组成的集群中,必须至少有三个节点可用。这意味着它可以容许两个节点处于 down 状态。
  • 在由 7 个节点组成的集群中,必须至少有四个节点可用。这意味着它可以容许三个节点被停机。

在 ZooKeeper 集群中拥有更多节点可以提供更好的弹性和可靠性。

ZooKeeper 可以在带有偶数节点的集群中运行。但是,额外的节点不会增加集群的弹性。具有四个节点的集群至少需要三个节点可用,且只能容忍一个节点被停机。因此,它具有与只有三个节点的集群相同的弹性。

理想情况下,不同的 ZooKeeper 节点应该位于不同的数据中心或网络片段中。增加 ZooKeeper 节点数量会增加集群同步上消耗的工作负载。对于大多数 Kafka 用例,有 3、5 或 7 节点的 ZooKeeper 集群应该足够了。

警告

具有 3 个节点的 ZooKeeper 集群只能容忍 1 个不可用的节点。这意味着,如果在 ZooKeeper 集群的其他节点上进行维护,集群节点会崩溃。

重复的 ZooKeeper 配置支持独立配置支持所有配置选项。为集群配置添加附加选项:

initLimit
允许后续者连接到集群领导机的时间长度。将时间指定为多个 ticks (请参阅 timeTick 选项 了解更多详情)。
syncLimit
跟随者可以位于领导机后的时间长度。将时间指定为多个 ticks (请参阅 timeTick 选项 了解更多详情)。
reconfigEnabled
启用或禁用 动态重新配置。必须启用才能向 ZooKeeper 集群添加或删除服务器。
standaloneEnabled
启用或禁用独立模式,其中 ZooKeeper 只使用一个服务器运行。

除了以上选项外,每个配置文件还应包含应该是 ZooKeeper 集群成员的服务器列表。服务器记录应以 server.id=hostname:port1:port2 格式指定,其中:

id
ZooKeeper 集群节点的 ID。
hostname
节点侦听连接的主机名或 IP 地址。
port1
用于集群内通信的端口号。
port2
用于领导选举机制的端口号。

以下是具有三个节点的 ZooKeeper 集群配置文件示例:

timeTick=2000
dataDir=/var/lib/zookeeper/
initLimit=5
syncLimit=2
reconfigEnabled=true
standaloneEnabled=false

server.1=172.17.0.1:2888:3888:participant;172.17.0.1:2181
server.2=172.17.0.2:2888:3888:participant;172.17.0.2:2181
server.3=172.17.0.3:2888:3888:participant;172.17.0.3:2181
注意

在 ZooKeeper 3.5.7 中,必须在使用前将 四个字母单词 添加到 allow 列表中。如需更多信息,请参阅 ZooKeeper 文档

myid 文件

ZooKeeper 集群中的每个节点都必须被分配一个唯一 ID。每个节点的 ID 必须在 myid 文件中配置,并存储在 dataDir 文件夹中,如 /var/lib/zookeeper/myid 文件应当仅包含一个将写入 ID 用作文本的一行。ID 可以是从 1 到 255 的任何整数。您必须在每个集群节点上手动创建此文件。使用此文件,每个 ZooKeeper 实例将使用配置文件中的相应 server. 行的配置来配置其监听程序。它还将使用所有其他 server. 行来识别其他群集成员。

在上例中,有三个节点,因此每个节点都有一个不同的 myid,值分别为 123

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.