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:
- Configuración Básica de Kafka
- Configuración de Productores y Consumidores
- Configuración de Temas y Particiones
- Configuración de Brokers y Clústeres
- Configuración de Seguridad en Kafka
- 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
- 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
- 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:
- 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 2 (
server.properties
):
- Broker 3 (
server.properties
):
- 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.
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