美文网首页
Zookeeper安装

Zookeeper安装

作者: huozhihui | 来源:发表于2017-09-25 17:34 被阅读0次

    说明:系统环境为centos6.9,由于Zookeeper集群是通过多数选举的方式产生leader的,因此,集群需要奇数个Zookeeper实例组成,也就是说至少需要3台(一般推荐3、5、7台 )。

    1. 下载稳定版3.4.10
    sudo yum install -y tar wget
    wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
    tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local
    

    其他版本参考:http://zookeeper.apache.org/releases.html

    2. 创建配置文件zoo.cfg

    进入 /usr/local/zookeeper-3.4.10目录,并将conf目录下zoo_sample.cfg重命名或拷贝一份,且命名为zoo.cfg

    cd /usr/local/zookeeper-3.4.10
    sudo cp conf/zoo_sample.cfg conf/zoo.cfg
    
    3. 修改配置文件zoo.cfg

    在文件的最后加入主机IP等相关信息,例如:

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/var/lib/zookeeper
    clientPort=2181
    #maxClientCnxns=60
    server.1=zookeeper1:2888:3888
    server.2=zookeeper2:2888:3888
    server.3=zookeeper3:2888:3888
    
    • tickTime:心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间。
    • initLimit:多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,应相应增大这个值。
    • syncLimit:多少个tickTime内,允许follower同步,如果follower落后太多,则会被丢弃。
    • dataDir:用于存放内存数据库快照的文件夹,同时对于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)
    • clientPort:服务的监听端口。
    • server.A=B:C:D
      A是一个数字,表示这个是第几号服务器,B是这个服务器的ip地址
      C第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口
      D是在leader挂掉时专门用来进行选举leader所用
    4. 设置myid和/etc/hosts

    上步配置中的A就是一个zookeeper节点的ID,它需要被写在对应的{dataDir}/myid文件中。

    echo '1' > /var/lib/zookeeper/myid
    echo '2' > /var/lib/zookeeper/myid
    echo '3' > /var/lib/zookeeper/myid
    
    echo '127.0.0.1 zookeeper1' > /etc/hosts
    echo '127.0.0.1 zookeeper1' > /etc/hosts
    echo '127.0.0.1 zookeeper1' > /etc/hosts
    
    5. 在三个zookeeper节点上分别启动zookeeper服务
    ./bin/zkServer.sh start
    

    注:以下各步骤的当前目录均为:/usr/local/zookeeper-3.4.10

    6. 查看服务状态
    ./bin/zkServer.sh status
    

    正常状态为:

    ZooKeeper JMX enabled by default
    Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
    Mode: standalone
    

    zookeeper支持两种运行模式:独立模式(standalone)和复制模式(replicated),真正用于生产环境的Zookeeper肯定都是使用复制模式的,这样做可以避免单点问题。

    7. 可通过启动客户端测试连接
    ./bin/zkCli.sh -server zookeeper:2181
    
    8. 停止服务
    ./bin/zkServer.sh stop
    
    9. 设置开机启动

    (1)创建脚本

    cd /etc/rc.d/init.d
    touch zookeeper && chmod +x zookeeper
    

    (2)编辑zookeeper文件,添加如下内容

    #!/bin/bash
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64
    export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.10
    export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
    case $1 in
             start) su root $ZOOKEEPER_HOME/bin/zkServer.sh start;;
             status) su root $ZOOKEEPER_HOME/bin/zkServer.sh status;;
             stop) su root $ZOOKEEPER_HOME/bin/zkServer.sh stop;;
             restart) su root $ZOOKEEPER_HOME/bin/zkServer.sh restart;;
             *)  echo "requirestart|stop|status|restart"  ;;
    esac
    

    (3)添加到开机启动

    chkconfig zookeeper on
    chkconfig --add zookeeper
    // 启动或停止
    service zookeeper start | stop | restart
    
    10. 至此已完成zookeeper安装及配置。
    11. 问题总结

    启动后,查看状态时异常:

    JMX enabled by default
    Using config: /usr/lib/zookeeper/bin/../conf/zoo.cfg
    Error contacting service. It is probably not running.
    
    • 原因1:系统未安装java
      解决方法:yum install java-1.8.0-openjdk-devel.x86_64 -y
    • 原因2: zoo.cfg参数配置问题
    • 原因3: 若是集群环境下,则其他节点可能未启动或配置错误。

    相关文章

      网友评论

          本文标题:Zookeeper安装

          本文链接:https://www.haomeiwen.com/subject/omltextx.html