zk_ephemerals_count 0
zk_Approximate_data_size 27
zk_followers 4 – only exposed by the Leader
zk_synced_followers 4 – only exposed by the Leader
zk_pending_syncs 0 – only exposed by the Leader
zk_open_file_descriptor_count 23 – only available on Unix platforms
zk_max_file_descriptor_count 1024 – only available on Unix platforms
2.9 数据文件管理
默认情况下,ZK的数据文件和事务日志是保存在同一个目录中,建议是将事务日志存储到单独的磁盘上 。
2.9.1数据目录
ZK的数据目录包含两类文件:
A、myid – 这个文件只包含一个数字,和server id对应 。
B、snapshot. - 按zxid先后顺序的生成的数据快照 。
集群中的每台ZK server都会有一个用于惟一标识自己的id,有两个地方会使用到这个id:myid文件和zoo.cfg文件中 。myid文件存储在dataDir目录中,指定了当前server的server id 。在zoo.cfg文件中,根据server id,配置了每个server的ip和相应端口 。Zookeeper启动的时候,读取myid文件中的server id,然后去zoo.cfg 中查找对应的配置 。
zookeeper在进行数据快照过程中,会生成 snapshot文件,存储在dataDir目录中 。文件后缀是zxid,也就是事务id 。(这个zxid代表了zk触发快照那个瞬间,提交的最后一个事务id) 。注意,一个快照文件中的数据内容和提交第zxid个事务时内存中数据近似相同 。仅管如此,由于更新操作的幂等性,ZK还是能够从快照文件中恢复数据 。数据恢复过程中,将事务日志和快照文件中的数据对应起来,就能够恢复最后一次更新后的数据了 。
2.9.2事务日志目录
dataLogDir目录是ZK的事务日志目录,包含了所有ZK的事务日志 。正常运行过程中,针对所有更新操作,在返回客户端"更新成功"的响应前,ZK会确保已经将本次更新操作的事务日志写到磁盘上,只有这样,整个更新操作才会生效 。每触发一次数据快照,就会生成一个新的事务日志 。事务日志的文件名是log.,zxid是写入这个文件的第一个事务id 。
2.9.3文件管理
不同的zookeeper server生成的snapshot文件和事务日志文件的格式都是一致的(无论是什么环境,或是什么样的zoo.cfg 配置) 。因此,如果某一天生产环境中出现一些古怪的问题,你就可以把这些文件下载到开发环境的zookeeper中加载起来,便于调试发现问题,而不会影响生产运行 。另外,使用这些较旧的snapshot和事务日志,我们还能够方便的让ZK回滚到一个历史状态 。
另外,ZK提供的工具类LogFormatter能够帮助可视化ZK的事务日志,帮助我们排查问题,关于事务日志的可以化,请查看这个文章《http://f.dataguru.cn/thread-589796-1-1.html》.
需要注意的一点是,zookeeper在运行过程中,不断地生成snapshot文件和事务日志,但是不会自动清理它们,需要管理员来处理 。(ZK本身只需要使用最新的snapshot和事务日志即可)关于如何清理文件,上面章节"日常运维"有提到 。
2.10 注意事项
2.10.1 保持Server地址列表一致
A、客户端使用的server地址列表必须和集群所有server的地址列表一致 。(如果客户端配置了集群机器列表的子集的话,也是没有问题的,只是少了客户端的容灾 。)
B、集群中每个server的zoo.cfg中配置机器列表必须一致 。
2.10.2 独立的事务日志输出
对于每个更新操作,ZK都会在确保事务日志已经落盘后,才会返回客户端响应 。因此事务日志的输出性能在很大程度上影响ZK的整体吞吐性能 。强烈建议是给事务日志的输出分配一个单独的磁盘 。
2.10.3 配置合理的JVM堆大小
确保设置一个合理的JVM堆大小,如果设置太大,会让内存与磁盘进行交换,这将使ZK的性能大打折扣 。例如一个4G内存的机器的,如果你把JVM的堆大小设置为4G或更大,那么会使频繁发生内存与磁盘空间的交换,通常设置成3G就可以了 。当然,为了获得一个最好的堆大小值,在特定的使用场景下进行一些压力测试 。
推荐阅读
- 物业管理处年终工作总结 物业管理工作总结
- Zookeeper分布式服务注册中心
- CentOS 7 时间管理和设置
- 系统管理员入门:排除故障
- 十几年linux运维工程师的工作经验分享
- 华为防火墙的管理方式介绍及配置
- zookeeper简要介绍
- 2021年垂钓管理办法 长江10年禁渔期可以钓鱼吗
- 小公司请多做减法,少谈管理
- 健康管理师怎么考需要什么条件 健康管理师证怎么考有什么条件