Настройка кластера

Документация Avanpost IDM 7 : 4.3. Настройка кластера

Avanpost IDM Base представляет собой комплексное решение, состоящее из нескольких компонентов, которые взаимодействуют между собой для распределения задач и выполнения команд. Взаимодействие компонентов осуществляется внутри кластера, основанного на акторной модели Akka.NET.

Система Avanpost IDM содержит следующие компоненты:

  • Сервис IGA: 
     – предоставляет API и веб-интерфейс для операционного и административного управления Системой;
     – осуществляет обработку кадровых событий;
     – генерирует события аудита, отчеты и аттестации;
     – обеспечивает управление ходом бизнес-процессов, включая задачи, подзадачи и последовательность действий, построение дерева задач, регистрацию событий и другие функции, необходимые для автоматизации рабочих процессов.
     – в рамках кластера выполняет роль мастера, координируя выполнение задач и управляя работой других компонентов.
  • Сервис IDM:
     – отвечает за коннекторы и запуск заданий планировщиков;
     – выполняет фоновые процессы;
     – осуществляет отправку событий аудита;
     – обеспечивает функционирование ролевой модели управления доступом;
     – управляет кадровой структурой: осуществляет запуск процессов кадровой синхронизации и обработку кадровых событий.
  • Приложение IDM. Console предназначено для выполнения сервисных процедур и диагностики через интерфейс командной строки.
  • БД IDM, схемы которой хранят:
     – конфигурацию IDM, информацию о пользователях и их правах доступа, включая историю;
     – процессы и документы.
  • Сервис коннекторов предназначен для абстрагирования (сегментации) компонентов Системы от коннекторов с целью сетевой изоляции, развертывания коннекторов в окружении, отличном от основной инфраструктуры системы IDM.

Взаимодействие сервисов для распределения задач и выполнения команд производится через кластер, организованный на основе системы распределенных вычислений Akka.Net.

Для настройки кластера используются отдельные файлы конфигурации, расположение которых определяется переменной окружения "CLUSTER_CFG", или секции "cluster" внутри основного файла конфигурации.

Если запуск происходит на одном сервере , требуется чтобы порты между системами не пересекались. Для работы кластера требуется как минимум две ноды с компонентами IGA и IDM
Для корректной работы однонодовой конфигурации так же необходим кластер, объединяющий сервисы idm и iga для взаимодействия между ними.

Навигатор по разделу:

1. Примеры конфигурационных файлов для сервисов

1.1. Пример файла конфигурации кластера для сервиса idm:

idm-cluster.config
{
  "cluster": {
    "host": "127.0.0.1",
    "PublicHost": "Some.host.local",
    "Port": "1778",
    "TransportLogging": "false",
    "SslEnabled": "false",
    "ssl": {
      "SuppressValidation": "true",
      "CertificatePath": "somepath",
      "CertificatePassword": "somepwd",
      "CertificateFlags": [
        "default-flag-set"
      ]
    },
    "ClusterRoles": [
      "resources",
      "roles",
      "hr",
      "scheduler",
      "security_events"
    ],
    "MemberNodes": [
      {
        "Host": "127.0.0.1",
        "Port": "1778"
      },
      {
        "Host": "127.0.0.1",
        "Port": "1779"
      }
    ],
    "StableAfter": 180,
    "DownAfter": 600,
    "MonitorCriticalRoles" : true
  }
}

1.2. Пример файла конфигурации кластера для сервиса iga:

iga-cluster.config
{
  "cluster": {
    "host": "127.0.0.1",
    "PublicHost": "Some.host.local",
    "Port": "1779",
    "TransportLogging": "false",
    "SslEnabled": "false",
    "ssl": {
      "SuppressValidation": "true",
      "CertificatePath": "somepath",
      "CertificatePassword": "somepwd",
      "CertificateFlags": [
        "default-flag-set"
      ]
    },
    "FailureDetector":{
      "HeartbeatInterval":"",
      "Threshold":"",
      "AcceptableHeartbeatPause":"",
      "ExpectedResponseAfter":"" 
    },
    "ClusterRoles": [
      "aflow",
      "events",
      "scheduller",
      "reports"
    ],
    "MemberNodes": [
      {
        "Host": "127.0.0.1",
        "Port": "1778"
      },
      {
        "Host": "127.0.0.1",
        "Port": "1779"
      }
    ],
    "StableAfter": 180,
    "DownAfter": 600,
    "MonitorCriticalRoles" : true
  }
}

