2015-12-29 19 views
9

Kafka ha un modo ufficiale (ad esempio uno script init.d) per avviare Kafka all'avvio del sistema?Come avviare automaticamente Kafka all'avvio del sistema in Ubuntu 14.04?

L'unico metodo ufficiale per iniziare a Kafka che ho visto è:

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

ho cercato di utilizzare un compito @reboot in crontab -e tuttavia non è stato avviato Kafka. Alcune persone hanno anche scritto su misura init.d

Ci sono anche gli script init.d personalizzati disponibili (ad esempio one, two, three) ma sono tutti diversi e non sono abbastanza familiarità con init.d per capire che uno, se qualcuno da implementare.

Come avviare Kafka all'avvio del sistema?

risposta

10

Ecco come configuro Kafka per avviare automaticamente su Ubuntu 14.04:

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

Copiare il seguente script di init di /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 

rendere il servizio Kafka con questi comandi:

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

Ora si dovrebbe essere in grado di avviare e arrestare il servizio Kafka come questo:

sudo service kafka start 
sudo service kafka status 
sudo service kafka stop 

Se si desidera rimuovere successivamente il servizio Kafka, eseguire update-rc.d -f kafka remove.

+0

Ehi, grazie per la risposta. Sto cercando di fare proprio questo. Anche se la mia versione di Ubuntu e la versione di Kafka sembrano essere un po 'più tardi e la macchina a cui sono stato affidato questo compito non sembra avere l'elemento "kafkakafka_2.11-0.10.0.1" nella mia home (~) directory. Questo significa essere solo la directory di installazione di Kafka, dovunque sia? Solo un doppio controllo, dal momento che non ho installato personalmente Kafka qui o alzato il server, ma ho solo il compito di automatizzare Kafka all'avvio. Sono anche relativamente nuovo per Unix. Grazie! – ThePartyTurtle

+1

Sì, questa è la directory che ottieni dopo aver scaricato ed estratto il file tgz da https://kafka.apache.org/downloads –

+0

Gotcha, grazie! – ThePartyTurtle