1、清理Zookeeper日志、镜像文件
默认配置下,Zookeeper不会清楚旧的日志、节点镜像文件,存在一种危险,随着日志文件大小的增长,Zookeeper所有节点状态数据镜像将写入文件系统,这个文件系统会取代之前的日志文件。
可采用一个定时任务,执行以下代码,将最近count个镜像文件保存,删除count数以前镜像文件,其中<count>必须大于3.
java -cp zookeeper.jar:lib/slf4j-api-1.7.5.jar:lib/slf4j-log4j12-1.7.5.jar:lib/log4j-1.2.16.jar:conf org.apache.zookeeper.server.PurgeTxnLog <dataDir> <snapDir> -n <count>
3.4.0 版本之后可以在zoo.cfg中配置镜像保持数量以及清除周期。配置项如下:
parametersautopurge.snapRetainCount =
autopurge.purgeInterval=
当事物日志文件损坏导致server启动不起来时,可通过命令stat查看其它server状态,在其它server正常其中之后,可以删除datadir/version-2 和datalogdir/version-2
/目录,然后重启server。
2、Zookeeper 日志log配置配置文件位置 /conf/log4j.properties
3、Zookeeper配置
基本配置:
1)clientPort server端口
2)dataDir 内存数据库镜像存储地址,如果没有特殊声明也将存储数据库更新事物日志。
3)tickTime 心跳周期,基本周期单位,如session过期时间。
高级配置:
1)dataLogDir 事物日志文件存储地址,可提供专门log存储设备,以减少与镜像文件存储的竞争。
2) globalOutstandingLimit 限制client提交request 个数,缺省值1000.
3)preAllocSize 设置事物日志文件存储大小,缺省为64M。
4)snapCount 设置节点镜像文件存储大小,缺省为100,000,当满足大小后,将再创建日志文件存储日志数据。
5)traceFile ruquests存储文件。
6)maxClientCnxns 最大并发数据量,缺省大小60。
7)clientPortAddress 限制可连接server的client地址。
8)minSessionTimeout 最小session过期时间,缺省为2倍的tickTime。
9)maxSessionTimeout 最大session过期时间,缺省为20倍的tickTime。
10)fsync.warningthresholdms 报警信息写入日志文件门限,缺省为每秒1000条。
11)autopurge.snapRetainCount 可保存最近镜像文件个数,最小为3,缺省值为3。
12)autopurge.purgeInterval 定时清除日志周期单位为小时,缺省为0,必须为整数。
13)syncEnabled 是否根据日志文件快速回复server。
集群配置参数:
1)electionAlg leader选取算法实现设置,现在可选择值为3,给予TCP的快速选择算法。0,1,2已过期。
2)initLimit 设置followers连接和同步leader时间。单位tickTime。
3)leaderServes 设置leader是否可接受client连接,当高并发的数据协调更新时,可设置为false。
4)server.x=[hostname]:nnnnn[:nnnnn], etc
列表配置组成server ensembel。通过data目录下的myid文件标识不同server,文件存储这server的号。
第一个nnnnn 端口为followers连接leader端口,第二个nnnnn端口为leader连接端口。连接端口只对electionAlg is 1, 2, or 3 (default).有效。
同一机器上测试不同server,必须设置不同nnnn端口。
6)group.x=nnnnn[:nnnnn]
weight.x=nnnnn server权重系数,将server进行分组。 示例:
group.1=1:2:3 group.2=4:5:6 group.3=7:8:9 weight.1=1 weight.2=1 weight.3=1 weight.4=1 weight.5=1 weight.6=1 weight.7=1 weight.8=1 weight.9=1
7)cnxTimeout ,针对electionAlg=3有效,leader选取通知连接过期时间,缺省5秒。
8)standaloneEnabled 设置是否为单机模式。
认证 1)zookeeper.DigestAuthenticationProvider.superDigest 缺省为false,当验证为super时,对节点的访问不需要进行ACL验证。
org.apache.zookeeper.server.auth.DigestAuthenticationProvider 可以提供认证方法,通过字符串super:<password>
其它 1)Read Only Mode Server 设置sever只读模式。
不安全配置
1)forceSync 设置更新操作同步到日志文件中。
2)jute.maxbuffer: 节点数据最大存储值,缺省为0xfffff,低于1M。
3)skipACL 设置节点是否进行权限ACL检查。
4)quorumListenOnAllIPs server将监听可获取IP地址,不仅仅是配置的client的地址。
设置不创建data文件,可通过设置环境变量 ZOO_DATADIR_AUTOCREATE_DISABLE =1,或者命令行 zkServer -Dzookeeper.datadir.autocreate=false,命令行
下测试不可用。配置文件可以zookeeper.datadir.autocreate=false