适用环境:CentOS / Ubuntu / 其他 Linux 发行版
用途:开发测试、学习 Zookeeper 基础使用
✅ 前提条件
- 以 root 用户运行(或具有 sudo 权限)
- 已安装完整 JDK(非 JRE),并正确配置
JAVA_HOME环境变量- 需包含
java和jps命令(通常 JDK 才有jps)
- 需包含
你可以通过以下命令验证:
echo$JAVA_HOME$JAVA_HOME/bin/java -version$JAVA_HOME/bin/jps -V📥 自动安装脚本(支持断点续装)
将以下脚本保存为install_zookeeper.sh,然后执行:
#!/bin/bash# 自动安装单节点 Zookeeperset-eZOOKEEPER_VERSION="3.8.5"ZOOKEEPER_INSTALL_DIR="/opt/zookeeper"echo"=== Zookeeper$ZOOKEEPER_VERSION自动安装脚本 ==="# 检查是否为 root 用户if["$EUID"-ne0];thenecho"❌ 请以 root 用户运行此脚本。"exit1fi# 检查 JAVA_HOME 是否设置if[-z"$JAVA_HOME"];thenecho"❌ JAVA_HOME 未设置,请先设置完整 JDK 的 JAVA_HOME"exit1fi# 检查 bin 目录下是否有 java 和 jpsif[!-x"$JAVA_HOME/bin/java"]||[!-x"$JAVA_HOME/bin/jps"];thenecho"❌ JAVA_HOME 指向的目录不完整,缺少 java 或 jps,请使用完整 JDK"exit1fi# 安装依赖(如 wget 未安装)whichwget>/dev/null||{echo"正在安装 wget...";apt-getupdate&&apt-getinstall-ywget||yuminstall-ywget;}# 下载 Zookeeper 包(如不存在)if[!-f"/tmp/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz"];thenecho">>> 下载 Zookeeper$ZOOKEEPER_VERSION..."wget-q https://downloads.apache.org/zookeeper/zookeeper-$ZOOKEEPER_VERSION/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz -P /tmpelseecho">>> 已存在 /tmp/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz,跳过下载。"fi# 检查是否已安装 Zookeeperif[-d"$ZOOKEEPER_INSTALL_DIR"]||[-d"/opt/apache-zookeeper-$ZOOKEEPER_VERSION-bin"];thenecho">>> 检测到 Zookeeper 目录已存在,跳过解压步骤。"elseecho">>> 解压 Zookeeper..."tar-zxf /tmp/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz -C /opt/mv-f /opt/apache-zookeeper-$ZOOKEEPER_VERSION-bin$ZOOKEEPER_INSTALL_DIRfi# 创建数据目录mkdir-p$ZOOKEEPER_INSTALL_DIR/data# 创建默认单节点配置cat>$ZOOKEEPER_INSTALL_DIR/conf/zoo.cfg<<EOF tickTime=2000 dataDir=$ZOOKEEPER_INSTALL_DIR/data clientPort=2181 initLimit=5 syncLimit=2 admin.serverPort=8081 server.1=node1:2888:3888 EOF# 设置 myid(单节点必须)echo"1">$ZOOKEEPER_INSTALL_DIR/data/myid# 设置环境变量(可选但推荐)if!grep-q"ZOOKEEPER_HOME"/etc/profile;thenecho">>> 写入 /etc/profile 环境变量..."cat>>/etc/profile<<EOF # Zookeeper 环境变量 export ZOOKEEPER_HOME=$ZOOKEEPER_INSTALL_DIRexport PATH=\$PATH:\$ZOOKEEPER_HOME/bin EOFfi# 加载环境变量source/etc/profile# 测试 Zookeeper 可用性echo">>> 验证 Zookeeper 安装..."if[-x"$ZOOKEEPER_INSTALL_DIR/bin/zkServer.sh"];thenecho"✅ Zookeeper 安装成功!"echo"💡 启动命令:zkServer.sh start"echo"💡 查看状态:zkServer.sh status"echo"💡 停止命令:zkServer.sh stop"$ZOOKEEPER_INSTALL_DIR/bin/zkServer.sh status||trueelseecho"⚠️ Zookeeper 安装完成,但未找到启动脚本,请检查目录$ZOOKEEPER_INSTALL_DIR/bin"fiecho"=== Zookeeper$ZOOKEEPER_VERSION安装完成 ==="▶️ 使用方法
chmod+x install_zookeeper.sh ./install_zookeeper.sh💡 脚本特点:
- 自动跳过已下载的安装包
- 若已安装则跳过解压
- 自动创建
myid文件(单节点必须!)- 自动配置
zoo.cfg- 自动写入全局环境变量
🔧 启动与验证
安装完成后,你可以直接使用以下命令:
# 启动zkServer.sh start# 查看状态zkServer.sh status# 停止zkServer.sh stop预期输出(首次启动后):
ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Mode: standalone✅
Mode: standalone表示单节点模式运行成功!
📌 注意事项
- 单节点仅用于开发测试,生产环境请部署集群(至少 3 节点)。
- 如果防火墙开启,请放行端口:
2181(客户端)、2888/3888(集群通信,单节点可忽略)、8081(Admin Server)。 - 若需关闭 Admin Server(减少端口暴露),取消注释配置中的
#admin.enableServer=false。
📚 参考资料
- Apache Zookeeper 官网
- Zookeeper 3.8.5 Release Notes
👍 觉得有用?欢迎点赞、收藏、关注!
如有疑问,欢迎在评论区留言交流~