Zookeeper 集群配置教程(Linux通用版)
Zookeeper 集群是由多个节点组成的分布式协调服务,采用主从架构(Leader-Follower)实现高可用。集群通过 ZAB 一致性协议保证数据强一致性,所有写操作由 Leader 节点协调并同步到 Follower 节点。其典型部署包含奇数个节点(如3/5台服务器),采用投票机制实现故障容错,当半数以上节点存活时集群即可继续提供服务。Zookeeper集群提供分布式锁、配置维护、命名服务等核心功能,广泛应用于Hadoop、Kafka等分布式系统的协调管理。
以下是 Linux 环境下 Zookeeper 集群配置教程。
一、准备操作
1. 请准备 3 台虚拟机,如需快速克隆并配置虚拟机相关设置,请点击右侧链接查看教程:点我查看
说明:这里我的 3 台主机信息如下,具体情况以你们的为准:
主机名称 IP地址 操作系统 说明 debian100 192.168.40.100 Debian 这台主机包含了parallel-execute命令,可以在三台主机同时执行一条命令 debian101 192.168.40.101 Debian debian102 192.168.40.102 Debian
2. 请确保每一台虚拟机上已经安装了 Zookeeper,需要安装的小伙伴请点击右侧链接查看安装教程:点我查看
二、配置 Zookeeper 集群信息
说明:这部分内容无特殊说明外,都是在 debian100 主机上配置的。
1. 切换到 Zookeeper 数据存储目录下,这里我的数据存储目录是 /usr/local/zookeeper-3.8.4/data
:
1 |
|
2. 在此目录下创建一个 myid
文件,里面存储每一个存储 Zookeeper 节点的编号:
1 |
|
说明:
- 编号必须是整数;
- 三台虚拟机的节点编号互不相同;
- 文件中只能存储数字,不要存储任何无关的字符;
这里是我配置的 myid
情况:
虚拟机名称 | myid |
---|---|
debian100 | 1 |
debian101 | 2 |
debian102 | 3 |
3. 保存完成后,编辑 Zookeeper 配置文件 zoo.cfg:
1 |
|
4. 在配置文件后面新增如下内容:
1 |
|
关于
server.A=B:C:D
的说明:上述内容符合
server.A=B:C:D
的格式,其中:
- A 代表每一个 Zookeeper 的 myid;
- B 代表每一台虚拟机的 IP 地址,这里我修改了
/etc/hosts
文件,使用 hostname 代替 IP 地址- C 代表 Zookeeper Follower 与集群中的 Leader 服务器交换信息的端口;
- D 代表万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
5. 将上一步修改好的配置内容粘贴到每一个 zoo.cfg 文件中,效果图如下:
6. 保存完成。将 myid 依次分发到 debian101 和 debian102 上:
1 |
|
注意:分发完成后,一定要到对应的主机下修改 myid 文件,确保三台主机的 myid 互不相同且为整数!
7. 将配置文件 zoo.cfg 依次分发到 debian101 和 debian102 上:
1 |
|
8. 开放 2181、2888、3888 号端口,保证集群各个节点可以相互访问:
说明:parallel-execute 命令脚本请点击右侧链接查看:点我查看
- CentOS
1 |
|
- Ubuntu/Debian
1 |
|
三、Zookeeper集群启动与停止
1. 依次启动每一台 Zookeeper:
1 |
|
2. 查看每一台 Zookeeper 启动状态,执行如下命令:
1 |
|
这里 debian101 是 leader,其他的是 follower(具体那台机器是 leader 请以你们的为准):
debian100 | debian101 | debian102 |
---|---|---|
![]() |
![]() |
![]() |
至此,Zookeeper 集群启动成功!
3. 如需停止当前集群,请执行如下命令:
1 |
|