Zookeeper:安装、集群搭建

来自Wikioe
跳到导航 跳到搜索


关于

Zookeeper 更多用作分布式协调服务,所以集群的搭建配置是重点。


zookeeper 用到了三个端口,其作用:

  1. 2181 : 对 client 端提供服务;
  2. 2888 : 集群内机器通信使用;
  3. 3888 : 选举 leader 使用;

单机安装

在安装ZooKeeper之前,请确保你的系统是在以下任一操作系统上运行:

  • 任意Linux OS - 支持开发和部署。适合演示应用程序。
  • Windows OS - 仅支持开发。
  • Mac OS - 仅支持开发。

ZooKeeper服务器是用Java创建的,它在JVM上运行(需要使用JDK 6或更高版本)。

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

Zookeeper:下载.png

Linux


安装步骤:

  1. 使用 wget 命令下载,并提取文件:
    $ wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
    $ tar -zxvf zookeeper-3.4.14.tar.gz
    
  2. 创建数据目录:
    $ cd zookeeper-3.4.14
    $ mkdir data
    
  3. 创建并修改配置文件“zoo.cfg”:
    $ cd zookeeper-3.4.14
    $ cd conf/
    $ cp zoo_sample.cfg zoo.cfg
    $ vi zoo.cfg
    
    tickTime = 2000
    dataDir = ../data
    clientPort = 2181
    initLimit = 5
    syncLimit = 2
    
  4. 启动 ZooKeeper 服务器:
    $ bin/zkServer.sh start
    $ JMX enabled by default
    $ Using config: /Users/../zookeeper-3.4.6/bin/../conf/zoo.cfg
    $ Starting zookeeper ... STARTED
    
  5. 查看服务端状态(启动单机节点):
    $ bin/zkServer.sh status
    $ JMX enabled by default
    $ Using config: /Users/../zookeeper-3.4.6/bin/../conf/zoo.cfg
    Mode: standalone
    
  6. 启动客户端:
    $ sh zkCli.sh
    
    帮助命令:
    ZooKeeper -server host:port <cmd> <args>
                       stat path [watch]
                       set path data [version]
                       ls path [watch]
                       delquota [-n|-b] path
                       ls2 path [watch]
                       setAcl path acl
                       setquota -n|-b val path
                       history 
                       redo cmdno
                       printwatches on|off
                       delete path [version]
                       sync path
                       listquota path
                       rmr path
                       get path [watch]
                       create [-s] [-e] path data acl
                       addauth scheme auth
                       quit 
                       getAcl path
                       close 
                       connect host:port
    

Windows


安装步骤:

  1. 下载文件并解压:
    Zookeeper:安装(Windows):下载文件并解压.png
  2. 创建数据、日志目录:
    Zookeeper:安装(Windows):创建数据、日志目录.png
  3. 创建并修改配置文件“zoo.cfg”:(从conf目录下的“zoo_sample.cfg”文件复制而来)
    Zookeeper:安装(Windows):创建并修改配置文件“zoo.cfg”1.png
    Zookeeper:安装(Windows):创建并修改配置文件“zoo.cfg”2.png
  4. 启动 ZooKeeper 服务器:(双击 zkServer.cmd 启动程序)
    Zookeeper:安装(Windows):启动 ZooKeeper 服务器1.png
    Zookeeper:安装(Windows):启动 ZooKeeper 服务器2.png
    控制台显示“bind to port 0.0.0.0/0.0.0.0:2181”,表示服务端启动成功!
  5. 启动 ZooKeeper 客户端:
    Zookeeper:安装(Windows):启动 ZooKeeper 客户端.png

集群搭建

【以下使用 virtualbox 示范三台 zookeeper 服务端集群搭建步骤(云服务器或者物理机同理)】


安装:

  1. 创建三台虚拟机环境(centos)并安装好 java 开发工具包 JDK。
    IP:192.168.3.33
    Zookeeper:集群搭建:节点1:环境.png
    IP:192.168.3.35
    Zookeeper:集群搭建:节点2:环境.png
    IP:192.168.3.37
    Zookeeper:集群搭建:节点3:环境.png
    • 查看 ip 地址可以用 ifconfig 命令;
  2. 安装:(按照安装步骤)在服务器分别安装 zookeeper;


配置:(在所有服务器中分别操作,以下以第一台为例)

  1. 创建“数据目录”(dataDir)、“日志目录”(dataLogDir);
  2. 创建“myid”文件:
    vim /tmp/zookeeper/myid
    1
    
    • myid 是一个名称为“myid”的文本文件,默认位于“数据目录”下;
    • myid 的内容是且只能是一个数字,用于表示节点在集群中的唯一编号(必须确定每个节点的myid不同);
  3. 创建配置文件“zoo.cfg”:
    1. 修改“dataDir”、“dataLogDir”;
      dataDir = /path/to/zookeeper/data
      dataLogDir = /path/to/zookeeper/log
      
      • 分别对应于第一步创建的“数据目录”、“日志目录”;
    2. 配置“clientPort”:
      clientPort = 2181
      
      • 表示客户端连接集群节点所用的端口号;
    3. 配置“节点信息”:(,每一台机器需要包括集群所有节点的信息):
      server.1=192.168.3.33:2888:3888
      server.2=192.168.3.35:2888:3888
      server.3=192.168.3.37:2888:3888
      
      • 格式为“server.id = host:port:port”,每一行表示集群的一个节点,id、host 分别对应一台机器的 myid、ip 的配置;
      • 前一个 port 表示节点间通信的端口,后一个 port 表示用于选举的端口;
      • 每台机器的配置文件都需要配置全部节点的信息。
    4. 配置“时间选项”:
      tickTime = 2000
      initLimit = 5
      syncLimit = 2
      
      • “tickTime”:单元时间,zookeeper的时间计算单元,默认 3000,单位 ms;
      • “initLimit”:节点的初始化时间,tickTime的倍数,默认 10;
      • “syncLimit”:心跳最大延迟周期,tickTime的倍数,默认 5;


启动集群:

  1. 分别启动三台服务器的 Zookeeper;
    • 启动前需要关闭防火墙(生产环境需要打开对应端口)
      systemctl stop firewalld
      
    • 首先启动 192.168.3.33 时,若此时查看日志出现报错是正常现象:(因为另外两台还没启动,暂时连接不上)
      Zookeeper:集群搭建:节点1:启动.png


集群启动完成后,查看三台机器状态:

IP:192.168.3.33
Zookeeper:集群搭建:节点1:状态.png
IP:192.168.3.35
Zookeeper:集群搭建:节点2:状态.png
IP:192.168.3.37
Zookeeper:集群搭建:节点3:状态.png

至此,集群搭建成功!

  • Mode:leader 代表主节点,follower 代表从节点,此处为一主二从。