sleighzy.kafka
Apache Kafka
Rola Ansible do instalacji i konfiguracji Apache Kafka 3.5.1
Apache Kafka to rozproszona platforma przesyłania zdarzeń używająca tematów publikacyjnych i subskrypcyjnych. Aplikacje i komponenty strumieniowe mogą produkować i konsumować wiadomości, subskrybując te tematy. Kafka jest niezwykle szybka, obsługując megabajty odczytów i zapisów na sekundę od tysięcy klientów. Wiadomości są przechowywane i replikowane, aby zapobiegać utracie danych. Strumienie danych są partycjonowane i mogą być elastycznie skalowane bez przestojów.
OSTRZEŻENIE
Ta rola Ansible nie obsługuje procesu migracji z starszych wersji Kafka. Proszę upewnić się, że przeczytałeś dokumentację dotyczącą aktualizacji i zaktualizowałeś odpowiednie pliki konfiguracyjne przed uruchomieniem tej roli.
https://kafka.apache.org/35/documentation.html#upgrade
Na przykład, w zależności od tego, jak przeprowadzisz aktualizację, plik server.properties
może wymagać dodania następujących właściwości, aby odzwierciedlić twoją obecną wersję przed uruchomieniem tego playbooka Ansible:
inter.broker.protocol.version
log.message.format.version
Obsługiwane platformy
- RedHat 6
- RedHat 7
- RedHat 8
- Debian 10.x
- Ubuntu 18.04.x
- Ubuntu 20.04.x
Wymagania
- Apache ZooKeeper
- Java 8 (niezalecana) / 11 / 17
Poniższa rola Apache ZooKeeper z Ansible Galaxy może być użyta, jeśli jest potrzebna.
ansible-galaxy install sleighzy.zookeeper
Wersje Ansible 2.9.16 lub 2.10.4 to minimalne wymagane wersje, aby obejść problem z niektórymi rdzeniami, które uszkodziły sprawdzanie stanu systemd
. Komunikat o błędzie "Serwis jest w nieznanym stanie
" zostanie wyświetlony podczas próby uruchomienia usługi za pomocą roli Ansible, a zadanie zakończy się niepowodzeniem. Usługa rozpocznie się zgodnie z oczekiwaniami, jeśli polecenie systemctl start
zostanie uruchomione na fizycznym hoście. Zobacz https://github.com/ansible/ansible/issues/71528 po więcej informacji.
Zmienne roli
Zmienna | Domyślna | Uwagi |
---|---|---|
kafka_download_base_url | https://downloads.apache.org/kafka | |
kafka_download_validate_certs | tak | |
kafka_version | 3.5.1 | |
kafka_scala_version | 2.13 | |
kafka_create_user_group | prawda | |
kafka_user | kafka | |
kafka_group | kafka | |
kafka_root_dir | /opt | |
kafka_dir | {{ kafka_root_dir }}/kafka | |
kafka_start | tak | |
kafka_restart | tak | |
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 | fałsz | |
kafka_delete_topic_enable | prawda | |
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 | Ogólny słownik, który zostanie wstawiony do pliku server.properties |
Zobacz log4j.yml dla szczegółowych dostępnych zmiennych związanych z log4j.
Uruchamianie i zatrzymywanie usług Kafka za pomocą systemd
- Usługa Kafka może być uruchomiona za pomocą:
systemctl start kafka
- Usługa Kafka może być zatrzymana za pomocą:
systemctl stop kafka
Uruchamianie i zatrzymywanie usług Kafka za pomocą initd
- Usługa Kafka może być uruchomiona za pomocą:
service kafka start
- Usługa Kafka może być zatrzymana za pomocą:
service kafka stop
Właściwości domyślne
Właściwość | Wartość |
---|---|
Połączenie z ZooKeeper | localhost:2181 |
Serwery bootstrapping Kafka | localhost:9092 |
ID grupy konsumentów Kafka | kafka-consumer-group |
ID brokera Kafka | 0 |
Liczba partycji | 1 |
Okres przechowywania plików dziennika danych | 168 godzin |
Włącz automatyczne tworzenie tematów | fałsz |
Włącz usuwanie tematów | prawda |
Porty
Port | Opis |
---|---|
9092 | Port nasłuchu Kafka |
Katalogi i pliki
Katalog / Plik | |
---|---|
Katalog instalacyjny Kafka (dowiązanie do zainstalowanej wersji) | /opt/kafka |
Katalog konfiguracyjny Kafka (dowiązanie do /opt/kafka/config) | /etc/kafka |
Katalog do przechowywania plików danych | /var/lib/kafka/logs |
Katalog do przechowywania plików dziennika | /var/log/kafka |
Usługa Kafka | /usr/lib/systemd/system/kafka.service |
Przykładowy playbook
Dodaj poniższe do playbooka, aby uruchomić tę rolę na hostach należących do grupy kafka-nodes
.
- hosts: kafka-nodes
roles:
- sleighzy.kafka
Lintowanie
Lintowanie powinno być wykonywane przy użyciu ansible-lint.
pip3 install ansible-lint --user
ansible-lint -c ./.ansible-lint .
Testowanie
Ten moduł używa frameworka testowego Ansible Molecule. Ta zestaw testów tworzy klaster Kafka i ZooKeeper składający się z trzech węzłów działających w kontenerach Docker. Każdy kontener działa na innym systemie operacyjnym, aby przetestować wspierane platformy dla tej roli Ansible.
Zgodnie z [przewodnikiem instalacyjnym Molecule] powinno to być realizowane w wirtualnym środowisku. Poniższe polecenia utworzą środowisko wirtualne Pythona i zainstalują Molecule, w tym sterownik Docker.
$ python3 -m venv molecule-venv
$ source molecule-venv/bin/activate
(molecule-venv) $ pip3 install ansible docker "molecule-plugins[docker]"
Uruchom playbook i testy. Błędy lintowania muszą zostać poprawione przed uruchomieniem testów Molecule. To uruchomi wszystkie testy, a następnie zniszczy kontenery Docker.
molecule test
Poniższe polecenie można użyć do wykonania playbooka bez testów. Może być uruchamiane wielokrotnie podczas wprowadzania zmian w roli, aby zapewnić idempotencję operacji.
molecule converge
Poniższe polecenia można używać, aby uruchamiać tylko testy bez niszczenia wszystkiego. Polecenie molecule verify
może być powtarzane dla każdego wykonania testu.
molecule create
molecule converge
molecule verify
Zniszcz testy Molecule oraz kontenery Docker.
molecule destroy
Licencja
![Licencja MIT]
Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu
ansible-galaxy install sleighzy.kafka