sleighzy.kafka

Apache Kafka

Lint Code Base Molecule

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

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]

O projekcie

Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu

Zainstaluj
ansible-galaxy install sleighzy.kafka
Licencja
mit
Pobrania
7.1k
Właściciel