目录
1.1、概述
对于ZooKeeper的集群来说,有两种情况:生产集群和伪集群。伪集群本质上还是集群,只不过是部署在了一台主机,其他功能完全一样。更多关于生产集群和伪集群的描述请参考Zookeeper单机版安装部署文章中的概述部分,这里不在赘述。
1.2、系统环境
ZooKeeper服务器是用Java创建的,运行在JVM之上。需要安装JDK7以上版本(最好JDK8或以上)。如果服务器上没有JDK环境请自行安装,这里不在赘述。具体系统环境如下:
| 环境名称 | 版本号 |
|---|---|
| 操作系统 | CentOS Linux release 8.4.2105 |
| JDK | 17.0.7 |
| ZooKeeper | 3.8.4 |
1.3、集群规划
本次安装部署将采用3台服务器搭建一个ZooKeeper生产集群,服务器列表如下:
| 服务器ip | 通信端口 | 心跳端口 | 选举端口 | 数据日志服务目录 | myid |
|---|---|---|---|---|---|
| 172.16.20.5 | 2181 | 2888 | 3888 | /data/zookeeper/{data,logs} | 1 |
| 172.16.20.6 | 2181 | 2888 | 3888 | /data/zookeeper/{data,logs} | 2 |
| 172.16.20.7 | 2181 | 2888 | 3888 | /data/zookeeper/{data,logs} | 3 |
确保三台服务器之间的网络和端口是可以相互通信的而且2181、2888、3888端口没有被其他进程占用。
1.4、部署流程
本文将在三台操作系统为CentOS Linux release 8.4.2105、Java环境为JDK17.0.7的服务器上部署ZooKeeper3.8.4版本的生产集群,具体流程如下:
1.4.1、每台服务器上部署ZooKeeper
这一部分请参考Zookeeper单机版安装部署这篇博文,这里不在赘述。
1.4.2、设置myid
按照集群规划中每台服务器上ZooKeeper的myid设置集群中各个ZooKeeper的myid,具体如下:
- 设置172.16.20.5服务器上上ZooKeeper的myid
通过在对应服务器上执行命令向ZooKeeper的数据目录中创建一个myid文件,并将1写入到文件中。示例命令如下:
echo 1 >/data/zookeeper/data/myid
创建成功后会在对应的数据目录中生成一个myid文件,具体如下:

- 设置172.16.20.6服务器上上ZooKeeper的myid
- 通过在对应服务器上执行命令向ZooKeeper的数据目录中创建一个myid文件,并将1写入到文件中。示例命令如下:
echo 2 >/data/zookeeper/data/myid
创建成功后会在对应的数据目录中生成一个myid文件,具体如下:

- 设置172.16.20.7服务器上上ZooKeeper的myid
通过在对应服务器上执行命令向ZooKeeper的数据目录中创建一个myid文件,并将1写入到文件中。示例命令如下:
echo 3 >/data/zookeeper/data/myid
创建成功后会在对应的数据目录中生成一个myid文件,具体如下:

1.4.3、修改zoo.cfg配置文件
按照集群规划中服务器列表,修改每台服务器上ZooKeeper的zoo.cfg配置文件,只需要在配置文件的末尾新增集群列表即可,修改成功后的配置文件如下:

2888端口是心跳端口,3888端口是选举端口。
1.4.4、启动ZooKeeper服务
按照集群规划中服务器列表,在每台服务器上进入 apache-zookeeper-3.8.4-bin/bin 目录,执行 ./zkServer.sh start 命令启动 Zookeeper服务,启动成功后的效果如下:

1.4.5、检查ZooKeeper服务状态
按照集群规划中服务器列表,在每台服务器上进入 apache-zookeeper-3.8.4-bin/bin 目录,执行 ./zkServer.sh status 命令查看 Zookeeper服务状态,172.16.20.5服务器的效果如下:

172.16.20.6服务器的效果如下:

172.16.20.7服务器的效果如下:

从上述截图中可以看出172.16.20.6服务器上的ZooKeeper的角色是leader,172.16.20.5服务器和172.16.20.7服务器上的ZooKeeper的角色是follower。
1.4.6、客户端连接
可以使用任意一台服务器的客户端连接到多个服务端,其命令如下:
./zkCli.sh -server 172.16.20.5:2181,172.16.20.6:2181,172.16.20.7:2181
同时连接多个服务端节点的时候,彼此间使用逗号隔开。
连接成功后如下所示:

636

被折叠的 条评论
为什么被折叠?



