En este módulo, aprenderemos cómo configurar Apache Kafka para que funcione de manera óptima en diferentes entornos. La configuración adecuada de Kafka es crucial para garantizar su rendimiento, fiabilidad y seguridad. Abordaremos los siguientes temas:

  1. Configuración Básica de Kafka
  2. Configuración de Productores y Consumidores
  3. Configuración de Temas y Particiones
  4. Configuración de Brokers y Clústeres
  5. Configuración de Seguridad en Kafka

  1. Configuración Básica de Kafka

Archivos de Configuración

Kafka utiliza varios archivos de configuración para definir su comportamiento. Los más importantes son:

  • server.properties: Configuración del broker de Kafka.
  • producer.properties: Configuración del productor.
  • consumer.properties: Configuración del consumidor.

Parámetros Clave en server.properties

A continuación, se presentan algunos de los parámetros más importantes en el archivo server.properties:

Parámetro Descripción Valor por Defecto
broker.id Identificador único del broker en el clúster. 0
log.dirs Directorios donde se almacenan los logs de Kafka. /tmp/kafka-logs
zookeeper.connect Dirección del servidor Zookeeper. localhost:2181
num.partitions Número predeterminado de particiones por tema. 1
log.retention.hours Tiempo en horas que los logs se retienen antes de ser eliminados. 168 (7 días)
log.segment.bytes Tamaño máximo de un segmento de log antes de crear uno nuevo. 1 GB
auto.create.topics.enable Permite la creación automática de temas cuando no existen. true

Ejemplo de server.properties

broker.id=1
log.dirs=/var/lib/kafka/logs
zookeeper.connect=localhost:2181
num.partitions=3
log.retention.hours=168
log.segment.bytes=1073741824
auto.create.topics.enable=true

  1. Configuración de Productores y Consumidores

Configuración del Productor

El archivo producer.properties contiene configuraciones específicas para los productores. Algunos parámetros clave son:

Parámetro Descripción Valor por Defecto
bootstrap.servers Lista de brokers para conectarse. N/A
key.serializer Serializador para las claves de los mensajes. N/A
value.serializer Serializador para los valores de los mensajes. N/A
acks Nivel de reconocimiento requerido del broker. 1
retries Número de reintentos en caso de fallo. 0

Ejemplo de producer.properties

bootstrap.servers=localhost:9092
key.serializer=org.apache.kafka.common.serialization.StringSerializer
value.serializer=org.apache.kafka.common.serialization.StringSerializer
acks=all
retries=3

Configuración del Consumidor

El archivo consumer.properties contiene configuraciones específicas para los consumidores. Algunos parámetros clave son:

Parámetro Descripción Valor por Defecto
bootstrap.servers Lista de brokers para conectarse. N/A
group.id Identificador del grupo de consumidores. N/A
key.deserializer Deserializador para las claves de los mensajes. N/A
value.deserializer Deserializador para los valores de los mensajes. N/A
auto.offset.reset Qué hacer cuando no hay un desplazamiento inicial en Kafka o si el desplazamiento actual no existe más. latest

Ejemplo de consumer.properties

bootstrap.servers=localhost:9092
group.id=my-group
key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
auto.offset.reset=earliest

  1. Configuración de Temas y Particiones

Creación de Temas

Puedes crear temas utilizando la herramienta de línea de comandos de Kafka:

kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1

Configuración de Particiones

El número de particiones afecta el paralelismo y la distribución de los datos. Puedes ajustar el número de particiones al crear un tema o modificar un tema existente:

kafka-topics.sh --alter --topic my-topic --partitions 5 --bootstrap-server localhost:9092

  1. Configuración de Brokers y Clústeres

Configuración de Brokers

Cada broker en un clúster debe tener un broker.id único. Además, los brokers deben estar configurados para conectarse al mismo servidor Zookeeper.

Configuración de Clústeres

Para configurar un clúster de Kafka, asegúrate de que todos los brokers tengan configuraciones consistentes y que estén conectados al mismo servidor Zookeeper. Aquí hay un ejemplo de configuración para un clúster de tres brokers:

  • Broker 1 (server.properties):
broker.id=1
log.dirs=/var/lib/kafka/logs1
zookeeper.connect=localhost:2181
  • Broker 2 (server.properties):
broker.id=2
log.dirs=/var/lib/kafka/logs2
zookeeper.connect=localhost:2181
  • Broker 3 (server.properties):
broker.id=3
log.dirs=/var/lib/kafka/logs3
zookeeper.connect=localhost:2181

  1. Configuración de Seguridad en Kafka

Autenticación y Autorización

Kafka soporta varios mecanismos de autenticación, incluyendo SSL y SASL. Aquí hay un ejemplo de configuración para habilitar SSL:

  • Configuración del Broker (server.properties):
listeners=SSL://localhost:9093
ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
ssl.keystore.password=test1234
ssl.key.password=test1234
ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
ssl.truststore.password=test1234
  • Configuración del Productor (producer.properties):
security.protocol=SSL
ssl.keystore.location=/var/private/ssl/kafka.client.keystore.jks
ssl.keystore.password=test1234
ssl.key.password=test1234
ssl.truststore.location=/var/private/ssl/kafka.client.truststore.jks
ssl.truststore.password=test1234
  • Configuración del Consumidor (consumer.properties):
security.protocol=SSL
ssl.keystore.location=/var/private/ssl/kafka.client.keystore.jks
ssl.keystore.password=test1234
ssl.key.password=test1234
ssl.truststore.location=/var/private/ssl/kafka.client.truststore.jks
ssl.truststore.password=test1234

Conclusión

En esta sección, hemos cubierto los aspectos fundamentales de la configuración de Kafka, incluyendo la configuración básica de los brokers, productores y consumidores, así como la configuración de temas, particiones y seguridad. Una configuración adecuada es esencial para garantizar el rendimiento y la fiabilidad de tu clúster de Kafka. En el próximo módulo, profundizaremos en la gestión de temas y el monitoreo de Kafka para mantener tu sistema funcionando sin problemas.

© Copyright 2024. Todos los derechos reservados