Zookeeper集群搭建

Zookeeper集群搭建

在分布式系统领域,Zookeeper 是一种流行的分布式协调服务,具备高可用性和可靠性,广泛应用于分布式系统的配置管理、名称服务以及分布式锁控制等场景。然而,为了更好地支持分布式环境,Zookeeper 集群的搭建至关重要。通过集群模式,系统可以实现更高的容错性,同时提供更稳定的服务。

本文详细讲解了在三台 CentOS7 服务器上部署 Zookeeper 集群的步骤。我们从环境准备开始,包括关闭防火墙、配置免密登录,以及安装必要的工具和依赖项。接下来,根据集群规划,逐步完成 Zookeeper 的安装、配置,以及节点之间的数据分发。此外,还分享了如何编写脚本来简化 Zookeeper 集群的启动、停止与状态监控操作,使运维更加高效。

最后,通过多种验证步骤确认集群的成功运行,包括查看节点进程和连接到集群执行命令。无论是新手还是有一定经验的开发者,都可以根据本文的分步指南轻松搭建一个完整的 Zookeeper 集群,为分布式应用的开发和部署提供坚实基础。

环境准备

需要有三台 Centos7 服务器,并都需要完成下面的配置要求:

  • 关闭防火墙
  • 新建普通用户me
  • 阿里云时钟同步服务器
  • 配置免密登陆
  • 关闭selinux
  • 配置xsyncxcall同步脚本
  • 配置jdk8环境
  • 确保端口2188,2888端口没有被占用

环境准备可以参考我下面的博文:

centos防火墙常用命令

centos新建普通用户

centos系统时间同步

centos配置免密登录

centos关闭SElinux

centos配置xsync和xcall同步脚本

centos安装jdk8

集群规划

hostname IP
master 10.0.0.87
node1 10.0.0.81
node2 10.0.0.82

正式安装

安装说明:

  1. 除特别说明外,所有操作均在master节点、使用me这个非root用户执行
  2. 命令中出现的IP,均需要替换为自己集群中的IP【必须】
  3. 命令中出现的/home/lbs/software路径,可选择替换为自定义路径【可选】
  1. 下载安装包,并解压到指定路径

    1
    2
    3
    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
    tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /home/lbs/software
    mv /home/lbs/software/apache-zookeeper-3.6.3-bin /home/lbs/software/zookeeper
  2. 修改zoo.cfg配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cp /home/lbs/software/zookeeper/conf/zoo_sample.cfg /home/lbs/software/zookeeper/conf/zoo.cfg

    vim /home/lbs/software/zookeeper/conf/zoo.cfg

    # 修改如下内容
    dataDir=/home/lbs/software/zookeeper/data

    # 追加如下内容
    server.1=10.0.0.87:2188:2888
    server.2=10.0.0.81:2188:2888
    server.3=10.0.0.82:2188:2888
  3. 创建数据存储目录和myid文件

    1
    2
    mkdir -p /home/lbs/software/zookeeper/data
    echo "1" > /home/lbs/software/zookeeper/data/myid
  4. zookeeper目录分发到其他机器节点

    1
    xsync /home/lbs/software/zookeeper
  5. 登录到node1节点,执行下面的命令

    1
    echo "2" > /home/lbs/software/zookeeper/data/myid
  6. 登录到node2节点,执行下面的命令

    1
    echo "3" > /home/lbs/software/zookeeper/data/myid
  7. 回到master节点,编写创建操作zookeeper集群的脚本zkCluster.sh

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    tee /home/lbs/software/zookeeper/bin/zkCluster.sh <<'EOF'
    #!/bin/bash
    case $1 in
    "start"){
    for i in master node1 node2
    do
    echo -------------------------------- $i zookeeper 启动 ---------------------------
    ssh $i "source /etc/profile;/home/lbs/software/zookeeper/bin/zkServer.sh start"
    done
    }
    ;;
    "stop"){
    for i in master node1 node2
    do
    echo -------------------------------- $i zookeeper 停止 ---------------------------
    ssh $i "source /etc/profile;/home/lbs/software/zookeeper/bin/zkServer.sh stop"
    done
    }
    ;;
    "status"){
    for i in master node1 node2
    do
    echo -------------------------------- $i zookeeper 状态 ---------------------------
    ssh $i "source /etc/profile;/home/lbs/software/zookeeper/bin/zkServer.sh status"
    done
    }
    ;;
    esac
    EOF
    chmod +x /home/lbs/software/zookeeper/bin/zkCluster.sh

操作集群

1
2
3
4
5
6
7
8
# 启动集群
/home/lbs/software/zookeeper/bin/zkCluster.sh start

# 停止集群
/home/lbs/software/zookeeper/bin/zkCluster.sh stop

# 查看集群状态
/home/lbs/software/zookeeper/bin/zkCluster.sh status

如果启动报错JAVA_HOME is not set and java could not be found in PATH查看解决方法

如需设置zookeeper集群密码,请参考# zookeeper集群设置密码

验证集群

  1. 查看zookeeper集群进程情况
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [me@master bin]$ xcall jps
    ================current host is master=================
    --> execute command "jps"
    29777 Jps
    28340 QuorumPeerMain
    Command executed successfully on master
    ================current host is node1=================
    --> execute command "jps"
    6435 QuorumPeerMain
    6710 Jps
    Command executed successfully on node1
    ================current host is node2=================
    --> execute command "jps"
    6786 Jps
    6516 QuorumPeerMain
    Command executed successfully on node2
    All commands executed successfully!
  2. 连接到zookeeper集群中
    1
    2
    3
    4
    5
    /home/lbs/software/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

    # 输入ls,查看
    [zk: 127.0.0.1:2181(CONNECTED) 0] ls
    ls [-s] [-w] [-R] path
作者

李博帅

发布于

2023-10-10

更新于

2025-04-13

许可协议