kafka
Apache Kafka
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
- Java 8 (устаревшая) / 11 / 17
Ниже приведенная роль 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