环境

主机名 eth0 IP eth1 IP 操作系统 ZK 版本 myid
zk221 192.168.1.221 192.168.16.221 CentOS7.5 3.4.14 221
zk222 192.168.1.222 192.168.16.222 CentOS7.5 3.4.14 222
zk223 192.168.1.223 192.168.16.223 CentOS7.5 3.4.14 223
  • 下载 zookeeper-3.4.14
  • eth0 网卡用于向客户端提供服务,eth1 网卡用于 zookeeper 集群内部通信

各节点初始配置

  • 关闭 selinux、防火墙
  • 部署 java 运行环境
  • 创建数据(快照日志)目录

    1
    
    mkdir -p /var/lib/zookeeper/data
  • 创建事物日志目录

    1
    
    mkdir -p /var/lib/zookeeper/dataLog
  • 创建服务日志目录

    1
    
    mkdir -p /var/log/zookeeper
  • 生成 myid 文件

    1
    2
    3
    4
    5
    6
    
    # zk221
    echo 221 > /var/lib/zookeeper/data/myid
    # zk222
    echo 222 > /var/lib/zookeeper/data/myid
    # zk223
    echo 223 > /var/lib/zookeeper/data/myid

部署 zookeeper

  • 登陆 zk221,下载 zookeeper,解压至 /opt/ 下
  • 生成配置文件

    1
    2
    
    cd /opt/zookeeper/conf/
    cp zoo_sample.cfg zoo.cfg
  • 修改 /opt/zookeeper/conf/zoo.cfg

    1
    2
    3
    4
    5
    6
    
    dataDir=/var/lib/zookeeper/data
    dataLogDir=/var/lib/zookeeper/dataLog
    # servers
    server.221=192.168.16.221:2888:3888
    server.222=192.168.16.222:2888:3888
    server.223=192.168.16.223:2888:3888
  • 修改 /opt/zookeeper/bin/zkEnv.sh

    1
    2
    
    # 找到 ZOO_LOG_DIR="." 一行,换成如下
    ZOO_LOG_DIR="/var/log/zookeeper"
  • 打包 zookeeper 目录,复制到 zk222 和 zk223 上

启动集群

  • 直接启动脚本
    • 在每个节点上启动 zookeeper 服务

      1
      
      /opt/zookeeper/bin/zkServer.sh start
  • systemd 启动
    • 创建 /usr/lib/systemd/system/zookeeper.service,内容如下

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      
      [Unit]
      Description=Zookeeper
      Requires=network.service
      After=network.service
      [Service]
      Environment=JAVA_HOME=/opt/jre
      ExecStart=/opt/zookeeper/bin/zkServer.sh start-foreground
      SuccessExitStatus=143
      [Install]
      WantedBy=multi-user.target
    • 启动 zookeeper 服务

      1
      2
      
      systemctl daemon-reload
      systemctl start zookeeper

查看集群状态

  • 查看节点状态

    1
    
    /opt/zookeeper/bin/zkServer.sh status