ZKEssentials读书笔记(五) - 18965050/ZookeeperEssentials GitHub Wiki
- 配置ZK Server
- 配置ZK集群
- 配置定额和认证
- ZK最佳实践
- 监控ZK服务
配置ZK Server
Server配置
- clientPort: client连接端口. 默认值2181
- dataDir: 数据目录
- tickTime: tick是ZK默认时间单位. 默认2000,单位:ms
存储配置
- dataLogDir: 事务日志目录. 若没配置, 使用dataDir
- preAllocSize: 预分配的事务日志文件大小. 默认64M
- snapCount: 事务满足写入事务日志文件的条目数. 默认:100000
- traceFile: 配置后会将请求记录到
traceFile.year.month.day
形式的文件中. 此功能对调试很有用, 但会影响性能 - fsync.warningthresholdms: 将写入刷新到日志文件的最大等待时间间隔.默认1000.单位:ms
- autopurge.snapRetainCount: dataDir和dataLogDir中快照文件清理保存的最大数量. 默认为3. 此配置在autopurge.purgeInterval不为0有效
- autopurge.purgeInterval: dataDir和dataLogDir中快照文件清理保存时间间隔. 默认为0, 表示不开启清理功能.配置为>0的数值表示开启清理功能. 单位:小时
- syncEnabled: zk 3.4.6及之后的版本新加入的配置.运行观察者节点(observer)记录事务和写入磁盘.激活此功能会减少恢复时间
网络配置
- globalOutstandingLimit: 由于zk client可能会有很多,未防止多client频繁请求对server造成压力, 此配置项用作节流控制(throttle).默认:1000
- maxClientCnxns: 单个server承担的最大并发client数量. 默认:60
- clientPortAddress:允许连接的client ip和端口
- minSessionTimeout: 最小会话超时时长.默认: 2个tick
- maxSessionTimeout: 最大会话超时时长.默认: 20个tick
配置ZK集群
- electionAlg: zk集群leader选举配置参数.
- 0: UDP方式
- 1: 非认证UDP快速leader election方式
- 2: 认证UDP快速leader election方式
- 3: TCP快速leader election方式 目前0,1,2已经作废, 只能选择3
- initLimit: follower连接leader的时长限制.以tick作为单位
- syncLimit: follower同步leader的时长限制
- leaderServes:当设置为no是, 不允许client连接leader. 这是由于leader对写操作的压力比较大, 这种方式可减轻leader压力.默认yes
- cnxTimeout: leader election通知连接超时. 此配置只有在electionAlg为3时有效
- server.x=[hostname]:port1[:port2]: 集群配置参数.
定额(quorum)配置
- group.x=nnnnn[:nnnnn]: 集群组配置. x为组标识, nnnn为server标识
- weight.x=nnnnn: server权重配置.
ZK最佳实践
- 定期清理数据目录(dataDir)和日志目录(dataLogDir)
- ZK使用log4j作为日志记录. log4j最好配置自滚动日志文件(auto-rollover logfile)
- client连接server的连接字符串需要和server配置一致.否则会出现奇怪的问题
- server集群配置需要和实际的集群情况一致
- zk dataLogDir最好和dataDir分开配置.dataLogDir最好放在可靠性更高的环境中.
- 注意server Java堆内存的合理分配
- 使用诸如
vmstat
命令实时监控
ZK实例监控
四字命令
zk提供了telnet或nc方式的四字监控管理命令
-
conf: 显示server配置信息
-
cons: 所有连接到server的client会话信息
-
crst: 重置client连接会话统计信息
-
dump: 显示突出的会话和ephemeral znode信息. 只适用在leader节点上
-
envi: 显示环境变量
-
ruok: 检测server运行是否正常. 正常则响应
imok
,否则没有响应 -
srst: 重置server统计信息
-
stat: 显示server和连接client信息
-
srvr: 只显示server信息
-
wchs: 显示server上watch简单信息
-
wchc: 显示server上watch详细信息,以连接会话排序
-
wchp: 显示server上watch详细信息,以路径排序
-
mntr: 集群健康状态检测