11

正如 ZooKeeper 的文档中所说,有必要使用 daemontools 之类的工具对其进行监督。但是文档没有提供任何示例,我知道启动 ZooKeeper 的唯一方法是运行 bin/zkServer.sh start。我打算使用 supervisord 来完成这项工作,但是如何编写 [program:zookeeper] 部分超出了我的范围。任何例子都会很棒。谢谢。

到目前为止,有两种解决方案:

  1. 使用来自 github 的最新代码,它提供 stopasgroup 和 killasgroup 选项。
  2. 执行 bin/zkServer.sh print-cmd,并将输出复制到 supervisord 的 'command' 选项,删除管道参数,并添加 stdout_logfile、stderr_logfile。如下所示:
    [程序:动物园管理员]
    命令 = /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:/home/jizhang/Applications/zookeeper/bin/../lib/netty-3.2.2.Final.jar:/home/jizhang/Applications/zookeeper/bin/../lib/log4j -1.2.15.jar:/home/jizhang/Applications/zookeeper/bin/../lib/jline-0.9.94.jar:/home/jizhang/Applications/zookeeper/bin/../zookeeper-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。
    stdout_logfile = /home/jizhang/Applications/zookeeper/zookeeper.out
    stderr_logfile = /home/jizhang/Applications/zookeeper/zookeeper.err
    自动重启 = 真
4

1 回答 1

10

这里有一个类似的问题

[program:zookeeper]
command=zkServer.sh start-foreground
autorestart=true
stopsignal=KILL

该问题提到了终止进程的问题,我不确定是否有解决方案。

于 2012-08-16T05:07:26.567 回答