2. Описание параметров конфигурационных файлов

2.1. Корневые элементы конфигурации

ПараметрПримеры значенийПояснение
host

127.0.0.1

Обозначение сетевого интерфейса

10.10.120.5

PublicHost

10.10.120.5

Обозначение идентификатора, по которому к машине можно обратиться снаружи (если машина не может распознать сама себя по адресу в параметре "host"). Может быть задана через переменную окружения "IGA_CLUSTER_PUBLIC_HOST"

some.dns.name

Port"1777"Сетевой порт, на котором будет работать система
TransportLogging

falseВключение логгирования сетевого протокола akka
true
SslEnabled

falseВключение ssl
true
sslсм. Настройка sslНастройка ssl-параметров при включенном параметре "SslEnabled"
StableAfter180Задержка после запуска в течение которой ожидаются ноды кластера
DownAfter600Задержка перед остановкой службы при выходе из кластера нод с критичными ролями (зависит от параметра MonitorCriticalRoles)

MonitorCriticalRoles

trueПроверка наличия в кластере обязательных ролей
FailureDetectorсм. FailureDetectorНастройка, отвечающая за детектирование недоступных нод кластера
ClusterRoles[ "iga", "iga_scheduler" ]Подробнее cм. Распределение систем и ролей в кластере
MemberNodes см. MemberNodesНабор всех нод или seed-нод для заданной системы

2.2. Настройка ssl

ПараметрПримеры значенийПояснение

SuppressValidation


true

Валидация сертификата

false

CertificatePath

/some/path/to/cert

Путь до сертификата

CertificatePassword

pwd

Пароль сертификата

CertificateFlags

["default-key-set"]

Хранилище ключей. Доступные значения:

  • default-key-set
  • exportable
  • machine-key-set
  • persist-key-set
  • user-key-set
  • user-protected

2.3. Распределение систем и ролей в кластере

РольКомпонентКомментарий

idm_scheduler

IDM

Запуск заданий планировщиков

resources

IDM

Работа с ресурами (коннекторы). Является обязательной, если включен параметр MonitorCriticalRoles

roles

IDM

Обработка задач изменения ролей

hr

IDM

Работа с кадровыми ресурсами (коннекторы)

security_events

IDM

Отправка событий аудита

iga

IGA

Фронтенд

iga_scheduler

IGA

Запуск заданий планировщиков

aflow

IGA

Движок бизнес-процессов. Является обязательной, если включен параметр MonitorCriticalRoles

events

IGA

Обработка некоторых видов событий (кроме кадровых)

reports

IGA

Генерация отчетов

Для любого компонента так же доступен алиас "all" - если одна нода будет делать всю работу то вместе перечисления точечных ролей им можно задать сразу все.

2.4. FailureDetector

Настройка, отвечающая за детектирование недоступных нод кластера. Данные параметры отдельно настраиваются под каждую инсталляцию и зависят от архитектуры проекта.

ПараметрПримерПояснение
HeartbeatInterval"12"Интервал в секундах между Heartbeat-сообщениями. Если HeartbeatInterval >= (AcceptableHeartbeatPause/3)*2 , то в логе будут регулярно появляться Warning сообщения "Heartbeat interval is growing too large".
AcceptableHeartbeatPause"21"Количество потерянных или задержанных heartbeat-сообщений, после которого FailureDetector пометит ноду как потенциально упавшую.
ExpectedResponseAfter"8"Время в секундах, которое нода будет ждать ответ на посланное heartbeat-сообщение
Threshold"12"Порог срабатывания FailureDetector. Чем ниже порог, тем быстрее FailureDetector будет срабатывать, и тем больше будет ложных срабатываний.

2.5. MemberNodes

Набор всех нод или seed-нод для заданной системы.
В случае использования seed-нод достаточно указать только первые ноды для каждой роли в данной системе.

[
  {
    "Host": "127.0.0.1",
    "Port": "1777"
  },
  {
     "Host": "127.0.0.1",
     "Port": "1779"
  }
]

3. Схема-пример однонодового развертывания

4. Схема-пример развертывания кластера в K8s "по ролям"

Обсуждение