# Zookeeper 集群部署

# 1. 集群规划

name ip
master 172.16.208.160
slave1 172.16.208.161
slave2 172.16.208.162

# 2. 下载 zookeeper

官网下载地址:https://zookeeper.apache.org/releases.html

分别在三台机器上下载 zookeeper:

  1. 创建 zookeeper 目录,并预先创建好 data 目录

    cd ~
    mkdir zookeeper
    cd zookeeper
    mkdir data
    
  2. 下载 zookeeper

    wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz --no-check-certificate
    
  3. 解压

    tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
    
  4. 进入解压后的文件夹中

    cd apache-zookeeper-3.7.0-bin
    

# 3. 修改配置文件

分别修改三台机器上的 zookeeper 配置文件:

  1. 进入 conf 目录

    cd conf
    
  2. 复制 zoo_sample.cfg 文件并重命名为 zoo.cfg

    cp zoo_sample.cfg zoo.cfg
    
  3. 修改 zoo.cfg

    vim zoo.cfg
    

    内容如下:

    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    dataDir=/root/zookeeper/data
    # the port at which the clients will connect
    clientPort=2181
    # cluster
    server.0=172.16.208.160:2888:3888
    server.1=172.16.208.161:2888:3888
    server.2=172.16.208.162:2888:3888
    
    • tickTime: 基本事件单元,这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔 tickTime 时间就会发送一个心跳;最小的 session 过期时间为 2 倍 tickTime;
    • initLimit: 允许 follower 连接并同步到 Leader 的初始化连接时间,以 tickTime 为单位。当初始化连接时间超过该值,则表示连接失败;
    • syncLimit: 表示 Leader 与 Follower 之间发送消息时,请求和应答时间长度。如果 Follower 在设置时间内不能与 Leader 通信,那么此 Follower 将会被丢弃;
    • dataDir: 存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能;
    • clientPort: 监听客户端连接的端口;
    • service.A=B:C:D
      • A:其中 A 是一个数字,表示这个是服务器的编号;
      • B:是这个服务器的 IP 地址;
      • C:Zookeeper 服务器之间的通信端口;
      • D:Leader 选举的端口。

    更多参考官网:https://zookeeper.apache.org/doc/r3.5.8/zookeeperAdmin.html#sc_configuration

# 4. 创建 myid 文件

分别为三台 zookeeper 服务器创建唯一标志文件:

  1. 在上步中 dataDir 目录下创建 myid 文件

    cd /root/zookeeper/data
    vim myid
    
  2. 在该文件添加上一步 server 配置的对应 A 数字

    server.0=172.16.208.160:2888:3888
    server.1=172.16.208.161:2888:3888
    server.2=172.16.208.162:2888:3888
    

    服务器一:在 myid 中写 0

    服务器二:在 myid 中写 1

    服务器三:在 myid 中写 2

# 5. 配置环境变量

为了能够在任意目录启动 zookeeper 集群,我们需要在三台机器上分别配置环境变量:

  1. 在 /etc/profile 末尾添加

    #set zookeeper environment
    export ZK_HOME=/root/zookeeper/apache-zookeeper-3.7.0-bin
    export PATH=$PATH:$ZK_HOME/bin
    
  2. 刷新配置

    source /etc/profile
    

7475633000

9188466000

# 6. 启动 zookeeper 集群

常用命令:

  • 启动命令:zkServer.sh start
  • 停止命令:zkServer.sh stop
  • 重启命令:zkServer.sh restart
  • 集群状态:zkServer.sh status

分别启动三台机器的 zookeeper:

zkServer.sh start

分别查看各个机器中的集群状态:

[root@localhost ~]# zkServer.sh status
/bin/java
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[root@localhost ~]# zkServer.sh status
/bin/java
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@localhost ~]# zkServer.sh status
/bin/java
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/apache-zookeeper-3.7.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
上次更新: 8/22/2022, 10:48:17 PM