最详细且简单的zookeeper集群搭建教程(3.6.3)

205 阅读2分钟

环境准备

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

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

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

centos防火墙常用命令

centos新建普通用户

centos系统时间同步

centos配置免密登录

centos关闭SElinux

centos配置xsync和xcall同步脚本

centos安装jdk8

集群规划

hostnameIP
master10.0.0.87
node110.0.0.81
node210.0.0.82

正式安装

安装说明:

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

    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配置文件

    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文件

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

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

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

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

    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
    

操作集群

# 启动集群
/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集群进程情况
    [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集群中
    /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