温馨提示×

Zookeeper依赖项Ubuntu怎么解决

小樊
35
2025-12-06 21:32:52
栏目: 智能运维

在 Ubuntu 上解决 Zookeeper 的依赖项

核心依赖与版本建议

  • Zookeeper 的唯一硬性依赖是 Java 运行环境(JRE/JDK)。在 Ubuntu 上优先使用 OpenJDK 8 或 OpenJDK 11(两者在 Zookeeper 3.5.x–3.9.x 上均被广泛验证可用)。安装完成后用 java -version 验证版本即可。

安装与验证 Java

  • 更新索引并安装 OpenJDK(二选一或并存):
    • 安装 OpenJDK 11(推荐):sudo apt update && sudo apt install -y openjdk-11-jdk
    • 安装 OpenJDK 8:sudo apt update && sudo apt install -y openjdk-8-jdk
  • 验证安装:java -version(应显示 1.811.x 的版本信息)。

安装 Zookeeper 二进制发行包

  • 选择带有 -bin 后缀的官方二进制包(避免源码包),下载并解压到目标目录(示例为 /opt):
    • 示例(3.9.1):
      wget https://downloads.apache.org/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz
      sudo tar -xzvf apache-zookeeper-3.9.1-bin.tar.gz -C /opt
      sudo ln -sfn /opt/apache-zookeeper-3.9.1-bin /opt/zookeeper  # 可选:创建软链便于升级
      
  • 设置环境变量(可选,便于全局使用 zkServer.shzkCli.sh):
    echo 'export ZOOKEEPER_HOME=/opt/zookeeper' | sudo tee -a /etc/profile.d/zookeeper.sh
    echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' | sudo tee -a /etc/profile.d/zookeeper.sh
    source /etc/profile.d/zookeeper.sh
    
  • 基本目录与配置:
    sudo mkdir -p /var/lib/zookeeper/data /var/log/zookeeper
    cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
    # 编辑 zoo.cfg,至少设置:
    #   tickTime=2000
    #   dataDir=/var/lib/zookeeper/data
    #   clientPort=2181
    
  • 启动与验证:
    $ZOOKEEPER_HOME/bin/zkServer.sh start
    $ZOOKEEPER_HOME/bin/zkServer.sh status
    ss -lntp | grep 2181    # 或 netstat -nap | grep 2181
    
    看到 2181 端口监听且状态为 leader/follower 即表示依赖已满足并运行正常。

常见依赖与故障排查

  • Java 未安装或版本不兼容:执行 sudo apt install -y openjdk-11-jdk(或 openjdk-8-jdk),再 java -version 确认。
  • 下载了非 -bin 包导致启动失败:请改用带有 -bin.tar.gz 后缀的二进制发行包。
  • 端口被占用:ss -lntp | grep 2181 查找占用进程并释放,或调整 clientPort
  • 集群环境需放行端口:确保 2181/2888/3888 在防火墙/安全组中开放(如 sudo ufw allow 2181,2888,3888/tcp)。

可选的系统服务封装

  • 若希望使用 systemd 管理,可创建服务文件(示例路径与内容):
    sudo tee /etc/systemd/system/zookeeper.service >/dev/null <<'EOF'
    [Unit]
    Description=Apache Zookeeper
    After=network.target
    
    [Service]
    Type=forking
    User=zookeeper
    Group=zookeeper
    ExecStart=/opt/zookeeper/bin/zkServer.sh start
    ExecStop=/opt/zookeeper/bin/zkServer.sh stop
    ExecReload=/opt/zookeeper/bin/zkServer.sh restart
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    sudo systemctl daemon-reload
    sudo systemctl enable --now zookeeper
    sudo systemctl status zookeeper
    
    注意:运行用户、目录权限与 zoo.cfg 中的 dataDir 需保持一致。

0