8 800 555-89-02
Войти
Infomaximum/Документация
12.2022

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

За настройку кластерного режима отвечает конфигурационный файл: 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"
            }
        ]
    }
}

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

Предположим, есть два сервера с 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" — файл с сертефикатом;
  • "private_key_path" — файл с приватным ключом;
  • "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

Предыдущая
Активация ключей
Следующая
Установка модуля автоматизации на другой сервер
8 (800) 555-89-028 (495) 150-31-45team@infomaximum.com
Для бизнесаПродуктРешенияКейсыТехнологии
© 2010–2023. ООО «Инфомаксимум»Политика обработки персональных данных
Мы используем файлы cookies, чтобы сайт был лучше для вас.