Como se dice en el documento de ZooKeeper, es necesario supervisarlo con una herramienta como daemontools. Pero el documento no proporciona ningún ejemplo, y la única manera que conozco para iniciar ZooKeeper es ejecutar bin/zkServer.sh start. Planeo usar supervisord para hacer el trabajo, pero la forma de escribir la sección [program: zookeeper] está más allá de mí. Cualquier ejemplo será genial. Gracias.Supervise ZooKeeper con Supervisord
Hasta ahora hay dos soluciones:
- utilizar la última código de GitHub, proporciona opciones stopasgroup y killasgroup.
- ejecute bin/zkServer.sh print-cmd, y copie el resultado en las opciones de 'comando' de supervisord, elimine el argumento de canalización y agregue stdout_logfile, stderr_logfile. Como la siguiente:
[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
posible duplicado de [supervisord stopping child processes] (http://stackoverflow.com/questions/9090683/supervisord-stopping-child-processes) –