Zookeeper安装

说明:系统环境为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安装)