Saltar al contenido

¿Cómo iniciar automáticamente Kafka al iniciar el sistema en Ubuntu?

este problema se puede resolver de diferentes formas, sin embargo te mostramos la que en nuestra opinión es la respuesta más completa.

Solución:

Así es como configuro Kafka para que se inicie automáticamente en 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

Copie el siguiente script de inicio en /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"
        exit 1
esac

exit 0

Realice el servicio kafka con estos comandos:

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

Ahora debería poder iniciar y detener el servicio kafka de esta manera:

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

Si desea eliminar el servicio Kafka más tarde, ejecute update-rc.d -f kafka remove.

Descarga Kafka

cd /opt
sudo wget http://mirror.hosting90.cz/apache/kafka/2.5.0/kafka-2.5.0-src.tgz
sudo tar -zxvf kafka-2.5.0-src.tgz
sudo mv kafka-2.5.0-src kafka
sudo rm kafka-2.5.0-src.tgz
cd kafka
sudo ./gradlew jar -PscalaVersion=2.11.12

Instalar Zookeeper

sudo vi /etc/systemd/system/zookeeper.service

Editar zookeeper.service

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=root
ExecStart=/opt/kafka/bin/zookeeper-server-start.sh opt/kafka/config/zookeeper.properties
ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Iniciar Zookeeper

sudo systemctl enable zookeeper.service

sudo systemctl start zookeeper.service

sudo systemctl status zookeeper.service

activo (corriendo)

Instalar Kafka

sudo vi /etc/systemd/system/kafka.service

Editar kafka.service

[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=root
ExecStart=/bin/sh -c '/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /opt/kafka/kafka.log 2>&1'
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Iniciar Kafka

sudo systemctl enable kafka.service

sudo systemctl start kafka.service

sudo systemctl status kafka.service

activo (corriendo)

Prueba las obras de Kafka

crear tema

sudo bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic test-topic

poner mensajes al tema

sudo bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic  
> test message1
> test messate2
^C

leer mensajes del tema

sudo bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test-topic
test message1
test messate2
^C

Un enfoque sencillo es utilizar systemd. Debe tener en cuenta que al inicio las variables de entorno como JAVA_HOME aún no están cargados, por lo que debemos introducirlos en el sistema. Una buena solución es crear un archivo llamado profile y agregue toda la variable necesaria a eso:

# /home/kafka/profile
JAVA_HOME=/opt/jdk8
KAFKA_HOME=/opt/kafka

Suponiendo que haya instalado Kafka en la ruta /opt/kafka, para que Kafka se ejecute automáticamente después del inicio de Ubuntu (probado en Ubuntu 16.04 y centOS7 y supongo que funciona en cualquier distribución con el soporte del systemd) haga el siguiente comando:

sudo nano /etc/systemd/system/kafka.service  # open file to add service informations

Ahora agregue el siguiente contenido al archivo

[Unit]
Description=Kafka Daemon
Wants=syslog.target

# suppose you have a service named zookeeper that it start zookeeper and we want Kafka service run after the zookeeper service
After=zookeeper.service

[Service]    
Type=forking

# the user whom you want run the Kafka start and stop command under
User=kafka    

# the file path that contains envirnment variables
EnvironmentFile=/home/kafka/profile

# the directory that the commands will run there   
WorkingDirectory=/home/kafka/ 

# Kafka server start command
ExecStart=/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

# Kafka server stop command
ExecStop=/opt/kafka/bin/kafka-server-stop.sh -daemon

TimeoutSec=30
Restart=on-failure

[Install]
WantedBy=multi-user.target

Nota: Como Kafka necesita que el cuidador del zoológico lo conecte a la hora de inicio, supuse que también tenemos un servicio de cuidador del zoológico y configuré el servicio de Kafka para que se ejecute después de que se inicie el servicio de cuidador del zoológico.

Ahora, después de guardar el kafka.service , simplemente ejecute el siguiente comando para crear un enlace del servicio Kafka y se iniciará cada vez que reinicie el sistema operativo:

sudo systemctl enable kafka

Ahora puede iniciar el servicio Kafka usando el comando:

sudo systemctl start kafka.service

y comprobar el estado del servicio:

sudo systemctl status kafka.service

Finalizando este artículo puedes encontrar las notas de otros sys admins, tú de igual forma tienes la habilidad dejar el tuyo si dominas el tema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *