16. 使用Exhibitor管理ZooKeeper
Exhibitor是管理ZooKeeper服务实例的主管服务。由Netflix开发和开放源码,对于ZooKeeper的实例监控、备份/恢复、清理和可视化非常有用。
Note
Netflix Exhibitor主页位于 https://github.com/Netflix/exhibitor。
管理ZooKeeper集群需要大量的人力,这可能会导致人为错误,并在应用程序中产生非预期的问题。 ZooKeeper集合是静态配置的,每个单独实例的配置由一个配置文件组成。 该文件在每个ZooKeeper实例上必须相同。 集成的重新配置需要更新此配置文件以及重新启动服务器进程。 正确的配置对于ZooKeeper的正确运行至关重要。 除了正确的配置需求外,ZooKeeper还可能需要定期备份事务日志,清理日志等等。
Exhibitor提供了ZooKeeper的所有管理需求以及许多其他功能,具体如下:
- 监控:Exhibitor监控ZooKeeper服务器。 如果由于某些原因ZooKeeper服务器进程崩溃或未运行,Exhibitor将重写配置文件并重新启动服务器进程。
- 日志清理:Exhibitor可以定期清理ZooKeeper日志。 但是,在3.4.x之后的版本中,ZooKeeper提供了一个自动清除日志文件的选项。
- 备份/恢复:Exhibitor可以用来备份ZooKeeper事务日志文件。 它还允许对这些日志进行索引,通过这些日志可以搜索任何指定的事务并用于将给定的znode恢复到ZooKeeper实例。
- 群集范围配置:Exhibitor通过展示单个系统视图,可以将配置更改应用到整个ZooKeeper系统。
- 滚动配置更新:Exhibitor允许配置的热更新;这使得即使在ZooKeeper ensemble运行时也可以进行配置更新,而无需停机。
- REST API:Exhibitor公开了一个REST API,允许开发人员编写程序来执行ZooKeeper管理任务。
- 可视化:Exhibitor展示了ZooKeeper树的图形可视化。
- Exhibitor整合:Exhibitor和Curator可以配置一起工作。 它允许Curator实例更新对ZooKeeper ensemble所做的任何更改。
Tips
关于集成的更多细节可以在 http://curator.apache.org/exhibitor.html找到。
Exhibitor的二进制文件可以从Maven Central仓库获得。 有两个版本:
- Standalone:此版本提供了一个预配置的,自包含的基于Jetty的应用程序。 有关运行独立应用程序的详细信息,请访问 https://github.com/Netflix/exhibitor/wiki/Running-Exhibitor。
- Core:这个版本允许我们通过整合现有的应用程序来扩展Exhibitor。