Настройка кластерного режима
8 800 555-89-02
Войти
Документация
CTRL+K
Standalone2410
SaaS

Настройка кластерного режима

В этой статье

Кластерный режим позволяет подключить несколько агентов автоматизации или серверов сбора аналитики, чтобы распределить нагрузку и обеспечить отказоустойчивость системы. Это особенно полезно при работе с большими объемами информации, поскольку помогает предотвратить потерю данных и улучшить масштабируемость.

За настройку кластерного режима отвечает конфигурационный файл: cluster.json.

Общий вид файла для настройки агентов автоматизации:

{
    "components": {
        "excluded":[
            "com.infomaximum.subsystem.automationagent"
        ]
    },
    "network": {
        "current": {
            "name": 1,
            "port": 7000,
            "ssl":{
                "cert_chain_path":"ssl/n1.crt",
                "private_key_path":"ssl/n1.key"
            }
        },
        "nodes": [
            {
                "name": 2,
                "target": "192.168.1.2:7000",
                "ssl_certificate_path":"ssl/n2.crt"
            }
        ]
    }
}

Для обеспечения отказоустойчивости и масштабируемости сервера сбора аналитики настройка кластера выполняется аналогично настройке агентов автоматизации.

Общий вид файла для настройки сервера сбора аналитики:

{
  "components": {
    "included":[
      "com.infomaximum.subsystem.automationwebhook"
    ]
  },
  "network": {
    "current": {
      "name": 3,
      "port": 7003,
      "ssl":{
            "cert_chain_path":"ssl/n1.crt",
            "private_key_path":"ssl/n1.key"
        }
    },
    "nodes": [
      {
        "name": 1,
        "target": "127.0.0.1:7001",
        "ssl_certificate_path":"ssl/n2.crt"
      }
    ]
  }
}

Если требуется объединить агенты автоматизации и сервера сбора аналитики в едином кластере, их можно настроить в одном файле cluster.json, выделив их на отдельные порты для изоляции.

Общий вид файла:

{
  "components": {
    "excluded": [
      "com.infomaximum.subsystem.automationagent",
      "com.infomaximum.subsystem.automationwebhook"
    ]
  },
  "network": {
    "current": {
      "name": 1,
      "port": 7001,
      "ssl":{
            "cert_chain_path":"ssl/n1.crt",
            "private_key_path":"ssl/n1.key"
        }
    },
    "nodes": [
      {
        "name": 2,
        "target": "127.0.0.1:7002",
        "ssl_certificate_path":"ssl/n2.crt"
      },
      {
        "name": 3,
        "target": "127.0.0.1:7003",
        "ssl_certificate_path":"ssl/n3.crt"
      }
    ]
  }
}

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

При настройке работы кластера по протоколу HTTPS для выделенного порта необходимо использовать отдельный SSL-сертификат, который отличается от сертификата, применяемого для веб-интерфейса. Такой подход обеспечивает:

  • Шифрование данных между узлами
  • Аутентификацию нод с использованием SSL-сертификатов
  • Изоляцию взаимодействия, разделяя доступ к веб-интерфейсу и внутреннюю связь кластера

Сетевая настройка кластера из двух нод

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

Предположим, есть два сервера с DNS-именами:

  • n1.local — основной сервер
  • n2.local — внешний агент

Настройка по протоколу HTTP

Для сервера n1.local укажите, что его внутреннее имя «1» ("name": 1). В имени можно указать только число от 1 до 127.

Откройте порт 7000 ("port": 7000) для приема запросов от других нод.

В блоке "nodes" опишите, какие есть доступные ноды и как к ним обращаться. Укажите, что есть нода с внутренним именем «2» ("name": 2) и что к ней можно подключиться по URL: "n2.local:7000" (host-name: n2.local, подключение происходит к порту 7000).

В этом URL не описаны протоколы HTTP и HTTPS.

Пример:

cluster.json (n1.local)
{
    "network": {
        "current": {
            "name": 1,
            "port": 7000,
        },
        "nodes": [
            {
                "name": 2,
                "target": "n2.local:7000"
            }
        ]
    }
}

