以下列舉了運行和管理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)可用於監視虛擬內存統計信息,並根據應用程序的需要決定所需內存的最佳大小。無論如何,應該避免交換。
