2012-08-16 18 views
11

Wie in ZooKeeper's Dokument gesagt, ist es notwendig, es mit einem Tool wie daemontools zu überwachen. Das Dokument enthält jedoch keine Beispiele. Die einzige Möglichkeit, um ZooKeeper zu starten, ist die Ausführung von bin/zkServer.sh start. Ich plane, Supervisord zu benutzen, um den Job zu machen, aber wie man den Abschnitt [Programm: Tierpfleger] schreibt, ist jenseits von mir. Jedes Beispiel wird großartig sein. Vielen Dank.ZooKeeper mit Supervisord überwachen

Bisher sind es zwei Lösungen:

  1. den neuesten Code von Github verwenden, bietet es stopasgroup und killasgroup Optionen.
  2. Führen Sie bin/zkServer.sh print-cmd aus und kopieren Sie die Ausgabe in die 'command' -Optionen von supervisord, entfernen Sie das Pipe-Argument und fügen Sie stdout_logfile, stderr_logfile, hinzu. Wie folgt aus:
 
    [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

mögliches Duplikat von [supervisord stoppende untergeordnete Prozesse] (http://stackoverflow.com/questions/9090683/supervisord-stopping-child-processes) –

Antwort

10

Es gibt eine ähnliche Frage here

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

Diese Frage erwähnt ein Problem, den Prozess zu töten, und ich bin nicht sicher, ob es eine Lösung noch ist.

+0

Es scheint, dass der letzte Supervisord diese Funktion gewonnen hat. doc hier http://supervisord.org/configuration.html option: stopasgroup –

+0

@Jerry: "Eingeführt: 3.0a13". Die aktuelle Version ist 3.0a12, die Dokumentation scheint aus dem GitHub-Repository generiert zu werden. –

+0

@MartijnPieters Kein Wunder, dass es nicht funktioniert ... –