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

  1. 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.
  2. Configura Zookeeper: Configura un archivo zoo.cfg para un clúster de Zookeeper con tres nodos.
  3. Inicia los servicios: Inicia los servicios de Zookeeper y los tres brokers de Kafka.
  4. 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

  1. Archivos de configuración de los brokers:

    • server-1.properties
    • server-2.properties
    • server-3.properties
  2. 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
    
  3. 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
    
  4. 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.

© Copyright 2024. Todos los derechos reservados