一键安装单节点 Zookeeper 3.8.5(附完整 Bash 脚本)

适用环境 :CentOS / Ubuntu / 其他 Linux 发行版
用途:开发测试、学习 Zookeeper 基础使用


✅ 前提条件

  1. 以 root 用户运行(或具有 sudo 权限)
  2. 已安装完整 JDK (非 JRE),并正确配置 JAVA_HOME 环境变量
    • 需包含 javajps 命令(通常 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

📚 参考资料


👍 觉得有用?欢迎点赞、收藏、关注!

如有疑问,欢迎在评论区留言交流~

相关推荐
wzq11_66615 小时前
HDFS集群的高可用集群一遍过!!!
运维·debian
苦猿的大模型日记19 小时前
Day51|从0学习Claude Code(一):一个while循环加一个Bash,复刻Claude Code的心脏
人工智能·学习·bash
qetfw2 天前
Debian Samba 与 OpenLDAP 统一认证配置
linux·debian
超龄超能程序猿2 天前
实战优化:.NET 8 容器 Debian 源+时间同步企业级 Dockerfile
运维·debian·.net
Sayai3 天前
Kafka 集群开启 SASL 认证实战(二):外置 ZooKeeper 之 kafka 与 zk 间认证
分布式·zookeeper·kafka
Sayai3 天前
Kafka 集群开启 SASL 认证实战(一):内置 ZooKeeper 场景,JAAS 配置全流程
分布式·zookeeper·kafka
Sayai3 天前
Kafka 集群开启 SASL 认证实战(三):外置 ZooKeeper 完整版,quorum 认证 + ACL 访问控制
zookeeper·kafka·linq
qetfw4 天前
Debian OpenLDAP 目录服务配置:DN、LDIF、ldapsearch 与认证验证
linux·运维·debian
深念Y5 天前
OnlyOffice 打开来自 Windows/WPS 的 Office 文档时,出现排版错乱、文字空白、字体显示异常。
linux·windows·debian·onlyoffice·字体·wps·office
RisunJan5 天前
Linux命令-wait(Bash 内建 —— 等待后台进程完成)
linux·chrome·bash