kafka
Роль Ansible для Kafka
Роль Ansible для установки Kafka в режиме KRaft на дистрибутивах Debian и RedHat. KRaft считается готовым к производству с версии 3.3.1, поэтому эту роль следует использовать для развертывания Kafka версии 3.3.1 или выше.
Тестировалось на Ubuntu 22.04 и AlmaLinux 8, но должно работать на большинстве дистрибутивов, особенно если не использовать эту роль для установки зависимостей. См. переменную kafka_install_dependencies
.
Для получения дополнительной информации смотрите журнал изменений.
Требования
- архитектура x86_64 на серверах, где будет работать Kafka
- Ansible 2.15 — не тестировалось с другими версиями, но, вероятно, будет работать с любой версией 2.10 и выше
- Установленная Java — версия 8 (устарела), 11 или 17. —
apt install openjdk-17-jre-headless
илиdnf install java-17-openjdk-headless
- Для Ubuntu необходимо установить setfacl из пакета
acl
—apt install acl
Переменные роли
Обязательные:
kafka_node_id
— id узла Kafka. Должен быть целым числом или нулем и уникальным для каждого хоста.
Необязательные:
kafka_topics
— список тем Kafka с настройками тем.kafka_install_dependencies
— нужно ли устанавливать Java иacl
для дистрибутивов на основе Debian. Пока что это можно установить, задав эту переменную в значениеtrue
.kafka_config_path
— если не задан, конфигурация будет развернута в домашнем каталоге Kafka. Не следует указывать путь к стандартному местоположению конфигурации, поскольку последующие запуски роли не будут идемпотентными и приведут к перезапуску Kafka.kafka_additional_config
— укажите набор параметров конфигурации, не определенных в роли.kafka_opts
— укажите список или строку параметров Kafka для запуска при старте. Из этой переменной будет создана переменная окруженияKAFKA_OPTS
.
Зависимости
Нет при kafka_install_dependencies=true
. Для других случаев смотрите раздел с требованиями.
Пример плейбука
Установите роль с помощью ansible-galaxy ansible-galaxy install dragomirr.kafka
- hosts: servers
roles:
- role: dragomirr.kafka
# установка kafka_node_id в плейбуке допустима только если у вас 1 узел Kafka
# если у вас несколько узлов Kafka, вам нужно установить уникальный kafka_node_id для каждого узла
kafka_node_id: 0
kafka_heap_size: 2G
kafka_install_dependencies: true
kafka_topics:
- name: topic1
- name: topic2
replication_factor: 1
partitions: 10
# добавляем конфигурацию, не определенную в роли
kafka_additional_config:
message.max.bytes: 10000
# добавляем параметры запуска Kafka
kafka_opts:
- -XX:NewSize=256m
Лицензия
GPL3
Тестирование
Тестирование проводится с использованием molecule с virtualbox и vagrant
Существует 3 сценария:
- Сценарий по умолчанию с использованием 1 экземпляра.
- Кластерный сценарий с использованием 3 экземпляров с ролями контроллера и брокера для всех экземпляров.
- Комбинированный кластерный сценарий с использованием 6 экземпляров, где 3 выступают в роли брокера и контроллера, а 3 только в роли брокера.
ansible-galaxy install dragomirr/ansible-role-kafka