sleighzy.kafka
Apache Kafka
Rôle Ansible pour installer et configurer Apache Kafka 3.5.1
Apache Kafka est une plateforme de diffusion d'événements distribuée utilisant des sujets de publication-abonnement. Les applications et les composants de diffusion peuvent produire et consommer des messages en s'abonnant à ces sujets. Kafka est extrêmement rapide, traitant des mégaoctets de lectures et d'écritures par seconde provenant de milliers de clients. Les messages sont conservés et répliqués pour éviter toute perte de données. Les flux de données sont partitionnés et peuvent être évolutifs de manière élastique sans temps d'arrêt.
AVERTISSEMENT
Ce rôle Ansible ne gère pas le processus de migration vers des versions plus anciennes de Kafka. Veuillez vous assurer de lire la documentation sur la mise à niveau et de mettre à jour les fichiers de configuration appropriés avant d'exécuter ce rôle.
https://kafka.apache.org/35/documentation.html#upgrade
Par exemple, selon la manière dont vous effectuez la mise à niveau, le fichier server.properties
peut nécessiter l'ajout des propriétés suivantes pour refléter votre version actuelle avant d'exécuter ce playbook Ansible :
inter.broker.protocol.version
log.message.format.version
Plateformes supportées
- RedHat 6
- RedHat 7
- RedHat 8
- Debian 10.x
- Ubuntu 18.04.x
- Ubuntu 20.04.x
Exigences
- Apache ZooKeeper
- Java 8 (déprécié) / 11 / 17
Le rôle Apache ZooKeeper ci-dessous provenant d'Ansible Galaxy peut être utilisé si nécessaire.
ansible-galaxy install sleighzy.zookeeper
Ansible 2.9.16 ou 2.10.4 sont les versions minimales requises pour contourner un problème avec certains noyaux qui ont perturbé la vérification d'état de systemd
. Le message d'erreur "Service is in unknown state
" sera affiché lors de la tentative de démarrage du service via le rôle Ansible, et la tâche échouera. Le service démarrera comme prévu si la commande systemctl start
est exécutée sur l'hôte physique. Voir https://github.com/ansible/ansible/issues/71528 pour plus d'informations.
Variables de rôle
Variable | Valeur par défaut | Commentaires |
---|---|---|
kafka_download_base_url | https://downloads.apache.org/kafka | |
kafka_download_validate_certs | yes | |
kafka_version | 3.5.1 | |
kafka_scala_version | 2.13 | |
kafka_create_user_group | true | |
kafka_user | kafka | |
kafka_group | kafka | |
kafka_root_dir | /opt | |
kafka_dir | {{ kafka_root_dir }}/kafka | |
kafka_start | yes | |
kafka_restart | yes | |
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 | false | |
kafka_delete_topic_enable | true | |
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 | Dictionnaire général qui sera intégré dans server.properties |
Voir log4j.yml pour des variables disponibles liées à log4j.
Démarrage et arrêt des services Kafka avec systemd
- Le service Kafka peut être démarré via :
systemctl start kafka
- Le service Kafka peut être arrêté via :
systemctl stop kafka
Démarrage et arrêt des services Kafka avec initd
- Le service Kafka peut être démarré via :
service kafka start
- Le service Kafka peut être arrêté via :
service kafka stop
Propriétés par défaut
Propriété | Valeur |
---|---|
Connexion ZooKeeper | localhost:2181 |
Serveurs de bootstrap Kafka | localhost:9092 |
ID du groupe consommateur Kafka | kafka-consumer-group |
ID du courtier Kafka | 0 |
Nombre de partitions | 1 |
Durée de conservation des fichiers de log | 168 heures |
Activer la création automatique de sujets | false |
Activer la suppression des sujets | true |
Ports
Port | Description |
---|---|
9092 | Port d'écoute Kafka |
Répertoires et fichiers
Répertoire / Fichier | |
---|---|
Répertoire d'installation de Kafka (lien symbolique vers la version installée) | /opt/kafka |
Répertoire de configuration de Kafka (lien symbolique vers /opt/kafka/config) | /etc/kafka |
Répertoire pour stocker les fichiers de données | /var/lib/kafka/logs |
Répertoire pour stocker les fichiers journaux | /var/log/kafka |
Service Kafka | /usr/lib/systemd/system/kafka.service |
Exemple de Playbook
Ajoutez ce qui suit à un playbook pour exécuter ce rôle pour les hôtes appartenant au groupe kafka-nodes
.
- hosts: kafka-nodes
roles:
- sleighzy.kafka
Vérification de code
La vérification de code doit être effectuée avec ansible-lint.
pip3 install ansible-lint --user
ansible-lint -c ./.ansible-lint .
Tests
Ce module utilise le cadre de test Ansible Molecule. Cette suite de tests crée un cluster Kafka et ZooKeeper composé de trois nœuds fonctionnant dans des conteneurs Docker. Chaque conteneur exécute un système d'exploitation différent pour tester les plateformes supportées par ce rôle Ansible.
Selon le [guide d'installation de Molecule], cela doit être fait en utilisant un environnement virtuel. Les commandes ci-dessous créeront un environnement virtuel Python et installeront Molecule y compris le pilote Docker.
$ python3 -m venv molecule-venv
$ source molecule-venv/bin/activate
(molecule-venv) $ pip3 install ansible docker "molecule-plugins[docker]"
Exécutez le playbook et les tests. Les erreurs de vérification de code doivent être corrigées avant que Molecule n'exécute des tests. Cela exécutera tous les tests, puis détruira les conteneurs Docker.
molecule test
La commande ci-dessous peut être utilisée pour exécuter le playbook sans les tests. Cela peut être exécuté plusieurs fois lors des modifications du rôle, pour s'assurer que les opérations sont idempotentes.
molecule converge
Les commandes ci-dessous peuvent être utilisées pour exécuter uniquement les tests sans tout démolir. La commande molecule verify
peut être répétée pour chaque exécution de test.
molecule create
molecule converge
molecule verify
Démolissez les tests de Molecule et les conteneurs Docker.
molecule destroy
Licence
![Licence MIT]
Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu
ansible-galaxy install sleighzy.kafka