Instalación de un clúster de Apache Kafka en Debian 12
08:51, 30.07.2026
Guía rápida: Configuración de Apache Kafka en Debian 12
Apache Kafka es una potente plataforma distribuida de transmisión de eventos diseñada para la distribución de mensajes con alto rendimiento y baja latencia.
La instalación de Kafka en Debian 12 requiere una configuración minuciosa para garantizar una transmisión de datos fiable y escalable.
Esta guía ofrece un tutorial paso a paso para instalar y configurar un clúster de Apache Kafka en Debian 12, destacando los pasos y configuraciones esenciales.
Principios básicos y elementos de la arquitectura de Kafka
La arquitectura de Kafka se basa en varios componentes fundamentales:
- Broker: Kafka funciona como un clúster compuesto por uno o más servidores denominados «broker» que gestionan el almacenamiento y la distribución de mensajes.
- Temas: Categorías con nombre a las que se envían los registros y de las que se leen.
- Productores: Aplicaciones que envían registros a los temas de Kafka.
- Consumidores: Aplicaciones que leen registros de los temas.
- Particiones: Temas de Kafka divididos en secciones para una mejor distribución entre varios brokers.
- Replicación: Cada partición se replica; una de ellas se encarga de las solicitudes de lectura y escritura, mientras que las demás replican los datos.
- Streams: Una biblioteca de procesamiento de flujos para aplicaciones de streaming en tiempo real y microservicios.
- ZooKeeper (opcional): Anteriormente utilizado para la gestión de metadatos, ahora sustituido por el modo Kafka Raft (KRaft) para una mejor autogestión.
Instalación de Apache Kafka en Debian 12
Instalar Java 8 o posterior en Debian 12
Apache Kafka requiere Java 8 o posterior para funcionar. Sigue estos pasos para instalar Java:
- Actualiza el índice de paquetes:
sudo apt update - Instala el paquete OpenJDK:
sudo apt install -y openjdk-11-jdk - Comprueba la instalación de Java:
java -version
Descarga la última versión de Kafka
- Ve a página de descargas de Apache Kafka para descargar la última versión.
- Descarga Kafka utilizando wget o curl:
wget https://downloads.apache.org/kafka/3.x.x/kafka_2.13-3.x.x.tgz
Descomprime el archivo binario de Kafka
Extrae el archivo descargado:
tar -xzf kafka_2.13-3.x.x.tgz
Mueve la carpeta extraída a /opt:
sudo mv kafka_2.13-3.x.x /opt/kafka
Iniciar Kafka con el modo KRaft (KRaft)
El modo KRaft elimina la necesidad de utilizar ZooKeeper, lo que simplifica la gestión del clúster de Kafka. Los archivos de configuración de KRaft se encuentran en /opt/kafka/config/kraft/.
Configurar KRaft para un clúster de Kafka
- Crea un nuevo archivo de configuración o edita el archivo server.properties existente:
sudo nano /opt/kafka/config/kraft/server.properties - Añade o modifica las siguientes propiedades:
process.roles=broker,controller node.id=1 controller.quorum.voters=1@<broker-ip>:9093 listeners=PLAINTEXT://<broker-ip>:9092,CONTROLLER://<broker-ip>:9093 log.dirs=/var/lib/kafka/data
Modificar el directorio de registros
Asegúrate de que los registros de Kafka se almacenen en un directorio con suficiente espacio en disco; por defecto, los registros se almacenan en el directorio «/tmp/kraft-combined-logs».
Para garantizar que los registros se guarden en un directorio con espacio suficiente, actualice log.dirs en server.properties si es necesario:
log.dirs=/nueva/ruta/a/los/registros-de-kafka
Genera un ID de clúster de Kafka
El ID de clúster es lo que identifica a un clúster en el modo KRaft.
- Genera el ID de clúster:
/opt/kafka/bin/kafka-storage.sh random-uuid - Guarda el ID generado y formatea el directorio de registros:
/opt/kafka/bin/kafka-storage.sh format -t <cluster-id> -c /opt/kafka/config/kraft/server.properties
Convertir el directorio de registros de Kafka al formato KRaft
Utilizando el ID de clúster que hemos generado en el paso anterior, podemos formatear los directorios de registros. Esto se hace para que cada broker de Kafka disponga de un directorio en el que guardar su registro (si hay varios nodos en el clúster).
- Utilizando el ID del clúster y el siguiente comando, formatee el directorio de registros:
/opt/kafka/bin/kafka-storage.sh format -t <uuid> -c /opt/kafka/config/kraft/server.properties - Sustituya el UUID URaeRekUQAyy8wLMNX2Q-w para que el comando quede así:
/opt/kafka/bin/kafka-storage.sh format -t URaeRekUQAyy8wLMNX2Q-w \ -c /opt/kafka/config/kraft/server.properties
Como alternativa, puede utilizar el siguiente comando:
/opt/kafka/bin/kafka-storage.sh format \ -t /opt/kafka/bin/kafka-storage.sh random-uuid \ -c /opt/kafka/config/kraft/server.properties
Ajustar el tamaño del montón de Kafka
Para que Kafka tenga un rendimiento estable, puedes configurar el tamaño del montón en consecuencia; el tamaño del montón es, básicamente, la memoria que pertenece a la Máquina Virtual de Java (JVM) que ejecuta Kafka. Debe asegurarse de que el tamaño del montón sea suficiente para gestionar el volumen de tráfico que su servidor tendría que procesar.
Uno de los parámetros que utiliza memoria e influye en el tiempo que Kafka almacena los datos es log.retention.hours, cuyo valor predeterminado es de 7 días. También se pueden utilizar otros parámetros como log.retention.minutes, log.retention.ms, o log.retention.bytes también pueden utilizarse; estos parámetros pueden modificarse en el archivo /opt/kafka/config/kraft/server.properties.
Por ejemplo, para conservar los datos durante 8 horas, utiliza la siguiente línea:
log.retention.hours=8
A continuación, guarda el archivo y sal de él.
Inicio del broker de Kafka
Iniciar el broker de Kafka en primer plano
Ejecuta el broker de Kafka manualmente:
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
Ejecutar el broker de Kafka como servicio de systemd
- Crear un archivo de servicio kafka.service:
sudo nano /etc/systemd/system/kafka.service
- Añade la siguiente configuración:
[Unit] Description=Servicio de Apache Kafka After=network.target
[Service] Type=simple ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties Restart=on-failure User=kafka
[Install] WantedBy=multi-user.target
- Recarga systemd e inicia Kafka:
sudo systemctl daemon-reload sudo systemctl start kafka sudo systemctl enable kafka
Creación de temas, envío y recepción de mensajes en Kafka
Tus productores pueden publicar mensajes en los temas de Kafka y los consumidores pueden suscribirse y leer registros de varios temas con la configuración adecuada.
Crear un tema manualmente
Para crear un tema de prueba en el servidor/broker de Kafka, utiliza:
/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server <ip-del-broker>:9092 --partitions 1 --replication-factor 1
Ver los temas disponibles de Kafka
Para ver los temas disponibles de Kafka, utiliza:
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server <ip-del-broker>:9092
Escribir (producir) y leer (consumir) mensajes en temas de Kafka
- Para producir un mensaje, utiliza el siguiente comando:
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 \ --topic kafka-topic-test
Cuando se ejecute, aparecerá el siguiente indicador: >
- Escribe tu mensaje y pulsa INTRO:
>Hola, Kafka, este es mi mensaje
- Para consumir el mensaje, utiliza:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafka-topic-test
Eliminar temas de Kafka
Para eliminar un tema, utiliza:
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic <nombre-del-tema>
Para eliminar todos los temas, utiliza:
for i in /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092;do /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic $i; done
Configuración de un clúster de Kafka de tres nodos
Configure varios brokers creando archivos server.properties independientes para cada nodo con un node.id, listeners y ajustes de log únicos. Ajuste el parámetro `controller.quorum.voters` para incluir todos los nodos.
Gestión de clústeres de Kafka a través de la interfaz de usuario
Herramientas como Kafka Manager, Conduktor y Lenses.io proporcionan interfaces gráficas para supervisar y gestionar clústeres de Kafka. Según nuestra experiencia, estas herramientas facilitan la administración.
La configuración de Apache Kafka en Debian 12 con KRaft permite un flujo de mensajes robusto y descentralizado, así como canalizaciones de datos escalables, elementos esenciales para las aplicaciones modernas basadas en datos.