ZooKeeper 安装部署完全指南

张开发
2026/4/19 8:43:16 15 分钟阅读

分享文章

ZooKeeper 安装部署完全指南
ZooKeeper 安装部署完全指南单机伪集群生产集群本文从零搭建 ZooKeeper覆盖单机模式、伪集群模式、生产高可用集群附带命令、配置、常见问题与运维速查新手/面试/生产都能用。前言ZooKeeper 是分布式系统必备协调服务本文基于 ZooKeeper 3.8支持 CentOS7、Ubuntu、macOS、WSL。一、单机模式Standalone适用开发、学习、测试特点单节点无高可用1. 前置条件• JDK 1.8• 关闭防火墙/放行 2181 端口2. 下载解压wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gztar -xzvf apache-zookeeper-3.8.3-bin.tar.gz -C /opt/mv /opt/apache-zookeeper-3.8.3-bin /opt/zookeepercd /opt/zookeeper3. 配置文件cp conf/zoo_sample.cfg conf/zoo.cfgvim conf/zoo.cfg核心配置tickTime2000dataDir/var/lib/zookeeperclientPort2181initLimit10syncLimit5admin.enableServerfalse4. 创建数据目录与 myidmkdir -p /var/lib/zookeeperecho 1 /var/lib/zookeeper/myid5. 启动与验证bin/zkServer.sh startbin/zkServer.sh statusbin/zkCli.sh -server localhost:2181二、伪集群模式Pseudo-cluster适用单机模拟集群、学习选举原理一台机器启 3 个实例不同端口区分1. 复制 3 份程序cd /optcp -r zookeeper zookeeper-1cp -r zookeeper zookeeper-2cp -r zookeeper zookeeper-32. 配置 zoo.cfg3 个节点分别配置zookeeper-1tickTime2000initLimit10syncLimit5dataDir/opt/zookeeper-1/dataclientPort2181server.1127.0.0.1:2888:3888server.2127.0.0.1:2889:3889server.3127.0.0.1:2890:3890• zookeeper-2clientPort2182dataDir/opt/zookeeper-2/data• zookeeper-3clientPort2183dataDir/opt/zookeeper-3/data3. 配置 myidecho 1 /opt/zookeeper-1/data/myidecho 2 /opt/zookeeper-2/data/myidecho 3 /opt/zookeeper-3/data/myid4. 启动并查看状态/opt/zookeeper-1/bin/zkServer.sh start/opt/zookeeper-2/bin/zkServer.sh start/opt/zookeeper-3/bin/zkServer.sh start# 查看状态/opt/zookeeper-1/bin/zkServer.sh status预期1 个 Leader2 个 Follower三、生产集群模式Production Cluster要求3 台独立机器奇数台示例节点• 192.168.1.101myid1• 192.168.1.102myid2• 192.168.1.103myid31. 每台机器安装 ZooKeeperwget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gztar -xzvf apache-zookeeper-3.8.3-bin.tar.gz -C /opt/mv /opt/apache-zookeeper-3.8.3-bin /opt/zookeeper2. 配置 zoo.cfg3 台完全一致cp conf/zoo_sample.cfg conf/zoo.cfgvim conf/zoo.cfgtickTime2000initLimit10syncLimit5dataDir/data/zookeeperclientPort2181server.1192.168.1.101:2888:3888server.2192.168.1.102:2888:3888server.3192.168.1.103:2888:38883. 配置 myid每台不同# 101mkdir -p /data/zookeeperecho 1 /data/zookeeper/myid# 102echo 2 /data/zookeeper/myid# 103echo 3 /data/zookeeper/myid4. 启动集群bin/zkServer.sh startbin/zkServer.sh status5. 验证集群zkCli.sh -server 192.168.1.101:2181create /test hello cluster在其他节点连接可读到相同数据。四、Docker 快速部署可选单节点docker run -d --name zk -p 2181:2181 zookeeper:3.8.3Compose 三节点集群version: 3services:zoo1:image: zookeeper:3.8.3environment:ZOO_MY_ID: 1ZOO_SERVERS: server.10.0.0.0:2888:3888;2181 server.2zoo2:2888:3888;2181 server.3zoo3:2888:3888;2181zoo2:image: zookeeper:3.8.3environment:ZOO_MY_ID: 2ZOO_SERVERS: server.1zoo1:2888:3888;2181 server.20.0.0.0:2888:3888;2181 server.3zoo3:2888:3888;2181zoo3:image: zookeeper:3.8.3environment:ZOO_MY_ID: 3ZOO_SERVERS: server.1zoo1:2888:3888;2181 server.2zoo2:2888:3888;2181 server.30.0.0.0:2888:3888;2181五、ZooKeeper 常用运维命令zkServer.sh start # 启动zkServer.sh stop # 停止zkServer.sh restart # 重启zkServer.sh status # 状态zkServer.sh start-foreground # 前台调试zkCli.sh -server ip:2181 # 客户端连接六、常见问题1. 端口被占用修改 clientPort2. 启动报错检查 myid、目录权限、防火墙3. 集群选不出主节点互通、配置一致、myid 正确4. admin端口冲突加 admin.enableServerfalse七、总结• 学习用单机/伪集群• 生产用3 节点奇数集群• 核心配置zoo.cfg myid• 核心端口2181(客户端)、2888(通信)、3888(选举)CSDN 发布信息直接复制

更多文章