sleighzy.kafka

Apache Kafka

Lint Code Base Molecule

Ansible-Rolle zur Installation und Konfiguration von Apache Kafka 3.5.1

Apache Kafka ist eine verteilte Plattform für Ereignis-Streaming, die Pub-Sub-Themen verwendet. Anwendungen und Streaming-Komponenten können Nachrichten erzeugen und konsumieren, indem sie sich für diese Themen anmelden. Kafka ist extrem schnell und verarbeitet pro Sekunde Megabyte an Lese- und Schreibvorgängen von Tausenden von Clients. Nachrichten werden gespeichert und repliziert, um Datenverluste zu verhindern. Datenströme sind partitioniert und können elastisch ohne Ausfallzeit skaliert werden.

WARNUNG

Diese Ansible-Rolle behandelt nicht den Migrationsprozess für ein Upgrade von älteren Versionen von Kafka. Bitte stellen Sie sicher, dass Sie die Upgrade-Dokumentation lesen und die relevanten Konfigurationsdateien aktualisieren, bevor Sie diese Rolle ausführen.

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

Zum Beispiel, je nach Art des Upgrades, muss möglicherweise die Datei server.properties die folgenden Eigenschaften hinzugefügt werden, um Ihre aktuelle Version vor dem Ausführen dieses Ansible-Playbooks widerzuspiegeln:

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

Unterstützte Plattformen

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

Anforderungen

Die folgende Apache ZooKeeper-Rolle aus Ansible Galaxy kann verwendet werden, wenn ein ZooKeeper benötigt wird.

ansible-galaxy install sleighzy.zookeeper

Ansible 2.9.16 oder 2.10.4 sind die minimal erforderlichen Versionen, um ein Problem mit bestimmten Kernels zu umgehen, das die systemd-Statusüberprüfung beeinträchtigt. Die Fehlermeldung "Service is in unknown state" wird ausgegeben, wenn versucht wird, den Dienst über die Ansible-Rolle zu starten, und die Aufgabe wird fehlschlagen. Der Dienst startet wie erwartet, wenn der Befehl systemctl start auf dem physischen Host ausgeführt wird. Weitere Informationen finden Sie unter https://github.com/ansible/ansible/issues/71528.

Rollenvariablen

Variable Standard Kommentare
kafka_download_base_url https://downloads.apache.org/kafka
kafka_download_validate_certs ja
kafka_version 3.5.1
kafka_scala_version 2.13
kafka_create_user_group wahr
kafka_user kafka
kafka_group kafka
kafka_root_dir /opt
kafka_dir {{ kafka_root_dir }}/kafka
kafka_start ja
kafka_restart ja
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 falsch
kafka_delete_topic_enable wahr
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 Allgemeines Dictionary, das in server.properties templatiert wird

Siehe log4j.yml für detaillierte
verfügbare Variablen zu log4j.

Starten und Stoppen von Kafka-Diensten mit systemd

  • Der Kafka-Dienst kann gestartet werden mit: systemctl start kafka
  • Der Kafka-Dienst kann gestoppt werden mit: systemctl stop kafka

Starten und Stoppen von Kafka-Diensten mit initd

  • Der Kafka-Dienst kann gestartet werden mit: service kafka start
  • Der Kafka-Dienst kann gestoppt werden mit: service kafka stop

Standard-Eigenschaften

Eigenschaft Wert
ZooKeeper-Verbindung localhost:2181
Kafka-Bootstrap-Server localhost:9092
Kafka-Consumer-Gruppe-ID kafka-consumer-group
Kafka-Broker-ID 0
Anzahl der Partitionen 1
Datenprotokoll-Speicherzeit 168 Stunden
Automatische Themen-Erstellung falsch
Themenlöschung aktivieren wahr

Ports

Port Beschreibung
9092 Kafka Listener-Port

Verzeichnisse und Dateien

Verzeichnis / Datei
Kafka-Installationsverzeichnis (Symlink zur installierten Version) /opt/kafka
Kafka-Konfigurationsverzeichnis (Symlink zu /opt/kafka/config) /etc/kafka
Verzeichnis zur Speicherung von Daten /var/lib/kafka/logs
Verzeichnis zur Speicherung von Protokollen /var/log/kafka
Kafka-Dienst /usr/lib/systemd/system/kafka.service

Beispiel-Playbook

Fügen Sie das Folgende zu einem Playbook hinzu, um diese Rolle gegen Hosts in der Gruppe kafka-nodes auszuführen.

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

Linting

Linting sollte mit ansible-lint durchgeführt werden.

pip3 install ansible-lint --user

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

Testen

Dieses Modul verwendet das Testframework Ansible Molecule. Diese Testsuite erstellt einen Kafka- und ZooKeeper-Cluster, bestehend aus drei Knoten, die in Docker-Containern ausgeführt werden. Jeder Container läuft mit einem anderen OS, um die unterstützten Plattformen für diese Ansible-Rolle zu testen.

Laut der [Molecule-Installationsanleitung] sollte dies in einer virtuellen Umgebung erfolgen. Die folgenden Befehle erstellen eine Python-virtuelle Umgebung und installieren Molecule, einschließlich des Docker-Treibers.

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

Führen Sie das Playbook und die Tests aus. Linting-Fehler müssen behoben werden, bevor Molecule Tests ausführen kann. Dies führt alle Tests aus und zerstört dann die Docker-Container.

molecule test

Der folgende Befehl kann verwendet werden, um das Playbook ohne die Tests auszuführen. Dies kann mehrmals ausgeführt werden, wenn Änderungen an der Rolle vorgenommen werden, um sicherzustellen, dass die Vorgänge idempotent sind.

molecule converge

Die folgenden Befehle können verwendet werden, um nur die Tests durchzuführen, ohne alles abzureißen. Der Befehl molecule verify kann für jeden Testlauf wiederholt werden.

molecule create
molecule converge
molecule verify

Zerstören Sie Molecule-Tests und Docker-Container.

molecule destroy

Lizenz

![MIT-Lizenz]

Über das Projekt

Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu

Installieren
ansible-galaxy install sleighzy.kafka
Lizenz
mit
Downloads
7.1k
Besitzer