Настройка кластерного режима
Кластерный режим позволяет подключить несколько агентов автоматизации, чтобы распределить нагрузку с одного агента на несколько.
За настройку кластерного режима отвечает конфигурационный файл: 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"
— файл с сертификатом 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
Была ли статья полезна?