kafka

Apache Kafka

Lint Code Base Molecule

Ansible роль для установки и настройки Apache Kafka 3.5.1

Apache Kafka — это распределенная платформа потоковой передачи событий, использующая темы с моделью публикации и подписки. Приложения и компоненты для потоковой передачи могут производить и потреблять сообщения, подписываясь на эти темы. Kafka работает очень быстро, обрабатывая мегабайты чтений и записей в секунду от тысяч клиентов. Сообщения сохраняются и реплицируются, чтобы предотвратить потерю данных. Потоки данных разделяются на партии и могут масштабироваться без остановки.

ПРЕДУПРЕЖДЕНИЕ

Эта Ansible роль не обрабатывает процесс миграции и обновления с более старых версий Kafka. Пожалуйста, убедитесь, что вы прочитали документацию по обновлению и обновили соответствующие файлы конфигурации перед запуском этой роли.

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

Например, в зависимости от способа обновления, файл server.properties может потребовать добавления следующих свойств, чтобы отразить вашу текущую версию перед запуском этого Ansible плейбука:

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

Поддерживаемые платформы

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

Требования

Ниже приведенная роль Apache ZooKeeper из Ansible Galaxy может быть использована, если она потребуется.

ansible-galaxy install sleighzy.zookeeper

Минимально требуемые версии Ansible — 2.9.16 или 2.10.4, чтобы обойти проблему с определенными ядрами, которые сломали проверку статуса systemd. Сообщение об ошибке "Сервис находится в неопределенном состоянии" будет выведено при попытке запустить сервис через роль Ansible, и задача завершится неудачей. Сервис будет запущен как ожидается, если команда systemctl start будет выполнена на физическом хосте. Подробнее см. https://github.com/ansible/ansible/issues/71528.

Переменные роли

Переменная По умолчанию Комментарии
kafka_download_base_url https://downloads.apache.org/kafka
kafka_download_validate_certs да
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 да
kafka_restart да
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 Общий словарь, который будет преобразован в server.properties

Смотрите log4j.yml для получения подробной информации о доступных переменных, относящихся к log4j.

Запуск и остановка услуг Kafka с использованием systemd

  • Сервис Kafka можно запустить с помощью: systemctl start kafka
  • Сервис Kafka можно остановить с помощью: systemctl stop kafka

Запуск и остановка услуг Kafka с использованием initd

  • Сервис Kafka можно запустить с помощью: service kafka start
  • Сервис Kafka можно остановить с помощью: service kafka stop

Свойства по умолчанию

Свойство Значение
Соединение с ZooKeeper localhost:2181
Kafka bootstrap servers localhost:9092
Идентификатор группы потребителей kafka-consumer-group
Идентификатор брокера Kafka 0
Количество партиций 1
Период хранения файлов данных 168 часов
Включить автоматическое создание тем false
Включить удаление тем true

Порты

Порт Описание
9092 Порт слушателя Kafka

Директории и файлы

Директория / Файл
Каталог установки Kafka (ссылка на установленную версию) /opt/kafka
Каталог конфигурации Kafka (ссылка на /opt/kafka/config) /etc/kafka
Директория для хранения файлов данных /var/lib/kafka/logs
Директория для хранения файлов журналов /var/log/kafka
Сервис Kafka /usr/lib/systemd/system/kafka.service

Пример плейбука

Добавьте нижеуказанное в плейбук, чтобы запустить эту роль на хостах, принадлежащих группе kafka-nodes.

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

Линтинг

Линтинг следует проводить с помощью ansible-lint.

pip3 install ansible-lint --user

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

Тестирование

Этот модуль использует тестовую структуру Ansible Molecule. Этот тестовый набор создает кластер Kafka и ZooKeeper, состоящий из трех узлов, работающих в контейнерах Docker. Каждый контейнер запускает другую ОС, чтобы протестировать поддерживаемые платформы для этой Ansible роли.

Согласно [руководству по установке Molecule] это следует делать с помощью виртуального окружения. Ниже указанные команды создадут виртуальное окружение Python и установят Molecule, включая драйвер Docker.

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

Запустите плейбук и тесты. Ошибки линтинга необходимо исправить перед тем, как Molecule выполнит любые тесты. Это запустит все тесты, а затем уничтожит контейнеры Docker.

molecule test

Ниже приведенная команда может быть использована для запуска плейбука без тестов. Это можно выполнять несколько раз при внесении изменений в роль, чтобы убедиться, что операции идемпотентны.

molecule converge

Ниже приведенные команды могут быть использованы только для запуска тестов без уничтожения всего. Команду molecule verify можно повторить для каждого запуска теста.

molecule create
molecule converge
molecule verify

Снос тестов Molecule и контейнеров Docker.

molecule destroy

Лицензия

![Лицензия MIT]

О проекте

Apache Kafka installation for RHEL/CentOS and Debian/Ubuntu

Установить
ansible-galaxy install sleighzy/ansible-kafka
Лицензия
mit
Загрузки
5925
Владелец