En este tema, exploraremos los conceptos de brokers y clústeres en Apache Kafka. Estos son componentes fundamentales que permiten a Kafka ser una plataforma de mensajería distribuida y escalable.
¿Qué es un Broker?
Un broker en Kafka es un servidor que almacena datos y sirve a los productores y consumidores. Cada broker puede manejar cientos de miles de particiones y millones de mensajes por segundo. Los brokers son responsables de:
- Almacenar mensajes: Los brokers almacenan los mensajes en el disco y los mantienen hasta que los consumidores los leen.
- Servir a los consumidores: Los brokers entregan los mensajes a los consumidores cuando estos los solicitan.
- Gestionar la replicación: Los brokers replican los datos entre ellos para asegurar la durabilidad y la disponibilidad.
Ejemplo de Configuración de un Broker
A continuación, se muestra un ejemplo de configuración básica de un broker en el archivo server.properties
:
# Identificador único del broker broker.id=1 # Directorio donde se almacenarán los logs log.dirs=/var/lib/kafka/logs # Dirección y puerto en los que el broker escuchará listeners=PLAINTEXT://:9092 # Número de hilos de red num.network.threads=3 # Número de hilos de I/O num.io.threads=8 # Tamaño del buffer de envío socket.send.buffer.bytes=102400 # Tamaño del buffer de recepción socket.receive.buffer.bytes=102400 # Tamaño del buffer de solicitud socket.request.max.bytes=104857600
¿Qué es un Clúster?
Un clúster de Kafka es un conjunto de brokers que trabajan juntos para proporcionar alta disponibilidad y escalabilidad. Los clústeres permiten distribuir la carga de trabajo y replicar los datos para asegurar la durabilidad.
Componentes de un Clúster
- Brokers: Los servidores que forman el clúster.
- Zookeeper: Un servicio centralizado para mantener la información de configuración y proporcionar servicios de coordinación. Zookeeper gestiona la información del clúster, como la lista de brokers y la asignación de particiones.
Ejemplo de Configuración de un Clúster
Para configurar un clúster, necesitas configurar múltiples brokers y un conjunto de servidores Zookeeper. Aquí hay un ejemplo de configuración de un clúster con tres brokers:
Broker 1 (server-1.properties
)
broker.id=1 log.dirs=/var/lib/kafka/logs listeners=PLAINTEXT://:9092 zookeeper.connect=localhost:2181
Broker 2 (server-2.properties
)
broker.id=2 log.dirs=/var/lib/kafka/logs listeners=PLAINTEXT://:9093 zookeeper.connect=localhost:2181
Broker 3 (server-3.properties
)
broker.id=3 log.dirs=/var/lib/kafka/logs listeners=PLAINTEXT://:9094 zookeeper.connect=localhost:2181
Configuración de Zookeeper
A continuación, se muestra un ejemplo de configuración de Zookeeper (zoo.cfg
):
tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181 initLimit=5 syncLimit=2 server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890
Ejercicio Práctico
Ejercicio 1: Configuración de un Clúster de Kafka
- Configura tres brokers: Crea tres archivos de configuración (
server-1.properties
,server-2.properties
,server-3.properties
) con los parámetros básicos mencionados anteriormente. - Configura Zookeeper: Configura un archivo
zoo.cfg
para un clúster de Zookeeper con tres nodos. - Inicia los servicios: Inicia los servicios de Zookeeper y los tres brokers de Kafka.
- Verifica la configuración: Usa la herramienta de línea de comandos de Kafka para verificar que los brokers están registrados en el clúster.
Solución
-
Archivos de configuración de los brokers:
server-1.properties
server-2.properties
server-3.properties
-
Archivo de configuración de Zookeeper:
tickTime=2000 dataDir=/var/lib/zookeeper clientPort=2181 initLimit=5 syncLimit=2 server.1=localhost:2888:3888 server.2=localhost:2889:3889 server.3=localhost:2890:3890
-
Iniciar los servicios:
# Iniciar Zookeeper bin/zookeeper-server-start.sh config/zookeeper.properties # Iniciar los brokers bin/kafka-server-start.sh config/server-1.properties bin/kafka-server-start.sh config/server-2.properties bin/kafka-server-start.sh config/server-3.properties
-
Verificar la configuración:
bin/zookeeper-shell.sh localhost:2181 ls /brokers/ids
Deberías ver una lista de los brokers registrados, por ejemplo,
[1, 2, 3]
.
Conclusión
En esta sección, hemos aprendido sobre los brokers y clústeres en Kafka. Los brokers son los servidores que almacenan y sirven los datos, mientras que los clústeres permiten la escalabilidad y la alta disponibilidad. También hemos visto cómo configurar un clúster de Kafka con múltiples brokers y Zookeeper. En el próximo módulo, profundizaremos en la producción y el consumo de mensajes en Kafka.
Curso de Kafka
Módulo 1: Introducción a Kafka
- ¿Qué es Kafka?
- Casos de Uso de Kafka
- Visión General de la Arquitectura de Kafka
- Configuración de Kafka
Módulo 2: Conceptos Básicos de Kafka
Módulo 3: Operaciones de Kafka
Módulo 4: Configuración y Gestión de Kafka
Módulo 5: Temas Avanzados de Kafka
- Ajuste de Rendimiento de Kafka
- Kafka en una Configuración Multi-Centro de Datos
- Kafka con Registro de Esquemas
- Kafka Streams Avanzado