Instalación + Configuración Apache Kafka en Docker

Instalación + Configuración Apache Kafka en Docker

Kafka, sin ir más lejos, es un proyecto de intermediación de mensajes de código abierto desarrollado por la Apache Software Foundation y escrito en Scala. Entre sus características principales, podremos realizar:

  • Publicación y suscribción de flujos de registros (Bastante similar a una cola de mensajes o un sistema de mensajería).
  • Almacenar flujos de registros tolerante a fallos (Sistema de Buffer con un periodo de retención de mensajes).
  • Procesar flujos de registros a medida que ocurren.

Para poder tener nuestro Clúster de Kafka, a continuación, se detallan los pasos que se deberían realizar como, al final, se recomienda una Tool (Kafka Manager) para su management.

Kafka Diagram

NOTA: Todo el proceso de instalación está basado en Ubuntu 16.04.3 LTS (Xenial Release) con usuario “root” ya que con sudo hemos tenido problemas en algunos pasos. Se detallan en el lugar ocurrido.

NOTA 2: Recordar que hay que publicar cada puerto que se requiera y que durante el artículo se van mencionando, como por ejemplo en el caso de Kafka los puertos: 2181 y 9092.

Instalación del JDK de Oracle

Kafka necesita de JAVA 1.8 o superior, para ello deberemos realizar los siguientes pasos:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Para validar su correcta instalación podemos realizar java -version y debería devolvernos la versión instalada de JAVA correspondiente al paquete descargado.

Instalación de Kafka

La instalación de Kafka no es compleja, es más, se adjuntan en los binarios unos scripts de instalación que nos facilitan todo el proceso y nos crean una mínima configuración inicial para poder realizar nuestros primeros Test.

cd /opt
wget  http://apache.uvigo.es/kafka/0.10.0.0/kafka_2.11-0.10.0.0.tgz
tar -xvf kafka_2.11-0.10.0.0.tgz

Asignaremos los permisos de ejecución a los Scripts de instalación:

cd /opt/kafka_2.11-0.10.0.0/bin
sudo chmod +x *

Kafka necesita Zookeeper para poder realizar su acometido, por defecto, la distribución nos trae uno para poder realizar nuestros primeros test, lo ejecutaremos a partir de: bin/zookeeper-server-start.sh config/zookeeper.properties. Anteriormente comentado que con “sudo” hemos tenido errores, este uno:

root@09789754d6d9:/opt/kafka# bin/zookeeper-server-start.sh config/zookeeper.properties
Error: Could not find or load main class config.zookeeper.properties

Mediante otra consola arrancaremos el servidor de Kafka propiamente dicho: bin/kafka-server-start.sh config/server.properties

Las configuraciones de Zookeeper como de Kafka se encuentran en el directorio config donde podremos modificar, si a caso, los puertos de escucha, el directorio de almacenamiento, el número de particiones, etc.

Los puertos de escucha, por ejemplo de Zookeeper son el 2181 y su almacén por defecto es: /tmp/zookeeper. Kafka lo hace en este caso por defecto por el puerto 9092.

Una vez los tengamos en marcha, podremos verlo rápidamente por sus respectivos prompt. Ahora, una buena solución para poder administrarlos es Kafka Manager, para ello realizaremos los siguientes pasos para su instalación (recomendable sea en otro Docker).

Instalación de Kafka Manager

Para la instalación de Kafka Manager deberemos seguir los siguientes pasos:

wget https://github.com/yahoo/kafka-manager/archive/master.zip
unzip master.zip
mv kafka-manager-master/ kafka-manager
cd kafka-manager
sbt clean dist
cd  target/universal/
unzip  kafka-manager-1.1.zip
cd kafka-manager-1.1

Una vez lo tengamos todo preparado, procederemos a arrancar el Servicio con:

sudo bin/kafka-manager -Dkafka-manager.zkhosts=”IP_HOST_KAFKA:2181″

Si todo va bien, podremos acceder, vía HTTP mediante un navegador, a su panel de conexión con nuestro Cluster de Kafka, a continuación podremos ver el Panel una vez esté ya conectado:

Kafka Manager

En caso que nos de pereza su instalación, en Docker Hub encontramos algunas imagenes que nos pueden ayudar, por ejemplo: sheepkiller/kafka-manager. Para lanzarla en Docker es muy simple:

docker run -it --rm  -p HOST_PORT:9000 -e ZK_HOSTS="HOST_KAFKA:2181" -e APPLICATION_SECRET=letmein sheepkiller/kafka-manager

Autor: Joakim Vivas

comments powered by Disqus