sleighzy.kafka
Apache Kafka
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
- Apache ZooKeeper
- Java 8 (obsoleto) / 11 / 17
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 | sí | |
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 | sí | |
kafka_restart | sí | |
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]
Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu
ansible-galaxy install sleighzy.kafka