适用环境 :CentOS / Ubuntu / 其他 Linux 发行版
用途:开发测试、学习 Zookeeper 基础使用
✅ 前提条件
- 以 root 用户运行(或具有 sudo 权限)
- 已安装完整 JDK (非 JRE),并正确配置
JAVA_HOME环境变量- 需包含
java和jps命令(通常 JDK 才有jps)
- 需包含
你可以通过以下命令验证:
bash
echo $JAVA_HOME
$JAVA_HOME/bin/java -version
$JAVA_HOME/bin/jps -V
📥 自动安装脚本(支持断点续装)
将以下脚本保存为 install_zookeeper.sh,然后执行:
bash
#!/bin/bash
# 自动安装单节点 Zookeeper
set -e
ZOOKEEPER_VERSION="3.8.5"
ZOOKEEPER_INSTALL_DIR="/opt/zookeeper"
echo "=== Zookeeper $ZOOKEEPER_VERSION 自动安装脚本 ==="
# 检查是否为 root 用户
if [ "$EUID" -ne 0 ]; then
echo "❌ 请以 root 用户运行此脚本。"
exit 1
fi
# 检查 JAVA_HOME 是否设置
if [ -z "$JAVA_HOME" ]; then
echo "❌ JAVA_HOME 未设置,请先设置完整 JDK 的 JAVA_HOME"
exit 1
fi
# 检查 bin 目录下是否有 java 和 jps
if [ ! -x "$JAVA_HOME/bin/java" ] || [ ! -x "$JAVA_HOME/bin/jps" ]; then
echo "❌ JAVA_HOME 指向的目录不完整,缺少 java 或 jps,请使用完整 JDK"
exit 1
fi
# 安装依赖(如 wget 未安装)
which wget >/dev/null || { echo "正在安装 wget..."; apt-get update && apt-get install -y wget || yum install -y wget; }
# 下载 Zookeeper 包(如不存在)
if [ ! -f "/tmp/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz" ]; then
echo ">>> 下载 Zookeeper $ZOOKEEPER_VERSION..."
wget -q https://downloads.apache.org/zookeeper/zookeeper-$ZOOKEEPER_VERSION/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz -P /tmp
else
echo ">>> 已存在 /tmp/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz,跳过下载。"
fi
# 检查是否已安装 Zookeeper
if [ -d "$ZOOKEEPER_INSTALL_DIR" ] || [ -d "/opt/apache-zookeeper-$ZOOKEEPER_VERSION-bin" ]; then
echo ">>> 检测到 Zookeeper 目录已存在,跳过解压步骤。"
else
echo ">>> 解压 Zookeeper..."
tar -zxf /tmp/apache-zookeeper-$ZOOKEEPER_VERSION-bin.tar.gz -C /opt/
mv -f /opt/apache-zookeeper-$ZOOKEEPER_VERSION-bin $ZOOKEEPER_INSTALL_DIR
fi
# 创建数据目录
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; then
echo ">>> 写入 /etc/profile 环境变量..."
cat >> /etc/profile <<EOF
# Zookeeper 环境变量
export ZOOKEEPER_HOME=$ZOOKEEPER_INSTALL_DIR
export PATH=\$PATH:\$ZOOKEEPER_HOME/bin
EOF
fi
# 加载环境变量
source /etc/profile
# 测试 Zookeeper 可用性
echo ">>> 验证 Zookeeper 安装..."
if [ -x "$ZOOKEEPER_INSTALL_DIR/bin/zkServer.sh" ]; then
echo "✅ Zookeeper 安装成功!"
echo "💡 启动命令:zkServer.sh start"
echo "💡 查看状态:zkServer.sh status"
echo "💡 停止命令:zkServer.sh stop"
$ZOOKEEPER_INSTALL_DIR/bin/zkServer.sh status || true
else
echo "⚠️ Zookeeper 安装完成,但未找到启动脚本,请检查目录 $ZOOKEEPER_INSTALL_DIR/bin"
fi
echo "=== Zookeeper $ZOOKEEPER_VERSION 安装完成 ==="
▶️ 使用方法
bash
chmod +x install_zookeeper.sh
./install_zookeeper.sh
💡 脚本特点:
- 自动跳过已下载的安装包
- 若已安装则跳过解压
- 自动创建
myid文件(单节点必须!)- 自动配置
zoo.cfg- 自动写入全局环境变量
🔧 启动与验证
安装完成后,你可以直接使用以下命令:
bash
# 启动
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。
📚 参考资料
👍 觉得有用?欢迎点赞、收藏、关注!
如有疑问,欢迎在评论区留言交流~