2015-12-29 10 views
9

Hat Kafka einen offiziellen Weg (z. B. ein init.d-Skript), um Kafka beim Systemstart zu starten?Wie startet man Kafka beim Systemstart in Ubuntu 14.04 automatisch?

Die einzige offizielle Methode Kafka zu beginnen Ich habe gesehen ist:

nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 & 

ich eine @reboot Aufgabe in crontab -e zu verwenden versucht haben, aber es Kafka nicht gestartet wird. Einige Leute haben auch geschrieben benutzerdefinierte init.d

Es gibt auch benutzerdefinierte init.d Skripte (zB one, two, three) aber sie sind alle verschieden, und ich bin nicht vertraut genug mit init.d zu verstehen, die man, wenn überhaupt zu implementieren.

Wie starte ich Kafka beim Systemstart?

Antwort

10

Hier ist, wie ich Kafka konfigurieren automatisch 14.04 auf Ubuntu starten:

sudo su 
cp -R ~/kafka_2.11-0.10.0.1 /opt 
ln -s /opt/kafka_2.11-0.10.0.1 /opt/kafka 

Kopieren Sie die folgende Init-Skript /etc/init.d/kafka:

DAEMON_PATH=/opt/kafka/ 
PATH=$PATH:$DAEMON_PATH/bin 

# See how we were called. 
case "$1" in 
    start) 
     # Start daemon. 
     echo "Starting Zookeeper"; 
     nohup $DAEMON_PATH/bin/zookeeper-server-start.sh -daemon /$DAEMON_PATH/config/zookeeper.properties 2> /dev/null && \ 
     echo "Starting Kafka"; 
     nohup $DAEMON_PATH/bin/kafka-server-start.sh -daemon /$DAEMON_PATH/config/server.properties 2> /dev/null 
     ;; 
    stop) 
     # Stop daemons. 
     echo "Shutting down Zookeeper"; 
     pid=`ps ax | grep -i 'org.apache.zookeeper.server' | grep -v grep | awk '{print $1}'` 
     if [ -n "$pid" ] 
      then 
      kill -9 $pid 
     else 
      echo "Zookeeper was not Running" 
     fi 
     echo "Shutting down Kafka"; 
     pid=`ps ax | grep -i 'kafka.Kafka' | grep -v grep | awk '{print $1}'` 
     if [ -n "$pid" ] 
      then 
      kill -9 $pid 
     else 
      echo "Kafka was not Running" 
     fi 
     ;; 
    restart) 
     $0 stop 
     sleep 2 
     $0 start 
     ;; 
    status) 
     pid=`ps ax | grep -i 'org.apache.zookeeper.server' | grep -v grep | awk '{print $1}'` 
     if [ -n "$pid" ] 
      then 
      echo "Zookeeper is Running as PID: $pid" 
     else 
      echo "Zookeeper is not Running" 
     fi 
     pid=`ps ax | grep -i 'kafka.Kafka' | grep -v grep | awk '{print $1}'` 
     if [ -n "$pid" ] 
      then 
      echo "Kafka is Running as PID: $pid" 
     else 
      echo "Kafka is not Running" 
     fi 
     ;; 
    *) 
     echo "Usage: $0 {start|stop|restart|status}" 
     exit 1 
esac 

exit 0 

Machen Sie den kafka Service mit diese Befehle:

chmod 755 /etc/init.d/kafka 
update-rc.d kafka defaults 

Jetzt sollten Sie in der Lage sein, den kafkas Service so zu starten und zu stoppen:

Wenn Sie den Kafka-Dienst später entfernen möchten, führen Sie update-rc.d -f kafka remove.

+0

Hey, danke für deine Antwort. Ich will genau das machen. Obwohl meine Version von Ubuntu und die Version von Kafka etwas später zu sein scheinen und die Maschine, die ich damit beauftragt habe, scheint nicht den "kafkakafka_2.11-0.10.0.1" Gegenstand in meinem Haus zu haben (~) Verzeichnis. Soll das nur das Kafka-Installationsverzeichnis sein, wo immer das ist? Einfach nochmal nachschauen, da ich Kafka hier nicht selbst installiert habe oder den Server nicht aufgestanden habe, sondern den Kafka nur beim Start automatisiert habe. Ich bin auch relativ neu bei Unix. Vielen Dank! – ThePartyTurtle

+1

Ja, das ist das Verzeichnis, das du nach dem Herunterladen und Extrahieren der tgz-Datei von https://kafka.apache.org/downloads erhältst. –

+0

Gotcha, danke! – ThePartyTurtle