linux部署zookeeper集群需三台奇数节点,统一jdk环境、配置zoo.cfg中server.x参数及唯一myid文件,开放2181/2888/3888端口,启动后可自动选主并保证强一致性。

在 Linux 上安装配置 ZooKeeper 集群,核心是三台(或奇数台)机器协同工作,通过 ZAB 协议实现强一致性和自动选主。整个过程不复杂但容易忽略细节,关键在于环境统一、配置对齐、端口畅通和标识唯一。
准备环境:JDK + 主机网络 + 防火墙
ZooKeeper 是 Java 应用,必须先装好 JDK。推荐 OpenJDK 8 或 11(ZooKeeper 3.8.x/3.9.x 官方支持稳定):
- 检查:
java -version,若提示未找到,需先安装并设置JAVA_HOME - CentOS/RHEL:
yum install -y java-1.8.0-openjdk-devel - Ubuntu/Debian:
sudo apt install -y openjdk-11-jdk - 确认
JAVA_HOME路径:readlink -f $(which java) | sed "s:/jre/bin/java::",然后写入/etc/profile并source - 三台机器互相能 ping 通,
/etc/hosts中配好主机名映射(如192.168.1.101 zk1) - 开放三个端口:
2181(客户端连接)、2888(Leader-Follower 同步)、3888(选举通信)
例如:firewall-cmd --permanent --add-port={2181,2888,3888}/tcp && firewall-cmd --reload
部署 ZooKeeper 包并统一目录结构
所有节点执行相同操作,保持路径一致可减少出错:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 下载带
-bin的发行版(如apache-zookeeper-3.8.0-bin.tar.gz),官网 stable 镜像站即可 - 解压到统一位置,例如:
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /opt/ - 重命名便于管理:
mv /opt/apache-zookeeper-3.8.0-bin /opt/zookeeper - 创建数据与日志目录(不要用
/tmp):mkdir -p /data/zookeeper/data /data/zookeeper/logs - 配置环境变量:
export ZOOKEEPER_HOME=/opt/zookeeper,加入/etc/profile并生效
配置 zoo.cfg:集群参数+本地标识
进入 /opt/zookeeper/conf,复制模板:cp zoo_sample.cfg zoo.cfg,再编辑:
- 基础项(所有节点相同):
tickTime=2000initLimit=10syncLimit=5dataDir=/data/zookeeper/datadataLogDir=/data/zookeeper/logsclientPort=2181 - 集群项(所有节点内容完全一样):
server.1=zk1:2888:3888server.2=zk2:2888:3888server.3=zk3:2888:3888
注意:这里的zk1等必须和/etc/hosts中定义的一致 - 每台机器单独创建
myid文件:
在/data/zookeeper/data/myid中只写一行数字,对应自己在server.x中的编号(zk1 写1,zk2 写2,以此类推)
启动验证与简单运维
每台机器分别启动,并检查状态:
- 启动:
$ZOOKEEPER_HOME/bin/zkServer.sh start - 查状态:
$ZOOKEEPER_HOME/bin/zkServer.sh status—— 应显示leader或follower - 连进去测试:
$ZOOKEEPER_HOME/bin/zkCli.sh -server zk1:2181,输入ls /看是否返回[zookeeper] - 模拟故障:停掉 leader,观察是否自动选出新 leader(约 10 秒内完成)
- 日志查看:
tail -f /data/zookeeper/logs/zookeeper-*.out










