sleighzy.kafka

Apache Kafka

Lint Code Base Molecule

Rol de Ansible para instalar y configurar Apache Kafka 3.5.1

Apache Kafka es una plataforma de transmisión de eventos distribuida que utiliza temas de publicación-suscripción. Las aplicaciones y los componentes de transmisión pueden producir y consumir mensajes suscribiéndose a estos temas. Kafka es extremadamente rápido, manejando megabytes de lecturas y escrituras por segundo de miles de clientes. Los mensajes se persisten y se replican para evitar la pérdida de datos. Los flujos de datos están particionados y pueden escalarse de manera elástica sin tiempo de inactividad.

ADVERTENCIA

Este rol de Ansible no maneja el proceso de migración de versiones anteriores de Kafka. Asegúrese de leer la documentación de actualización y actualizar los archivos de configuración relevantes antes de ejecutar este rol.

https://kafka.apache.org/35/documentation.html#upgrade

Por ejemplo, dependiendo de cómo actualice, el archivo server.properties puede necesitar que se agreguen las siguientes propiedades para reflejar su versión actual antes de ejecutar este playbook de Ansible:

  • inter.broker.protocol.version
  • log.message.format.version

Plataformas Soportadas

  • RedHat 6
  • RedHat 7
  • RedHat 8
  • Debian 10.x
  • Ubuntu 18.04.x
  • Ubuntu 20.04.x

Requisitos

Se puede usar el siguiente rol de Apache ZooKeeper desde Ansible Galaxy si es necesario.

ansible-galaxy install sleighzy.zookeeper

Se requieren las versiones mínimas Ansible 2.9.16 o 2.10.4 para sortear un problema con ciertos núcleos que han roto la verificación de estado de systemd. El mensaje de error "El servicio está en estado desconocido" se mostrará al intentar iniciar el servicio a través del rol de Ansible y la tarea fallará. El servicio se iniciará como se espera si se ejecuta el comando systemctl start en el host físico. Consulte https://github.com/ansible/ansible/issues/71528 para más información.

Variables del Rol

Variable Predeterminado Comentarios
kafka_download_base_url https://downloads.apache.org/kafka
kafka_download_validate_certs
kafka_version 3.5.1
kafka_scala_version 2.13
kafka_create_user_group verdadero
kafka_user kafka
kafka_group kafka
kafka_root_dir /opt
kafka_dir {{ kafka_root_dir }}/kafka
kafka_start
kafka_restart
kafka_log_dir /var/log/kafka
kafka_broker_id 0
kafka_java_heap -Xms1G -Xmx1G
kafka_background_threads 10
kafka_listeners PLAINTEXT://:9092
kafka_num_network_threads 3
kafka_num_io_threads 8
kafka_num_replica_fetchers 1
kafka_socket_send_buffer_bytes 102400
kafka_socket_receive_buffer_bytes 102400
kafka_socket_request_max_bytes 104857600
kafka_replica_socket_receive_buffer_bytes 65536
kafka_data_log_dirs /var/lib/kafka/logs
kafka_num_partitions 1
kafka_num_recovery_threads_per_data_dir 1
kafka_log_cleaner_threads 1
kafka_offsets_topic_replication_factor 1
kafka_transaction_state_log_replication_factor 1
kafka_transaction_state_log_min_isr 1
kafka_log_retention_hours 168
kafka_log_segment_bytes 1073741824
kafka_log_retention_check_interval_ms 300000
kafka_auto_create_topics_enable falso
kafka_delete_topic_enable verdadero
kafka_default_replication_factor 1
kafka_group_initial_rebalance_delay_ms 0
kafka_zookeeper_connect localhost:2181
kafka_zookeeper_connection_timeout 6000
kafka_bootstrap_servers localhost:9092
kafka_consumer_group_id kafka-consumer-group
kafka_server_config_params Diccionario general que se cargará en server.properties

Vea log4j.yml para obtener las variables disponibles relacionadas con log4j.

Iniciar y Detener servicios de Kafka usando systemd

  • El servicio Kafka se puede iniciar con: systemctl start kafka
  • El servicio Kafka se puede detener con: systemctl stop kafka

Iniciar y Detener servicios de Kafka usando initd

  • El servicio Kafka se puede iniciar con: service kafka start
  • El servicio Kafka se puede detener con: service kafka stop

Propiedades Predeterminadas

Propiedad Valor
Conexión a ZooKeeper localhost:2181
Servidores de bootstrap de Kafka localhost:9092
ID del grupo consumidor de Kafka kafka-consumer-group
ID del corredor de Kafka 0
Número de particiones 1
Período de retención de archivos de registro de datos 168 horas
Habilitar creación automática de temas falso
Habilitar eliminación de temas verdadero

Puertos

Puerto Descripción
9092 Puerto de escucha de Kafka

Directorios y Archivos

Directorio / Archivo
Directorio de instalación de Kafka (enlace a la versión instalada) /opt/kafka
Directorio de configuración de Kafka (enlace a /opt/kafka/config) /etc/kafka
Directorio para almacenar archivos de datos /var/lib/kafka/logs
Directorio para almacenar archivos de registro /var/log/kafka
Servicio de Kafka /usr/lib/systemd/system/kafka.service

Ejemplo de Playbook

Agregue lo siguiente a un playbook para ejecutar ese rol contra los hosts que pertenecen al grupo kafka-nodes.

- hosts: kafka-nodes
  roles:
    - sleighzy.kafka

Linting

El linting debe hacerse usando ansible-lint.

pip3 install ansible-lint --user

ansible-lint -c ./.ansible-lint .

Pruebas

Este módulo utiliza el marco de pruebas Ansible Molecule. Este conjunto de pruebas crea un clúster de Kafka y ZooKeeper que consta de tres nodos que se ejecutan dentro de contenedores Docker. Cada contenedor ejecuta un sistema operativo diferente para probar las plataformas soportadas por este rol de Ansible.

Según la [guía de instalación de Molecule], esto debe hacerse usando un entorno virtual. Los comandos a continuación crearán un entorno virtual de Python e instalarán Molecule incluyendo el controlador de Docker.

$ python3 -m venv molecule-venv
$ source molecule-venv/bin/activate
(molecule-venv) $ pip3 install ansible docker "molecule-plugins[docker]"

Ejecute el playbook y las pruebas. Los errores de linting deben corregirse antes de que Molecule ejecute cualquier prueba. Esto ejecutará todas las pruebas y luego destruirá los contenedores Docker.

molecule test

El comando siguiente se puede usar para ejecutar el playbook sin las pruebas. Esto se puede ejecutar múltiples veces al hacer cambios en el rol, y asegurarse de que las operaciones sean idempotentes.

molecule converge

Los siguientes comandos pueden usarse solo para ejecutar las pruebas sin destruir todo. El comando molecule verify se puede repetir para cada ejecución de prueba.

molecule create
molecule converge
molecule verify

Destruir pruebas de Molecule y contenedores Docker.

molecule destroy

Licencia

![Licencia MIT]

Acerca del proyecto

Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu

Instalar
ansible-galaxy install sleighzy.kafka
Licencia
mit
Descargas
7.1k
Propietario