sleighzy.kafka

Apache Kafka

Lint Code Base Molecule

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

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]

À propos du projet

Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu

Installer
ansible-galaxy install sleighzy.kafka
Licence
mit
Téléchargements
7.1k
Propriétaire