zookeeper安装和环境配置

152 阅读1分钟

1 本地模式配置

  1. 解压安装包

    tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
    
  2. 配置修改

    a. 将conf目录下的zoo_sample.cfg修改为zoo.cfg

    mv zoo_sample.cfg zoo.cfg
    

    b.修改dataDir路径

    dataDir=/opt/software/zookeeper-3.4.10/zkData
    

    c.创建zkData文件夹

    make zkData
    
  3. 操作zookeeper

    a.启动

    [mayi@mayi101 zookeeper-3.4.10]$ bin/zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /opt/software/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    

    b.查看进程是否启动

    [mayi@mayi101 zookeeper-3.4.10]$ jps
    2257 -- main class information unavailable
    2268 Jps
    

    c. 查看状态

    [mayi@mayi101 zookeeper-3.4.10]$ bin/zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /opt/software/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Mode: standalone
    

    d.启动客户端

    [mayi@mayi101 zookeeper-3.4.10]$ bin/zkCli.sh 
    

    e.退出客户端

    quit
    

    f.停止zookeeper

    [mayi@mayi101 zookeeper-3.4.10]$ bin/zkServer.sh stop
    ZooKeeper JMX enabled by default
    Using config: /opt/software/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Stopping zookeeper ... STOPPED
    

2 zoo.cfg参数解读

Zookeeper中的配置文件zoo.cfg中参数含义解读如下:

1.tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒

Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。

它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)

2.initLimit =10:LF初始通信时限

集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。

3.syncLimit =5:LF同步通信时限

集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

4.dataDir:数据文件目录+数据持久化路径

主要用于保存Zookeeper中的数据。

5.clientPort =2181:客户端连接端口

监听客户端连接的端口。

3 分布式模式配置

  1. 集群规划

    mayi101,mayi102和mayi103这三个节点部署Zookeeper

  2. 解压如上单节点模式(需要将解压后的都分发到mayi102,mayi103这两个节点上)

  3. 配置服务器编号

    a. 创建zkData

    mkdir -p zkData
    

    b. 在zkData下创建一个myid的文件

    touch myid
    

    添加myid文件,注意一定要在linux里面创建,在notepad++里面很可能乱码

    c. 编辑myid文件

    vim myid
    

    d. 在文件中添加与server对应的编号

    1
    

    e.分发配置好的zookeeper到其它节点,并修改其它节点对应下的myid编号

    mayi102对应2,mayi103对应3
    
  4. 配置zoo.cfg

    参照上方的本地模式中zoo.cfg配置

    并对zoo.cfg添加服务器节点配置

    vim zoo.cfg
    
    #添加如下内容
    #######################cluster##########################
    server.1=mayi101:2888:3888
    server.2=mayi102:2888:3888
    server.3=mayi103:2888:3888
    

    同步zoo.cfg文件

    xsync zoo.cfg  #xsync是自己写的分发脚本,没有就自己发到对应的其他服务节点
    
    • 配置参数解读

      server.A=B:C:D。
      

      A: 是一个数字,代表是那个服务器,对应服务器中myid

      集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。

      B: 是这个服务器的地址(写IP也可以)

      C: 是这个服务器Follower与集群中的Leader服务器交换信息的端口

      D: 是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

  5. 集群操作

    分别启动zookeeper

    可以配置zookeeper的环境变量,不用每次启动都需要到指定目录

    #ZK_HOME
    export ZK_HOME=/opt/software/zookeeper-3.4.10
    

    每台节点启动zookeeper服务

    [mayi@mayi101 ~]$ zkServer.sh start
    [mayi@mayi102 ~]$ zkServer.sh start
    [mayi@mayi103 ~]$ zkServer.sh start
    

    查看状态

    [mayi@mayi101 ~]$ zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /opt/software/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Mode: leader
    
    [mayi@mayi102 ~]$ zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /opt/software/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Mode: follower
    
    [mayi@mayi103 ~]$ zkServer.sh status
    ZooKeeper JMX enabled by default
    Using config: /opt/software/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Mode: follower
    
  6. 启动和关闭脚本

    zkStart.sh
    *********************开启zookeeper******************************
    
    #!/bin/bash
    if (($#==0))
    then
        exit 1;
    fi
    for i in mayi101 mayi102 mayi103
    do
        echo Starting zk in $i
        ssh $i "zkServer.sh $1" > /dev/null
    done
    
    
    zkStop.sh
    *********************停止zookeeper******************************
    #!/bin/bash
    
    if (($#==0))
    then
        exit 1;
    fi
    for i in mayi101 mayi102 mayi103
    do
        echo Starting zk in $i
        ssh $i "zkServer.sh $1" > /dev/null
    done