12.2. 在 ZooKeeper 集群中添加节点
在不停止整个集群的情况下,使用动态重新配置 从 ZooKeeper 集群添加节点。动态重新配置允许 ZooKeeper 更改一组组成 ZooKeeper 集群的节点成员资格,而不中断。
先决条件
-
ZooKeeper 配置文件中启用了动态重新配置(
reconfigEnabled=true)。 - 启用了 ZooKeeper 身份验证,您可以使用身份验证机制访问新的服务器。
流程
为您要添加的每个 ZooKeeper 服务器执行以下步骤,一次一个:
- 在 ZooKeeper 集群中添加服务器,如 第 4.1 节 “运行多节点 ZooKeeper 集群” 所述,然后启动 ZooKeeper。
- 请注意新服务器的 IP 地址和配置的访问端口。
为服务器启动
zookeeper-shell会话。从可以访问集群的机器中运行以下命令(如果可以访问集群,这可能是 ZooKeeper 节点或本地机器之一)。su - kafka /opt/kafka/bin/zookeeper-shell.sh <ip-address>:<zk-port>
su - kafka /opt/kafka/bin/zookeeper-shell.sh <ip-address>:<zk-port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 shell 会话中,运行 ZooKeeper 节点,输入以下行将新服务器作为投票成员添加到仲裁中:
reconfig -add server.<positive-id> = <address1>:<port1>:<port2>[:role];[<client-port-address>:]<client-port>
reconfig -add server.<positive-id> = <address1>:<port1>:<port2>[:role];[<client-port-address>:]<client-port>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
reconfig -add server.4=172.17.0.4:2888:3888:participant;172.17.0.4:2181
reconfig -add server.4=172.17.0.4:2888:3888:participant;172.17.0.4:2181Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
<positive-id>是新服务器 ID4。对于两个端口,
<port1>2888 用于 ZooKeeper 服务器之间的通信,<port2>3888 用于领导选举机制。新配置传播到 ZooKeeper 集群中的其他服务器 ; 新服务器现在是仲裁的完整成员。