Для сервера n2.local укажите, что его внутреннее имя "2" ("name": 2) и откройте порт 7000 ("port": 7000) для приема запросов от других нод.

В блоке "nodes" опишите, какие есть доступные ноды и как к ним обращаться. Укажите, что есть нода с внутренним именем "1" и что к ней можно подключиться по URL: "n1.local:7000".

Пример:

cluster.json (n2.local)
{
    "network": {
        "current": {
            "name": 2,
            "port": 7000,
        },
        "nodes": [
            {
                "name": 1,
                "target": "n1.local:7000"
            }
        ]
    }
}
Заметка

В приведенных примерах опущена настройка активных модулей: поле "components". Ее нужно описать в отдельном файле.

Настройка по протоколу HTTPS

Добавьте в блок "current" блок "ssl" и поля в нем:

  • "cert_chain_path" — файл с сертификатом Proceset сервера
  • "private_key_path" — файл с приватным ключом Proceset сервера
  • "trust_certs" — набор доверенных сертификатов

В этом блоке указываются настройки для HTTPS-сервера, т.е. необходимо подключить HTTPS-сервер на ноде n1.local на порте 7000 с сертификатом n1.crt и приватным ключом n1.key.

При наличии блока "ssl" кластер полностью переходит в «зашифрованный» режим: нода настраивает HTTPS-сервер и подключается к другим нодам только по HTTPS, аутентификация проходит на основе «клиентских» сертификатов.

В поле "trust_certs" укажите сертификат не вашей активной ноды, а сертификат удаленного сервера: n2.crt. В итоге получается перекрестный обмен сертификатами между нодами для проверки соединения и гарантии того, что подключение происходит к доверенной стороне.

Пример:

cluster.json (n1.local)
{
    "network": {
        "current": {
            "name": 1,
            "port": 7000,
            "ssl":{
                "cert_chain_path":"ssl/n1.crt",
                "private_key_path":"ssl/n1.key",
                "trust_certs": [
                    "ssl/n2.crt"
                ]
            }
        },
        "nodes": [
            {
                "name": 2,
                "target": "n2.local:7000"
            }
        ]
    }
}

Настройка HTTPS-сервера n2.local аналогична настройке HTTPS-сервера n1.local.

Подключите HTTPS-сервер на ноде n2.local на порте 7000, с сертификатом n2.crt и приватным ключом: n2.key.

Укажите, что есть нода: "1", к которой можно подключиться по DNS-имени n1.local на порт 7000.

В поле "trust_certs" укажите сертификат удаленного сервера: n1.crt

cluster.json (n2.local)
{
    "network": {
        "current": {
            "name": 2,
            "port": 7000,
            "ssl":{
                "cert_chain_path":"ssl/n2.crt",
                "private_key_path":"ssl/n2.key",
                "trust_certs": [
                    "ssl/n1.crt"
                ]
            }
        },
        "nodes": [
            {
                "name": 1,
                "target": "n1.local:7000"
            }
        ]
    }
}

Пример генерации самоподписанных сертификатов для работы в кластерном режиме

Следующие примеры описаны для генерации сертификатов на OC Linux.

Имена выходных файлов соответствуют инструкции из предыдущего пункта: Сетевая настройка кластера из двух нод.

Сгенерируйте приватный ключ и сертификат для сервера n1.local.

openssl req -x509 -nodes -newkey rsa:2048 -outform PEM -subj "/CN=n1.local" -keyout n1.key -out n1.crt

Сгенерируйте приватный ключ и сертификат для сервера n2.local.

openssl req -x509 -nodes -newkey rsa:2048 -outform PEM -subj "/CN=n2.local" -keyout n2.key -out n2.crt

Была ли статья полезна?

Да
Нет
Предыдущая
Обновление Proceset на Linux
8 (800) 555-89-028 (495) 150-31-45team@infomaximum.com
Для бизнеса
© 20102024. ООО «Инфомаксимум»
Мы используем файлы cookies, чтобы сайт был лучше для вас.