Интеграция с брокером сообщений 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.