zookeeper配置

zoo.cfg

tickTime=2000

zk中Follower与Leader之间进行心跳检测的时间间隔,以毫秒为单位,每隔该时间间隔, Leader将向Follower发送一次心跳检测。

initLimit=10

Follower第一次连接Leader时,zk所能忍受的最大失败连接次数。当值为5时,如果Follower连接Leader的时间超过5*2000ms=10s,那么连接失败。

syncLimit=5

在zk运行过程中,Follower和Leader之间进行心跳检测,所能忍受的最大失败连接次数。

dataDir=/opt/zookeeper/zkdata

快照日志的存储路径

dataLogDir=/opt/zookeeper/zkdatalog

事务日志的存储路径。如果不配置,那么事务日志默认存储到dataDir指定的目录,这样会严重影响zk的性能,当zk吞吐量较大时,产生的快照日志、事务日志太多。

clientPort=2181

客户端连接zk服务器的端口,默认为2181

server

单个zk节点的标识,由IP地址、Leader和Follewer的通信端口、Leader选举端口组成。单个节点时(独立模式下)不需要配置:

  server.1=192.168.7.100:12888:13888
  server.2=192.168.7.101:12888:13888
  server.3=192.168.7.107:12888:13888

server.1中的1用来标识服务器,这个标识要写到快照目录下的myid文件中。通信端口默认为2888,可自行修改。选举端口默认为3888,为集群启动时或者Leader挂掉后进行选举所使用的端口。

maxClientCnxns=60

客户端连接的最大数量

autopurge.snapRetainCount=3

保留在dataDir目录中快照的数量

autopurge.purgeInterval=1

日志的清除间隔时间,以小时为单位。设置为0时,则不开启自动清除功能。

 

关于日志的清除

zk不会主动的清除就的快照和日志文件,这是操作者的责任。可以有以下几种方法:

方法一:自定义脚本

 1 #!/bin/bash 
 2  
 3 #snapshot file dir 
 4 dataDir=/opt/zookeeper/zkdata/version-2
 5 #tran log dir 
 6 dataLogDir=/opt/zookeeper/zkdatalog/version-2
 7 
 8 #Leave 66 files 
 9 count=66 
10 count=$[$count+1] 
11 ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f 
12 ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f 

这个脚本定义了删除对应两个目录中的文件,保留最新的66个文件。可以将它写入到crontab中,定期执行。

方法二:使用ZK的工具类PurgeTxnLog

http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf org.apache.zookeeper.server.PurgeTxnLog <dataDir> <snapDir> -n <count>

方法三:bin/zkCleanup.sh

执行脚本./ bin/zkCleanup.sh,定期执行。

方法四:zoo.cfg配置

从3.4.0开始,zk提供了自动清理snapshot和事务日志的功能。通过配置 autopurge.snapRetainCount和autopurge.purgeInterval这两个参数能够实现定时清理。

posted @ 2017-12-01 14:27  simple-clean-opt  Views(1096)  Comments(0Edit  收藏  举报