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