说明:系统环境为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: 若是集群环境下,则其他节点可能未启动或配置错误。
网友评论