Интеграция бэкенда продукта с модулем координации (SaltStack) через брокер сообщений Kafka

На Рис. 1 представлена схема интеграции бэкенда продукта с модулем координации (SaltStack) через брокер сообщений Kafka.

kafka integration
Рис. 1. Интеграция бэкенда продукта с модулем координации (SaltStack)

В рамках интеграции c модулем координации бэкенд продукта обеспечивает:

  • передачу данных со всех серверов управления (masters) в бэкенд продукта с помощью подписки на топик Apache Kafka;

    В брокере сообщений Kafka создается топик — логическая единица организации данных. Каждый топик представляет собой некоторое количество записей, которые называются сообщениями. Производитель, Kafka returner — модуль сервера управления (master), отправляет результаты выполнения команд и состояний, полученные от агентов (minions), в топик для дальнейшей обработки, а потребитель, бэкенд продукта, читает сообщения из него.

  • распределение запросов на установку ПО между серверами управления (masters).

    При запросе на установку ПО на агенте (minion) бэкенд продукта отправляет HTTP-запрос, содержащий идентификатор агента (minion), на соответствующий сервер управления (master). Чтобы корректно определить сервер управления (master), бэкенд продукта анализирует следующие сообщения о событиях SaltStack, полученные через брокер сообщений Kafka:

    • minion_ping — указывает на то, что агент (minion) только что отправил ping-запрос на сервер управления (master);

    • minion_start — указывает на то, что агент (minion) только что запустился;

    • /minion/refresh/<minion-id> — указывает на то, что была выполнена операция обновления данных на агенте (minion) с указанным идентификатором, который определяет Kafka returner при обработке сообщений.

Перед тем как настроить интеграцию необходимо:

  1. Установить Apache Kafka, следуя инструкциям в официальной документации.

  2. Создать отдельный топик (например, salt-topic), следуя инструкции в официальной документации. Для топика рекомендуется задать параметры:

    1. retention — время, в течение которого сообщения будут храниться в топике до момента удаления;

    2. partitions — способ физического разделения данных в топике на несколько частей. Эти параметры могут быть настроены в зависимости от требований к производительности и надежности системы.

Настройка интеграции выполняется в несколько шагов при установке продукта отдельно для каждого сервера управления (master) и агента (minion). Подробное описание каждого шага содержится в руководстве по установке.

Последовательность шагов:

  1. При конфигурировании сервера управления (master) выполните настройку отправки событий в топик Apache Kafka.

  2. После того как будут заданы настройки сервера управления (master), выполните настройку Kafka returner.

  3. При конфигурировании агента (minion) задайте интервал времени (ping_interval) между отправкой ping-запросов от агента (minion) на сервер управления (master).

  4. При конфигурировании бэкенда в файле application.properties задайте: