2012-08-16 10 views
11

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:

  1. utilizar la última código de GitHub, proporciona opciones stopasgroup y killasgroup.
  2. 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 
+0

posible duplicado de [supervisord stopping child processes] (http://stackoverflow.com/questions/9090683/supervisord-stopping-child-processes) –

Respuesta

10

Hay una pregunta similar here

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

Esa pregunta menciona un problema matar el proceso, y no estoy seguro de si hay una solución todavía.

+0

Parece que el supervisor más reciente ha obtenido esta característica. doc aquí http://supervisord.org/configuration.html opción: stopasgroup –

+0

@Jerry: "Introducido: 3.0a13". La versión actual es 3.0a12, la documentación parece ser generada desde el repositorio de GitHub. –

+0

@MartijnPieters No es de extrañar que no funcione ... –

Cuestiones relacionadas