使用Supervisord监控ZooKeeper

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。像以下这样:
[program:zookeeper] 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:/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.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

1
可能是重复的问题:supervisord停止子进程 - Martijn Pieters
嗨@JiZHANG,你使用supervisord的经验如何?你会推荐它来监督zookeeper吗?谢谢。 - jumping_monkey
1个回答

10

这里有一个类似的问题在这里

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

那个问题提到了一个杀死进程的问题,我不确定是否已经有解决方案。


最新的supervisord似乎已经具备了这个功能。文档在此处http://supervisord.org/configuration.html选项:stopasgroup - Jerry
@Jerry:“介绍:3.0a13”。当前版本是3.0a12,文档似乎是从GitHub存储库生成的。 - Martijn Pieters
抛出此错误:FATAL Exited too quickly (process log may have details) - Ritesh Sinha
@user-4870385 在启动zookeeper时请使用"start-foreground"而不是"start"。 - ElSioufy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接