CentOS下Zookeeper集群安装部署实践

本文基于Zookeeper的最新版本3.4.6来搭建Zookeeper集群。至于Zookeeper是什么?请参见官网的解释。
Zookeeper下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/

前提条件

  • 机器需安装JDK7.0及其以上版本,如没有请去Oracle官网下载对应操作系统的JDK版本。
  • 请准备3台装有CentOS的机器

安装Zookeeper

1. 配置CentOS的hosts。

例如:3台CentOS主机的ip分别为192.168.1.101,192.168.1.102,192.168.1.103。修改3台主机的/etc/hosts的配置如下:

1
2
3
192.168.1.101 zk01
192.168.1.102 zk02
192.168.1.103 zk03

2. 解压zookeeper-3.4.6.tar.gz

在CentOS机器下创建目录/data/applications,将下载下来的压缩包:zookeeper-3.4.6.tar.gz拷贝到刚创建的目录下,使用tar zxvf zookeeper-3.4.6.tar.gz解压到当前目录下。使用ln -s /data/applications/zookeeper-3.4.6 zookeeper来创建软连接。

3. 配置zookeeper

将解压出来的zookeeper的conf目录下zoo_sample.cfg文件拷贝zoo.cfg文件。目前已有的配置如下:

1
2
3
4
5
tickTime=2000 #Zookeeper机器的心跳间隔时间,单位为毫秒数;
initLimit=10 #Zookeeper的机器初始连接允许的最大时间长度,为tickTime的倍数
syncLimit=5 # Zookeeper的Leader和Follower同步的允许的最大时间长度,为tickTime的倍数
dataDir=/data/zookeeper/data # dataDir存储Zookeeper的内存的snapshot,不要使用/tmp目录
clientPort=2181 # 端口号

注意:

  • 客户端Session最小timeout时间为tickTime的2倍,客户端Session的timeout可以在连接Zookeeper的时候进行指定,该timeout会影响Zookeeper中的临时节点的存活时间。
  • 如果没有设置dataLogDir,会同时将事务日志也纪录到其中,建议在生产环境中将dataLogDir和dataDir为保证吞吐量和可靠的延迟,建议配置为不同的磁盘设备

具体参数的解释请参见:http://zookeeper.apache.org/doc/trunk/zookeeperAdmin.html#sc_configuration

在zoo.cfg文件中增加如下配置:

1
2
3
4
5
6
dataLogDir=/data/zookeeper/datalog # 保存事务日志的目录
autopurge.snapRetainCount=15 # 设置保存的事务日志允许的最大数目
autopurge.purgeInterval=24 # 自动清除事务日志的时间间隔,单位为小时
server.1=zk01:2888:3888
server.2=zk02:2888:3888
server.3=zk03:2888:3888

注意: 一定要设置参数:autopurge.snapRetainCount和autopurge.purgeInterval,否则,对应dataLogDir的日志很容易就塞满整个磁盘。
在各台主机下的dataDir配置的目录下使用命令echo "1" > myid来创建myid文件。主机zk01使用echo "1">myid,主机zk02使用echo "2"> myid,主机zk03使用echo "3" > myid

4. 优化Zookeeper的JVM参数

使用vim命令修改Zookeeper安装目录子目录bin下的zkEnv.sh文件,在最下方增加一行:

1
JVMFLAGS="-Xms4096m -Xmx4096m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled"

修改JVM的最小堆,最大堆,新生代,老年代的GC算法等。

启动Zookeeper

在配置完上述内容后,就可以在Zookeeper安装目录下使用

1
bin/zkServer.sh start

来启动Zookeeper。到此,整个Zookeeper的集群安装部署就完成了。

验证Zookeeper

使用Zookeeper安装目录下bin/zkServer.sh status来检验Zookeeper服务器的状态。

参考

  1. http://zookeeper.apache.org/doc/r3.4.6/zookeeperInternals.html
  2. http://zookeeper.apache.org/doc/r3.4.6/zookeeperAdmin.html#sc_systemReq
  3. http://blog.csdn.net/shirdrn/article/details/7183503
  4. http://blog.chinaunix.net/uid-26275986-id-3957283.html
  5. http://blog.csdn.net/gobitan/article/details/8659175
  6. http://www.cnblogs.com/sharpxiajun/p/3294581.html