Интеграция с брокером сообщений Kafka
На Рис. 1 представлена схема интеграции бэкенда продукта с брокером сообщений Kafka.
В рамках интеграции с брокером сообщений Kafka бэкенд продукта обеспечивает:
-
передачу данных со всех серверов управления (masters) в модуль бэкенда
osmax-core
;В брокере сообщений Kafka создается топик
salt-topic
— логическая единица организации данных, представляющая собой некоторое количество записей, которые называются сообщениями. Производитель, Kafka returner — модуль сервера управления (master), отправляет результаты выполнения команд и состояний, полученные от агентов (minions), в топик для дальнейшей обработки, а потребитель, модуль бэкенда продуктаosmax-core
, читает сообщения из него. -
распределение запросов на установку ПО между серверами управления (masters);
При запросе на установку ПО на агенте (minion) модуль бэкенда
osmax-core
отправляет HTTP-запрос, содержащий идентификатор агента (minion), на соответствующий сервер управления (master). Чтобы корректно определить сервер управления (master), модуль бэкендаosmax-core
анализирует следующие сообщения о событиях SaltStack, полученные через брокер сообщений Kafka:-
minion_ping
— указывает на то, что агент (minion) только что отправил ping-запрос на сервер управления (master); -
minion_start
— указывает на то, что агент (minion) только что запустился; -
/minion/refresh/<minion-id>
— указывает на то, что была выполнена операция обновления данных на агенте (minion) с указанным идентификатором, который определяет Kafka returner при обработке сообщений.
-
-
регистрацию новых устройств в БД продукта;
Модуль бэкенда
osmax-provisioner
получает информацию об успешной установке (устройство в статусеOS_INSTALLED
— установлено), публикует информацию о нем в топике Apache Kafkaprovisioner-topic
и переводит устройство в статусCOMPLETED — выполнено
.Модуль бэкенда
osmax-core
получает информацию о новом устройстве из топикаprovisioner-topic
. Если такого устройства нет в БД, то создается новая запись о нем.Если при обработке сообщения возникает ошибка, то выполняются попытки обработать его повторно средствами конфигурируемого механизма retry. Если попытки повторной обработки не приводят к успеху, устройство не регистрируется в БД, а обрабатываемое сообщение перемещается в топик
provisioner-dlq-topic
(Dead Letter Queue) для последующей обработки администраторами системы в ручном режиме. -
регистрацию устройств в БД продукта, на которых переустановлена ОС.
Модуль бэкенда
osmax-core
передает информацию в топикosmax.core.os.reinstallation.machines
об устройствах, а модуль бэкендаosmax-provisioner
получает информацию об этих устройствах.Получив данные,
osmax-provisioner
регистрирует их и передает в топикosmax-provisioner.os.reinstallation.machines.registration.statuses
статусы:COMPLETED
— выполнено; илиCOMPLETED_WITH_ERROR
— выполнено с ошибкой. Модульosmax-core
забирает эти данные и запускает применение формулыos-bootstrap-formula
, которая выполняет подготовку к переустановке и перезапуск устройства. После этого инициируется процесс переустановки ОС.После переустановки ОС (или ошибки переустановки ОС) модуль
osmax-provisioner
передает данные отдельно по каждому устройству в топикprovisioner-topic
. Модульosmax-core
забирает эту информацию и актуализирует статус применения конфигурации «Переустановка ОС» к устройству.
Перед тем как настроить интеграцию необходимо:
-
Установить Apache Kafka, следуя инструкциям в официальной документации.
-
Создать топики, перечисленные ниже, следуя инструкции в официальной документации.
-
Для передачи данных с серверов управления (masters) в модуль
osmax-core
(например,salt-topic
). -
Для передачи информации о новых устройствах из модуля osmax-provisioner в модуль
osmax-core
(например, provisioner-topic). -
Dead Letter Queue (DLQ) для приема сообщений, которые не были успешно обработаны модулем
osmax-core
в рамках регистрации информации о новых устройствах (например,provisioner-dlq-topic
). Такие сообщения в дальнейшем будут обрабатываться администраторами системы. -
Для передачи данных из модуля
osmax-core
в модульosmax-provisioner
об устройствах, на которые назначена переустановка (например,osmax-core.os.reinstallation.machines
). -
Для передачи статуса переустановки из модуля
osmax-provisioner
в модульosmax-core
(например,osmax-provisioner.os.reinstallation.machines.registration.statuses
).Для топиков рекомендуется задать параметры:
-
retention
— время, в течение которого сообщения будут храниться в топике до момента удаления; -
partitions
— способ физического разделения данных в топике на несколько частей. Эти параметры могут быть настроены в зависимости от требований к производительности и надежности системы.
-
-
Настройка интеграции выполняется в несколько шагов при установке продукта отдельно для каждого сервера управления (master) и агента (minion). Подробное описание каждого шага содержится в руководстве по установке.
Последовательность шагов:
-
При конфигурировании сервера управления (master) выполните настройку отправки событий в топик Apache Kafka.
-
После того как будут заданы настройки сервера управления (master), выполните настройку Kafka returner.
-
При конфигурировании агента (minion) задайте интервал времени (
ping_interval
) между отправкой ping-запросов от агента (minion) на сервер управления (master). -
При конфигурировании модуля бэкенда
osmax-core
в конфигурационном файле `application.properties задайте: -
При конфигурировании модуля бэкенда
osmax-provisioner
в конфигурационном файлеapplication.properties
задайте параметры подключения к топикам Kafka.