13. ZooKeeper最佳实践
以下列举了运行和管理ZooKeeper ensemble的一些最佳实践:
- ZooKeeper数据目录包含快照和事务日志文件。如果
autopurge
选项未启用,定期清理目录是一个好习惯。另外,管理员可能希望保留这些文件的备份,具体取决于应用程序的需要。但是,由于ZooKeeper是一个复制服务,我们只需要备份整个ensemble中一台服务器的数据即可。 - ZooKeeper使用Apache log4j作为其日志记录基础设施。随着日志文件的规模越来越大,建议使用内置的log4j特性来设置日志文件的
auto-rollover
功能。 - 客户端在其连接字符串中使用的ZooKeeper服务器列表必须与每个ZooKeeper服务器所拥有的ZooKeeper服务器列表相匹配。如果列表不匹配,可能会出现奇怪的行为。
- 每个Zookeeper服务器配置文件中的服务器列表应该与ensemble的其他成员一致。
- 如前所述,ZooKeeper事务日志必须在专用设备中进行配置。这对于从ZooKeeper获得最佳性能非常重要。
- 应该谨慎选择Java堆大小。在ZooKeeper服务器中不应该允许交换(swapping)。如果ZooKeeper服务器拥有相当高的内存(RAM),情况会更好。
- 系统监视工具(如
vmstat
)可用于监视虚拟内存统计信息,并根据应用程序的需要决定所需内存的最佳大小。无论如何,应该避免交换。