ZooKeeper部署分单机、伪集群、真集群三种模式:单机用于开发测试,三步启动(配JDK、改zoo.cfg、启服务);伪集群在一台机器跑三个节点模拟高可用;真集群需≥3台奇数节点,注意主机名解析、端口开放与myid一致性。

Zookeeper 服务器搭建与配置,核心在于明确部署目标:单机用于开发测试,伪集群用于验证高可用逻辑,真集群用于生产环境。实际操作中,90% 的入门和调试需求都落在单机或伪集群上,真正需要跨机器部署集群的场景相对较少。
单机模式:三步快速启动
适合本地开发、CI 测试、功能验证。
-
确认 Java 环境:ZooKeeper 依赖 JDK 8 或 11(推荐 OpenJDK 11),运行
java -version验证;若未安装,先配置JAVA_HOME并加入PATH。 -
下载解压并初始化配置:从 Apache 官网 下载稳定版(如 3.8.1 或 3.9.3),解压后进入
conf/目录,将zoo_sample.cfg复制为zoo.cfg;编辑该文件,至少设置三项:-
tickTime=2000(心跳周期,毫秒) -
dataDir=/var/lib/zookeeper(需提前创建目录并确保写权限) -
clientPort=2181(默认端口,确认未被占用:用netstat -tulnp | grep 2181检查)
-
-
启动并验证:进入
bin/目录执行./zkServer.sh start;再运行./zkServer.sh status,看到Mode: standalone即表示成功;也可用echo stat | nc localhost 2181查看运行状态摘要。
伪集群模式:一台机器跑三个节点
用于模拟 Leader 选举、数据同步、故障转移等行为,无需多台物理机。
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
-
准备三个独立实例目录:复制三份 ZooKeeper 安装包(如
zookeeper1、zookeeper2、zookeeper3),每个目录下分别创建专属数据目录(如zkData1、zkData2、zkData3)。 -
为每个实例分配唯一 ID:在各自
zkDataX目录中创建myid文件,内容分别为1、2、3(纯数字,无空格)。 -
配置三份 zoo.cfg,差异化关键项:
- 各实例
clientPort不同(如 2181 / 2182 / 2183) -
dataDir指向各自数据目录 - 统一添加集群成员配置(所有 cfg 文件内容一致):
server.1=localhost:2888:3888server.2=localhost:2889:3889server.3=localhost:2890:3890
(其中第一个端口是 Follower 与 Leader 通信端口,第二个是选举端口,三组必须互不冲突)
- 各实例
-
依次启动并观察角色:分别执行
./zkServer.sh start zoo1.cfg./zkServer.sh start zoo2.cfg./zkServer.sh start zoo3.cfg
再用./zkServer.sh status -c zoo1.cfg等命令查看每个实例状态,通常一个为leader,其余为follower。
真集群注意事项(非必需但需知)
生产环境必须部署 ≥3 台奇数节点(推荐 3 或 5 台),避免脑裂。
- 每台机器的
/etc/hosts中需统一名字解析(如192.168.1.10 zk1),zoo.cfg中的server.x使用主机名而非 IP,增强可维护性。 -
myid文件值必须与server.x中的x严格对应,且每台机器只能有一个。 - 务必关闭防火墙或放行
clientPort(对外)、2888(Follower 同步)、3888(Leader 选举)三个端口。 - 建议启用自动清理策略,在
zoo.cfg中添加:autopurge.snapRetainCount=3autopurge.purgeInterval=24
配置本身不复杂,但细节容易忽略——比如 dataDir 权限、myid 文件内容格式、端口冲突、主机名解析失败,这些是启动失败最常见的原因。


















