ZooKeeper 集群部署

本文基于 JDK 1.8 与 zookeeper-3.4.8,在三个节点 192.168.1.220/221/222 上部署 ZooKeeper 集群,并完成 Leader/Follower 选举验证与容灾测试。

一、需要安装的软件包

基础软件安装包已提供:

  1. jdk-1.8.0
  2. zookeeper-3.4.8

二、主机环境

IP 地址 主机名 myid
192.168.1.220 server-node1 1
192.168.1.221 server-node2 2
192.168.1.222 server-node3 3

三、系统环境设置

以下设置在三台主机上均需执行。

1. 关闭 firewalld

systemctl stop firewalld
systemctl disable firewalld

2. 关闭 selinux

临时关闭:

setenforce 0

永久关闭:修改 /etc/sysconfig/selinux,将 SELINUX 设置为 disabled。

SELINUX=disabled

四、在三台主机上安装 JDK 环境

以 server-node1 为例:

  1. 将 jdk-1.8.0-x64 安装包上传至主机;
  2. 进入安装目录并执行安装脚本:
cd jdk-1.8.0-x64
sh jdk_install.sh
  1. 让 Java 环境变量生效:
source /etc/profile
  1. 测试安装结果(更多帮助可查看 README 文件):
java -version
echo $JAVA_HOME

将同样的安装包分别上传到 server-node2、server-node3,按照上面相同的步骤完成安装。

五、在三台主机上安装 ZooKeeper

以 server-node1 为例:

  1. 将 zookeeper-3.4.8-x64 安装包上传至主机;
  2. 进入安装目录并执行安装脚本:
cd zookeeper-3.4.8-x64
sh zookeeper_install.sh
  1. 让 ZooKeeper 系统环境变量生效:
source /etc/profile.d/zookeeper.sh
  1. 测试安装(更多帮助可查看 README 文件):
zkCli.sh

将同样的安装包分别上传到 server-node2、server-node3,按照上面相同的步骤完成安装。

六、配置 ZooKeeper 集群

1. 修改 zoo.cfg

在三台节点分别编辑配置文件 /opt/truplatform/zookeeper/conf/zoo.cfg,在文件末尾添加相同的三行内容:

server.1=192.168.1.220:2700:2800
server.2=192.168.1.221:2700:2800
server.3=192.168.1.222:2700:2800

PDF 提取文本中出现的 Q 实为冒号 :,正确写法为 server.A=B:C:D。

2. 配置项说明

server.A=B:C:D 各字段含义如下:

字段 含义
A 一个数字,表示这是第几号服务器,对应 myid 文件中的值
B 该服务器的 IP 地址
C 第一个端口,用于集群成员之间的信息交换,即该服务器与集群中 Leader 服务器交换信息所用的端口
D 第二个端口,在 Leader 挂掉时专门用于进行 Leader 选举的端口

3. 创建 myid 标识文件

在 ZooKeeper 集群模式下,还需要在 data 目录下创建 myid 标识文件。该文件中只有一个数字,即 server.A=B:C:D 中 A 的值,必须与 zoo.cfg 中的配置一致,因此每个节点的值各不相同,需要手动创建。

在 server-node1 上执行:

echo "1" > /opt/truplatform/zookeeper/data/myid

在 server-node2 上执行:

echo "2" > /opt/truplatform/zookeeper/data/myid

在 server-node3 上执行:

echo "3" > /opt/truplatform/zookeeper/data/myid

4. 重启所有节点

在每台机器上依次执行:

service zookeeper stop
service zookeeper start

5. 查看集群状态

分别在三个节点执行:

zkServer.sh status

可以观察到:server-node3 为 Leader 角色,另外两个节点为 Follower 角色,形成一主两从的角色分工,说明集群安装成功。

七、容灾测试

将 server-node3 节点上的 ZooKeeper 停止,观察集群是否会自动选举出新的 Leader。

在 server-node3 执行:

service zookeeper stop

随后在另外两个节点分别查看状态:

  • server-node1:Follower 角色;
  • server-node2:被选举为新的 Leader 角色。

在 ZooKeeper 集群中,单个 Follower 节点宕机不会影响集群使用;当 Leader 节点宕机时,集群会自动选举出新的 Leader。


至此 ZooKeeper 集群安装完毕。

文档信息

项目 内容
编写 苏俊全
版本 V1
日期 2019-03-13
邮箱 junquan.su@jwis.cn
公司 深圳杰为软件(系统)深圳有限公司
最后修改:2026 年 09 月 20 日
如果觉得我的文章对你有用,请随意赞赏