Межсерверное взаимодействие🔗
Межсерверное взаимодействие необходимо для эффективной передачи сообщений между серверами. Для достижения этой цели была реализована работа между сервером Macroscop и брокером сообщений RabbitMQ.
Использование брокера RabbitMQ позволяет эффективно передавать сообщения между серверами Macroscop, увеличивая скорость и надежность обмена информацией.
Существует два режима работы брокера RabbitMQ:
одиночный брокер (работает только на главном сервере)
кластер брокеров (работает на нескольких серверах)
Примечание
Функция доступна на серверах Macroscop, работающих под управлением как Windows, так и Linux.
Установка сервиса RabbitMQ
RabbitMQ устанавливается автоматически вместе с серверными приложениями Macroscop.
Предупреждение
Сервис RabbitMQ выключен по умолчанию.
Настройка
Для того чтобы сервер Macroscop и сервис RabbitMQ могли взаимодействовать между собой, необходимо запустить приложение Macroscop Конфигуратор, перейти на страницу Серверы, выделить в списке серверов Общие настройки, затем перейти на вкладку Сервисы и включить опцию Межсерверное взаимодействие.
Настройка пользователя для RabbitMQ
По умолчанию для сервиса RabbitMQ используется следующие настройки:
Логин пользователя сервиса (macroscop)
Пароль пользователя сервиса (masterkey)
Можно задать собственные логин и пароль.
Для того чтобы изменить логин пользователя, необходимо нажать кнопку Смена пользователя. Откроется окно для смены пользователя. В данном окне можно задать новое имя пользователя и пароль.
Предупреждение
Если указать старое имя пользователя, то сервер сменит только пароль.
После смены пользователя или пароля, Серверное приложение Macroscop автоматически сменит пароль от сервиса RabbitMQ.
Для смены пароля необходимо нажать кнопку Изменить пароль. Откроется окно для смены пароля.
SSL-сертификат
Для дополнительной защиты соединения между серверами Macroscop и сервисом RabbitMQ, можно установить SSL-сертификат.
В разделе настроек SSL-сертификата отображается основная информация о сертификате и дата, до которой он действителен.
При применении конфигурации, приложение Macroscop Сервер автоматически настроит конфигурацию RabbitMQ для использования SSL-сертификатов.
Если сертификат защищён с помощью пароля, то при попытке импорта, откроется окно для ввода пароля.
Чтобы отключить использование SSL-сертификата, необходимо убрать галочку с пункта SSL-сертификат.
Генерация SSL-сертификата
Генерация сертификатов выполняется с помощью утилиты OpenSSL.
Генерация разделена на два этапа:
генерация Центра сертификации (позволяет создавать самоподписанные сертификаты и проверять их подлинность)
генерация сертификата
Генерация закрытого ключа Центра сертификации:
openssl genrsa -aes256 -out ca-key.pem 4096
Предупреждение
Во время создания закрытого ключа, OpenSSL попросит ввести пароль для его защиты. Это можно отключить убрав параметр -aes256 из команды.
Генерация корневого сертификата Центра сертификации
openssl req -new -x509 -sha256 -days 5000 -key ca-key.pem -out ca.pem
В случае, если закрытый ключ защищён паролем, то его необходимо ввести. После этого нужно заполнить основную информацию о сертификате.
Генерация закрытого ключа сертификата
openssl req -new -key cert-key.key -out cert.pem
Генерация сертификата
openssl x509 -req -in cert.pem -CA ca.pem -CAkey ca-key.pem -CAcreateserial -days 5000 -out cert.pem
Примечание
Необходимо заполнить основную информацию о сертификате.
Подпись сгенерированного сертификата с помощью Центра сертификации
openssl genrsa -out cert-key.pem 4096
Генерация pfx-файла для импорта через Macroscop Конфигуратор
openssl pkcs12 -export -out Certificate.pfx -inkey cert-key.pem -in cert.pem -certfile ca.pem
Настройка кластера брокеров
Кластер брокеров RabbitMQ позволяет повысить отказоустойчивость.
Чтобы выбрать сервера, которые будут находиться в кластере RabbitMQ, необходимо включить Умное резервирование и нажать кнопку Редактировать.
Предупреждение
Нужно выбрать нечётное количество серверов (минимум - 3 сервера, максимум - 7). Если будет выбрано меньше трёх серверов, то кластер сформирован не будет. Одним из серверов в кластере обязательно должен быть главный сервер. Также, сервера, состоящие в кластере, должны видеть друг друга в сети.