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 из пакета aclapt 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 только в роли брокера.
О проекте

Install Apache Kafka with KRaft mode

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