Масштабирование задач#
В кластерном режиме работы IDMX для обработки задач и запросов используется несколько контейнеров (pod) idmx-engine. При этом, распределение нагрузки между контейнерами для большинства операций производится IDMX автоматически.
Однако для того, чтобы внутри кластера также распределялись обрабатываемые задачи (tasks), необходима дополнительная настройка IDMX и самих задач.
Настройка задач для автоматического масштабирования#
Чтобы механизм автоматического масштабирования брал в работу задачи, необходимо дополнить конфигурации этих задач. Для этого:
Откройте xml-файл конфигурации задачи на редактирование.
В код задачи перед началом блока
<activity>вставьте следующий блок:<autoScaling> <mode>default</mode> //Блок задает режим работы механизма автоматического масштабирования </autoScaling>В код задачи в блок
<distribution>вставьте следующий блок:<autoScaling> <enabled>true</enabled> //Блок выставляет флаг, что данную задачу следует масштабировать при работе механизма автоматического масштабирования </autoScaling>Сохраните изменения.
Импортируйте задачу в IDMX. Инструкции по ручному импорту расположены в разделе Импорт конфигурационных файлов.
Выполните данные действия для всех задач, которые необходимо масштабировать в кластерном режиме работы.
Пример конфигурационного файла задачи для импорта данных из ресурса с включенным масштабированием:
<?xml version="1.0" encoding="UTF-8"?>
<task xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
oid="10000000-0000-0000-0000-010000000025">
<name>Import Parallel 10 buckets</name>
<description>
Unloading users from resource in 10 threads.
</description>
<assignment>
<!-- Import task archetype -->
<targetRef oid="00000000-0000-0000-0000-000000000503" type="ArchetypeType"/>
</assignment>
<ownerRef oid="00000000-0000-0000-0000-000000000002"/>
<executionState>waiting</executionState>
<schedule>
<recurrence>single</recurrence>
</schedule>
<autoScaling>
<mode>default</mode>
</autoScaling>
<activity>
<work>
<import>
<resourceObjects>
<resourceRef oid="10000000-0000-0000-0000-100000000200"/>
<kind>account</kind>
</resourceObjects>
</import>
</work>
<distribution>
<buckets>
<stringSegmentation>
<discriminator>attributes/employee_number</discriminator>
<boundary>
<position>1</position>
<characters>1-9</characters>
</boundary>
</stringSegmentation>
</buckets>
<workers>
<workersPerNode>
<count>2</count>
</workersPerNode>
</workers>
<workerThreads>2</workerThreads>
<autoScaling>
<enabled>true</enabled>
</autoScaling>
</distribution>
</activity>
</task>
Настройка IDMX для работы механизма автоматического масштабирования#
Как и в случае с другими действиями по автоматизации обработки операций, для того, чтобы механизм автоматического масштабирования распределял запросы и задачи из очереди на контейнеры IDMX, необходимо создать и импортировать задачу, которая будет регулярно инициировать запуск механизма автоматического масштабирования. Для этого:
В любом подходящем редакторе или IDE создайте xml-файл с названием, например,
task-autoscaling.xml.Заполните файл следующим кодом:
<task xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"> <name>Auto-scaling</name> //Имя задачи в интерфейсе IDMX <ownerRef oid="00000000-0000-0000-0000-000000000002" type="UserType"/> //Владелец задачи, по умолчанию — суперадминистратор, если изменяете — замените на oid польхователя с ролью Администратор-эксперт <executionState>runnable</executionState> //Параметр, указывающий, что задачу можно запускать <schedule> //Блок расписания, определяющий регулярность автоматического запуска задачи <interval>60</interval> //Время в секундах, по истечении которого задача будет запускаться снова </schedule> <autoScaling> //Блок автомасштабирования <mode>disabled</mode> //Отключаем автомасштабирование для данной задачи, так как дополнительные экземляры задачи будут лишь потреблять лишние ресурсы </autoScaling> <activity> //Блок действий, выполняемых задачей <work> <activityAutoScaling/> //Запускаем механизм автомасштабирования </work> </activity> </task>Сохраните изменения.
Импортируйте задачу в IDMX и запустите ее.