从java程序启动zookeeper服务器的最佳方法

时间:2015-07-07 20:00:27

标签: java apache-zookeeper

我有两个问题,我找不到任何受欢迎/广泛接受的解决方案:

  1. 使用Java程序启动zookeeper服务器的最简单方法是什么?

  2. 并且,是否可以将服务器添加到zookeeper集群,而无需手动转到每台计算机并使用新节点的id和ip:port条目更新其配置文件?

  3. 有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果要从Java代码启动新的ZooKeeper服务器进程,则可以像从Java启动任何其他外部进程一样进行,例如:使用ProcessBuilder。在ZooKeeper的情况下没有什么特别之处。您可以查看有关实际命令应该如何的官方文档。如果你想监督生产过程的使用会变得复杂,所以在这种情况下最好使用你的操作系统上提供的东西(例如暴发户,runit等......),或者看看参展商的代码示例:https://github.com/Netflix/exhibitor

如果您询问从Java程序启动ZooKeeper集群,那么您会进一步复杂化,因为您基本上需要监控不同主机上的多个ZooKeeper JVM进程。另请参阅参展商。

如果您的问题是关于在与Java代码(嵌入式)相同的JVM进程内启动ZooKeeper服务器实例,那么它也是可能的。请记住一些重要细节,看看这个答案: Is it possible to start a zookeeper server instance in process, say for unit tests?

关于第二个问题,最近在3.5.0中添加了对动态群集重新配置的真正支持:http://zookeeper.apache.org/doc/trunk/zookeeperReconfig.html

在此之前,您仍然可以将服务器添加到zookeeper群集,而无需手动转到每台计算机并更新其配置,但您必须使用像Chef,Puppet或类似的配置管理工具。 ,在这种情况下,您还需要重新启动群集以获取新配置。