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: 集群健康状态检测

    四字命令

JMX