正如在ZooKeeper的文档中所说的那样,有必要使用daemontools这样的工具来监督它。但是文档没有提供任何示例,我知道启动ZooKeeper的唯一方法是运行bin / zkServer.sh start。我打算用supervisord来完成这项工作,但是如何编写[program:zookeeper]部分已经超出了我的范围。任何例子都会很棒。谢谢。
到目前为止,有两种解决方案:
- 使用来自github的最新代码,它提供了stopasgroup和killasgroup选项。
- 执行bin / zkServer.sh print-cmd,并将输出复制到supervisord的'command'选项,删除管道参数,并添加stdout_logfile,stderr_logfile。如下:
[方案:动物园管理员] command = /usr/lib/jvm/java-1.7.0-openjdk.x86_64/bin/java -Dzookeeper.log.dir =“。” -Dzookeeper.root.logger =“INFO,CONSOLE”-cp“/home/jizhang/Applications/zookeeper/bin/../build/classes:/home/jizhang/Applications/zookeeper/bin/../build/lib /*.jar:/home/jizhang/Applications/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/home/jizhang/Applications/zookeeper/bin/../lib/slf4j-api -1.6.1.jar:/家庭/几丈/应用/饲养员/ bin中/../ LIB /网状-3.2.2.Final.jar:/家庭/几丈/应用/饲养员/ bin中/../ lib中/ log4j的-1.2.15.jar:/家庭/几丈/应用/饲养员/ bin中/../ lib中/的JLine-0.9.94.jar:/家庭/几丈/应用/饲养员/ bin中/../饲养员-3.4.3 .jar:/ home / jizhang / Applications / zookeeper / bin /../ src / java / lib / * .jar:/ home / jizhang / Applications / zookeeper / bin /../ conf:“ - Dcom.sun.management .jmxremote -Dcom.sun.management.jmxremote.local.only = false org.apache.zookeeper.server.quorum.QuorumPeerMain“/home/jizhang/Applications/zookeeper/bin/../conf/zoo.cfg” stdout_logfile = /home/jizhang/Applications/zookeeper/zookeeper.out stderr_logfile = /home/jizhang/Applications/zookeeper/zookeeper.err autorestart = true