3.2. zookeeper 集群配置
在大多数生产环境中,我们建议您部署复制的 ZooKeeper 实例集群。对于运行可靠的 ZooKeeper 服务而言,稳定且高度可用的 ZooKeeper 集群非常重要。zookeeper 集群也称为 ensemble s。
zookeeper 集群通常由奇数节点组成。zookeeper 需要集群中的大多数节点都已启动并运行。例如:
- 在具有三个节点的群集中,至少有两个节点必须已启动并在运行。这意味着它可以容忍一个节点停机。
- 在由五个节点组成的群集中,必须至少有三个节点可用。这意味着它可以容忍两个节点停机。
- 在一个由 7 个节点组成的集群中,必须至少有四个节点可用。这意味着它可以容忍三个节点停机。
在 ZooKeeper 集群中拥有更多节点可提高整个集群的弹性和可靠性。
zookeeper 可以在具有偶数节点的集群中运行。但是,额外的节点不会增加集群的弹性。具有四个节点的群集要求至少三个节点可用,并且只能容忍一个节点停机。因此,它与只有三个节点的集群具有完全相同的弹性。
理想情况下,不同的 ZooKeeper 节点应位于不同的数据中心或网络段内。增加 ZooKeeper 节点的数量会增加群集同步所花费的工作负载。在大多数 Kafka 用例中,带有 3、5 或 7 节点的 ZooKeeper 集群应该足够了。
具有 3 个节点的 ZooKeeper 集群只能容忍 1 个不可用的节点。这意味着,如果在另一个节点上维护时集群节点崩溃,ZooKeeper 集群将无法使用。
复制 ZooKeeper 配置支持独立配置支持的所有配置选项。为集群配置添加了附加选项:
initLimit
-
允许跟随者连接并同步集群领导器的时间。时间被指定为多个勾号(更多详情请参阅
timeTick
选项 )。 syncLimit
-
追随者在领导后面的时间。时间被指定为多个勾号(更多详情请参阅
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
,其值分别为 1
、2
和 3
。