当前位置: 首页 > news >正文

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.gz
tar -xzvf apache-zookeeper-3.8.3-bin.tar.gz -C /opt/
mv /opt/apache-zookeeper-3.8.3-bin /opt/zookeeper
cd /opt/zookeeper
3. 配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg
vim conf/zoo.cfg
核心配置
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=10
syncLimit=5
admin.enableServer=false
4. 创建数据目录与 myid
mkdir -p /var/lib/zookeeper
echo "1" > /var/lib/zookeeper/myid
5. 启动与验证
bin/zkServer.sh start
bin/zkServer.sh status
bin/zkCli.sh -server localhost:2181
二、伪集群模式(Pseudo-cluster)

适用:单机模拟集群、学习选举
原理:一台机器启 3 个实例,不同端口区分

1. 复制 3 份程序
cd /opt
cp -r zookeeper zookeeper-1
cp -r zookeeper zookeeper-2
cp -r zookeeper zookeeper-3
2. 配置 zoo.cfg(3 个节点分别配置)

zookeeper-1
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper-1/data
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
• zookeeper-2:clientPort=2182,dataDir=/opt/zookeeper-2/data

• zookeeper-3:clientPort=2183,dataDir=/opt/zookeeper-3/data

3. 配置 myid
echo 1 > /opt/zookeeper-1/data/myid
echo 2 > /opt/zookeeper-2/data/myid
echo 3 > /opt/zookeeper-3/data/myid
4. 启动并查看状态
/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 个 Leader,2 个 Follower
三、生产集群模式(Production Cluster)

要求:3 台独立机器(奇数台)
示例节点

• 192.168.1.101(myid=1)

• 192.168.1.102(myid=2)

• 192.168.1.103(myid=3)

1. 每台机器安装 ZooKeeper
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz
tar -xzvf apache-zookeeper-3.8.3-bin.tar.gz -C /opt/
mv /opt/apache-zookeeper-3.8.3-bin /opt/zookeeper
2. 配置 zoo.cfg(3 台完全一致)
cp conf/zoo_sample.cfg conf/zoo.cfg
vim conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181

server.1=192.168.1.101:2888:3888
server.2=192.168.1.102:2888:3888
server.3=192.168.1.103:2888:3888
3. 配置 myid(每台不同)
# 101
mkdir -p /data/zookeeper
echo "1" > /data/zookeeper/myid

# 102
echo "2" > /data/zookeeper/myid

# 103
echo "3" > /data/zookeeper/myid
4. 启动集群
bin/zkServer.sh start
bin/zkServer.sh status
5. 验证集群
zkCli.sh -server 192.168.1.101:2181
create /test "hello cluster"
在其他节点连接可读到相同数据。
四、Docker 快速部署(可选)

单节点
docker run -d --name zk -p 2181:2181 zookeeper:3.8.3
Compose 三节点集群
version: '3'
services:
zoo1:
image: zookeeper:3.8.3
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper:3.8.3
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper:3.8.3
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.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. 端口被占用:修改 clientPort

2. 启动报错:检查 myid、目录权限、防火墙

3. 集群选不出主:节点互通、配置一致、myid 正确

4. admin端口冲突:加 admin.enableServer=false
七、总结

• 学习用:单机/伪集群

• 生产用:3+ 节点奇数集群

• 核心配置:zoo.cfg + myid

• 核心端口:2181(客户端)、2888(通信)、3888(选举)
CSDN 发布信息(直接复制)

http://www.jsqmd.com/news/617732/

相关文章:

  • EcomGPT-7B商品描述生成评测:人工vsAI对比
  • 开放式耳机什么牌子好用又实惠?盘点2026年开放式耳机品牌排行榜前十名
  • 当产线不再停机:TVA“无代码微调”拯救现场宕机危机
  • 强力窗口控制工具WindowResizer:三招解决Windows窗口尺寸限制难题
  • 【接口自动化】Request学习笔记
  • STIX Two字体:学术文档跨平台一致性的终极解决方案
  • 春秋云境CVE-2017-3248
  • 如何用OpenFace实现AI面部行为分析的5大核心功能?
  • 英雄联盟换肤工具R3nzSkin完全指南:如何安全使用与彻底清理
  • 做自媒体一年,我靠这3个方法解决了“选题荒”
  • 如何高效使用Venera:5个专业技巧打造你的终极漫画阅读体验
  • 小批量多品种”的生死局:TVA如何将换线成本压缩至小时级?
  • 如何用OpenHRMS人力资源管理系统实现企业数字化转型:完整指南与最佳实践
  • 从无人机到扫地机器人:拆解IMU和GPS数据融合的5个真实应用场景与选型建议
  • 电子元件常用粘合剂类型、特性与适用场景详解
  • 贵州最推荐的贵州避暑景区打卡地有哪些?2026年贵阳安顺等地区市场选择前五排名 - 十大品牌榜
  • RAG 实战:数据处理没做好,再强的模型也是“巧妇难为无米之炊“
  • DeepSeek-OCR-WEBUI应用实战:发票识别自动化处理方案
  • 第15届蓝桥杯省赛Python研究生组-D限流器
  • 5个智能功能让原神游戏体验效率倍增:BetterGI自动化助手深度解析
  • 从DiffDock到SurfDock:几何扩散模型如何一步步革新分子对接?聊聊安装与实战避坑
  • Vue 3 自定义 Hooks 的 5 个最佳实践,让你的代码更健壮
  • Qwen Pixel Art效果展示:支持‘CRT curvature’, ‘scanline opacity’, ‘halation’模拟
  • 2024最新版:Python3环境下sqlmap安装避坑指南(附快捷启动配置)
  • 【C语言】C语言入门教程 | 15章C语言基础知识自学快速入门 - xiema
  • 漫画下载终极指南:8大网站全覆盖,一键保存离线阅读
  • Windows系统-应用问题全面剖析Ⅵ:德承工控机MD-3000在Windows操作系统下[卡顿/死机]的排查与解决方法
  • 小程序核心语法:数据绑定与文本渲染基础实战
  • OpenHarmony平台FFmpeg交叉编译实战:从源码到集成全流程解析
  • Qwen3-Reranker-0.6B应用场景:AI芯片技术文档语义检索与优先级排序