以下是有关于在 Linux 环境下搭建 ZooKeeper 服务端集群的详细步骤指南,包含目录和参考资料的出站链接。本教程以 Ubuntu 系统为例,假设搭建一个 3 节点的 ZooKeeper 集群。


目录

  1. 集群搭建前的准备
  2. 安装 ZooKeeper
  3. 配置 ZooKeeper 集群
  4. 启动并验证集群
  5. 参考资料

集群搭建前的准备

ZooKeeper 集群需要至少 3 台服务器以确保高可用性和一致性(多数派 quorum)。以下是前提条件:

  • 服务器:3 台 Linux 服务器(例如 IP 分别为 192.168.1.101192.168.1.102192.168.1.103)。
  • 网络:确保服务器之间可以通过 IP 或域名互相访问,且防火墙允许 ZooKeeper 端口(默认 2181、2888、3888)。
  • Java:ZooKeeper 依赖 JVM,需安装 JDK。

检查 Java

在每台服务器上运行:

java -version

如果未安装:

sudo apt update
sudo apt install openjdk-11-jdk

安装 ZooKeeper

在每台服务器上执行以下步骤安装 ZooKeeper。

步骤

  1. 下载 ZooKeeper
   wget https://downloads.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
   tar -xzf apache-zookeeper-3.8.4-bin.tar.gz
   mv apache-zookeeper-3.8.4-bin /usr/local/zookeeper
   cd /usr/local/zookeeper
  1. 创建数据目录
    ZooKeeper 需要一个目录存储数据和日志:
   sudo mkdir -p /var/lib/zookeeper
   sudo chown $USER:$USER /var/lib/zookeeper
  1. (可选)设置环境变量
    编辑 ~/.bashrc
   echo "export ZOOKEEPER_HOME=/usr/local/zookeeper" >> ~/.bashrc
   echo "export PATH=\$PATH:\$ZOOKEEPER_HOME/bin" >> ~/.bashrc
   source ~/.bashrc

配置 ZooKeeper 集群

集群配置需要修改每台服务器上的配置文件,并设置唯一标识。

步骤

  1. 编辑配置文件
    在每台服务器上复制并编辑配置文件:
   cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
   nano /usr/local/zookeeper/conf/zoo.cfg

配置内容(所有节点相同):

   tickTime=2000
   initLimit=10
   syncLimit=5
   dataDir=/var/lib/zookeeper
   clientPort=2181
   server.1=192.168.1.101:2888:3888
   server.2=192.168.1.102:2888:3888
   server.3=192.168.1.103:2888:3888
  • tickTime:心跳时间(毫秒)。
  • initLimit:Follower 初始化连接 Leader 的最大时间。
  • syncLimit:Follower 与 Leader 同步的最大时间。
  • dataDir:数据目录。
  • server.X:集群服务器列表,格式为 IP:Follower端口:Leader选举端口
  1. 设置服务器 ID
    在每台服务器的 dataDir 中创建 myid 文件:
  • 节点 1 (192.168.1.101):
    bash echo "1" > /var/lib/zookeeper/myid
  • 节点 2 (192.168.1.102):
    bash echo "2" > /var/lib/zookeeper/myid
  • 节点 3 (192.168.1.103):
    bash echo "3" > /var/lib/zookeeper/myid
  1. 配置防火墙(可选)
    如果防火墙启用,确保开放端口:
   sudo ufw allow 2181
   sudo ufw allow 2888
   sudo ufw allow 3888
   sudo ufw status

启动并验证集群

在所有节点上启动 ZooKeeper 并验证集群状态。

步骤

  1. 启动 ZooKeeper
    在每台服务器上运行:
   /usr/local/zookeeper/bin/zkServer.sh start

输出类似:

   Starting zookeeper ... STARTED
  1. 检查状态
    在每台服务器上运行:
   /usr/local/zookeeper/bin/zkServer.sh status
  • 一个节点显示 Mode: leader,其余显示 Mode: follower
  • 如果显示 Error contacting service,检查网络连接或配置文件。
  1. 使用客户端验证
    从任意节点连接集群:
   /usr/local/zookeeper/bin/zkCli.sh -server 192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181

测试命令:

   create /test "cluster test"
   get /test

预期输出:

   cluster test

在其他节点上运行 get /test 应同步显示相同数据。

  1. 停止集群(可选)
    在每台服务器上:
   /usr/local/zookeeper/bin/zkServer.sh stop

参考资料


这是 ZooKeeper 在 Linux 上搭建服务端集群的完整步骤。如果您需要 systemd 服务配置、日志管理或遇到具体问题,请告诉我,我可以进一步协助!