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

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

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

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

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

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

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

dag-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": [
      "reports",
      "scheduler",
    ],
    "MemberNodes": [
      {
        "Host": "127.0.0.1",
        "Port": "1778"
      },
      {
        "Host": "127.0.0.1",
        "Port": "1779"
      }
    ],
    "StableAfter": 180,
    "DownAfter": 600,
    "MonitorCriticalRoles" : true
  }
}

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

dagcollector-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": [
      "dataStorages",
      "security_events",
      "scheduler",
    ],
    "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

Адрес или DNS-имя, по которому узел доступен извне. Указывается в случаях, когда узел не может распознать сам себя по адресу из параметра "host"

some.dns.name

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

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

falseВключение SSL
true
sslсм. Настройка sslПараметры SSL. Настраивается при значении SslEnabled: true
StableAfter180

Время ожидания (в секундах) после запуска, в течение которого система ожидает подключения узлов кластера

DownAfter600

Время ожидания (в секундах) перед остановкой службы после выхода из кластера узлов с критическими ролями. Применяется при MonitorCriticalRoles: true

MonitorCriticalRoles

trueРоли, назначенные данному узлу. Включение проверки наличия в кластере узлов с обязательными ролями
ClusterRoles[ "dag", "dag_scheduler" ]Подробнее cм. Распределение систем и ролей в кластере
MemberNodes см. MemberNodesСписок всех узлов кластера

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

ПараметрПримеры значенийОписание

SuppressValidation


true

Параметр проверки SSL-сертификата

false

CertificatePath

/some/path/to/cert

Путь к файлу SSL-сертификата

CertificatePassword

pwd

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

CertificateFlags

["default-key-set"]

Хранилище ключей. Возможные значения:

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

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

Роль

Компонент 

Описание

dag_scheduler

DAG

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

reports

DAG

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

dag

DAG

Работа веб-интерфейса

dagcollector_scheduler

DAG Collector

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

dataStorages

DAG Collector

Работа с хранилищами (коннекторы)

security_events

DAG Collector

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

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

2.4. MemberNodes 

Набор всех узлов для заданной системы.

[
  {
    "Host": "127.0.0.1",
    "Port": "1777"
  },
  {
     "Host": "127.0.0.1",
     "Port": "1779"
  }
ПараметрПримеры значенийОписание
Host
127.0.0.1
IP-адрес узла кластера
Port
1777
Сетевой порт узла кластера

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

Обсуждение