本文基于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 | 192.168.1.101 zk01 |
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 | tickTime=2000 #Zookeeper机器的心跳间隔时间,单位为毫秒数; |
注意:
- 客户端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 | dataLogDir=/data/zookeeper/datalog # 保存事务日志的目录 |
注意: 一定要设置参数: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服务器的状态。
参考
- http://zookeeper.apache.org/doc/r3.4.6/zookeeperInternals.html
- http://zookeeper.apache.org/doc/r3.4.6/zookeeperAdmin.html#sc_systemReq
- http://blog.csdn.net/shirdrn/article/details/7183503
- http://blog.chinaunix.net/uid-26275986-id-3957283.html
- http://blog.csdn.net/gobitan/article/details/8659175
- http://www.cnblogs.com/sharpxiajun/p/3294581.html