Zookeeper集群部署协调服务

为什么要用 Zookeeper 集群部署协调服务?

在分布式系统里,多个服务之间需要协调行为,比如配置文件同步、服务发现、选主等。Zookeeper 就是专门干这个事的协调服务,而集群模式能保证单点故障下依然稳定运行。
下面我会带着你从零开始在 3 台 Linux 服务器上部署一个可用的 Zookeeper 集群。

搭建前的环境和配置清单

  • 三台服务器(虚拟机或云主机均可),IP 假设为:192.168.1.10192.168.1.11192.168.1.12
  • Java 8 或 11:Zookeeper 依赖 JVM,检查方式 java -version
  • 放行端口:Zookeeper 默认使用 2181(客户端连接),2888(集群内部通讯),3888(选举通讯)。请在防火墙或安全组中打开这三个端口。

三步完成 Zookeeper 集群部署

1. 下载并解压

三台服务器都执行以下命令(以 /opt 目录为例):

cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz
mv apache-zookeeper-3.8.4-bin zookeeper

2. 修改配置文件

每台机器上都要编辑 conf/zoo.cfg(先复制模板):

cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg

用 vim 打开 conf/zoo.cfg,修改或添加以下内容(重点关注最后的 server 配置):

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
clientPort=2181
server.1=192.168.1.10:2888:3888
server.2=192.168.1.11:2888:3888
server.3=192.168.1.12:2888:3888
注意dataDir 目录需要自己创建:mkdir -p /opt/zookeeper/data

3. 创建 myid 文件

在每台服务器的 dataDir 目录下创建 myid 文件,里面只写一个数字(对应上面 server 后面的序号):

  • 192.168.1.10 上执行:
  echo "1" > /opt/zookeeper/data/myid
  • 192.168.1.11 上执行:
  echo "2" > /opt/zookeeper/data/myid
  • 192.168.1.12 上执行:
  echo "3" > /opt/zookeeper/data/myid

4. 启动集群

按顺序启动:先在三台机器上分别启动 Zookeeper:

/opt/zookeeper/bin/zkServer.sh start

启动后查看状态:

/opt/zookeeper/bin/zkServer.sh status

正常会看到其中一台是 Mode: leader,另外两台是 Mode: follower

避坑指南:最容易翻车的几个点

  • 端口没放行:如果无法选举或节点之间连不上,先检查 218128883888 是否在防火墙开放。临时关闭防火墙测试:systemctl stop firewalld(仅测试)。
  • myid 数字冲突:每个节点的 myid 必须不同,且对应 zoo.cfg 里的 server.X。
  • JAVA_HOME 未设置:执行 zkServer.sh 报错时,运行 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk 或写入 /etc/profile
  • dataDir 权限:保证 dataDir 目录可写,否则启动报错。

如何验证 Zookeeper 集群协调服务已正常运行

  1. 客户端连接测试:任意一台机器上执行 zkCli.sh -server 192.168.1.10:2181,进入交互界面后输入 ls / 看到 [zookeeper] 说明连接成功。
  2. 选举稳定性:手动停掉 leader 节点(执行 zkServer.sh stop),剩下两台会重新选举,此时观察 status 应能快速选出新 leader。
  3. 写入与同步:在客户端创建一个临时节点,比如 create /testnode test,然后换一台客户端连接另一个 follower ,执行 get /testnode 应该能读到相同数据。

如果你正在处理 Zookeeper集群部署协调服务,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
部署完成后,你就能得到一个高可用的分布式协调基础单元,后续可以配合 Kafka、Dubbo 等中间件一起使用。

分享到:
上一篇
Harbor私有镜像仓库高可用搭建指南:零基础实现双节点容灾
下一篇
etcd分布式存储配置使用教程:从单机到集群完整步骤
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意