В этой статье:
Шаг 1. Получение корневого сертификата
Шаг 2. Настройка взаимодействия кластера BI-серверов с балансировщиком нагрузки
Шаг 3. Настройка взаимодействия кластера серверов управления сессиями с балансировщиком нагрузки
Кластер серверов управления сессиями обеспечивает отказоустойчивость менеджера сессий. При формировании контура промышленной эксплуатации кластер BI-серверов взаимодействует с кластером серверов управления сессиями через балансировщик нагрузки:

mTLS-соединение устанавливается между кластером BI-серверов (клиентом) и балансировщиком нагрузки (сервером), между балансировщиком нагрузки (клиентом) и кластером серверов управления сессиями (сервером). Отношения между элементами системы двусторонние: каждый элемент должен предъявить сертификаты безопасности, подписанные общим корневым сертификатом, для формирования единого пространства доверия.
Для получения подробной информации об алгоритме взаимодействия элементов системы обратитесь к разделу «Конфигурация системы».
Для создания кластера серверов управления сессиями:
Установите менеджер сессий на несколько серверов в ОС Linux.
Установите балансировщик нагрузки в соответствии с официальной документацией HAProxy, nginx. Дистрибутив установки HAProxy доступен для скачивания на официальном сайте HAProxy, при необходимости можно использовать официальный репозиторий на GitHub.
Для настройки взаимодействия элементов системы выполните шаги, указанные ниже.
Получите и разместите корневой сертификат ca.crt в папках:
/opt/foresight/fp10.x-sesman/etc/ssl в каждом менеджере сессий в кластере;
/opt/foresight/ssl на каждом BI-сервере в кластере.
/etc/haproxy/ssl на балансировщике нагрузки HAProxy или /etc/nginx/ssl на балансировщике нагрузки nginx.
Импортируйте корневой сертификат в хранилище доверенных корневых центров сертификации. Для получения подробной информации обратитесь к разделу «Менеджер сессий».
Для обеспечения доверия между элементами системы используйте полученный корневой сертификат для подписания сертификатов безопасности в шагах 2, 3, 4.
Для настройки взаимодействия кластера BI-серверов с балансировщиком нагрузки:
Получите сертификат клиента fp-sesman-client.crt и его закрытый ключ fp-sesman-client.key. Убедитесь, что сертификат подписан корневым сертификатом, полученным в шаге 1.
Разместите сертификат клиента и его закрытый ключ в папке /opt/foresight/ssl.
Задайте адрес балансировщика нагрузки и пути до сертификатов безопасности в подразделе SessionServer в файле settings.xml или реестре:
<Key Name="System">
<Session UseSessionServer="1" />
<SessionServer Host="<балансировщик
нагрузки>" Port="<номер
порта>" CheckSessionAliveInterval="10">
<State SaveObjectState="1" ObjectStateSaveInterval="30"></State>
<Ssl RootCertificateFile="/opt/foresight/ssl/ca.crt" ClientCertificateFile="/opt/foresight/ssl/fp-sesman-client.crt"
ClientKeyFile="/opt/foresight/ssl/fp-sesman-client.key"></Ssl>
</SessionServer>
</Key>
Где:
<балансировщик нагрузки>. IP-адрес или DNS-имя сервера, на котором установлен балансировщик нагрузки;
<номер порта>. Номер порта, по которому доступен балансировщик нагрузки.
Повторите действия на каждом BI-сервере в кластере. После чего будет настроено взаимодействие кластера BI-серверов с балансировщиком нагрузки.
Для настройки взаимодействия кластера серверов управления сессиями с балансировщиком нагрузки:
Получите сертификат сервера server.crt и его закрытый ключ server.key. Убедитесь, что сертификат подписан корневым сертификатом, полученным в шаге 1.
Разместите сертификат сервера и его закрытый ключ в папке /opt/foresight/fp10.x-sesman/etc/ssl.
Убедитесь, что в группе параметров ssl в файле config.yaml заданы корректные пути до сертификатов безопасности. По умолчанию используются следующие значения параметров:
ssl:
rootCertificateFile: /opt/foresight/fp10.x-sesman/etc/ssl/ca.crt
serverCertificateFile: /opt/foresight/fp10.x-sesman/etc/ssl/server.crt
serverKeyFile: /opt/foresight/fp10.x-sesman/etc/ssl/server.key
При изменении файла config.yaml перезапустите службу sesman:
sudo systemctl restart sesman
Повторите действия в каждом менеджере сессий в кластере. После чего будет настроено взаимодействие кластера серверов управления сессиями с балансировщиком нагрузки.
Балансировщик нагрузки используется в двух ролях: в роли сервера для кластера BI-серверов и в роли клиента для кластера серверов управления сессиями.
Для настройки взаимодействия балансировщика нагрузки с кластером BI-серверов и кластером серверов управления сессиями:
Сгенерируйте закрытый ключ:
haproxy-server.key (сервер) и haproxy-client.key (клиент) при использовании HAProxy;
nginx-server.key (сервер) и nginx-client.key (клиент) при использовании nginx.
Создайте запросы на выпуск сертификатов безопасности:
при создании запроса на выпуск сертификата сервера укажите параметры CN и SAN (IP-адрес или DNS-имя сервера) для проверки имени хоста;
при создании запроса на выпуск сертификата клиента укажите параметр CN.
Подпишите запросы общим корневым сертификатом, полученным в шаге 1.
Объедините сертификат сервера и его закрытый ключ в файл haproxy.pem/nginx.pem, сертификат клиента и его закрытый ключ в файл client.pem.
Разместите сертификаты безопасности в папке:
/etc/haproxy/ssl при использовании HAProxy;
/etc/nginx/ssl при использовании nginx.
Измените конфигурационный файл:
/etc/haproxy/haproxy.cfg при использовании HAProxy;
/etc/nginx/nginx.conf при использовании nginx.
Пример файла /etc/haproxy/haproxy.cfg с минимально необходимыми настройками:
В разделе frontend sesman_frontend укажите путь до сертификата сервера и корневого сертификата. В разделе backend sesman_backend задайте адреса менеджеров сессий, укажите путь до корневого сертификата и сертификата клиента. Для получения подробной информации о настройках в файле haproxy.cfg обратитесь к официальной документации HAProxy.
Для применения изменения конфигурации балансировщика нагрузки перезапустите службу haproxy:
sudo systemctl restart haproxy
Пример файла /etc/nginx/nginx.conf с минимально необходимыми настройками:
В разделе upstream sesman_backend задайте адреса менеджеров сессий. В разделе server укажите путь до сертификата сервера, корневого сертификата и сертификата клиента. Для получения подробной информации о настройках в файле nginx.conf обратитесь к официальной документации nginx.
Для применения изменения конфигурации балансировщика нагрузки перезапустите службу nginx:
sudo systemctl restart nginx
После выполнения действий будет настроено взаимодействие балансировщика нагрузки с кластером BI-серверов и кластером серверов управления сессиями.
Алгоритм соединения BI-сервера с балансировщиком нагрузки по протоколу mTLS:
BI-сервер подключается к балансировщку нагрузки по указанному IP-адресу или DNS-имени сервера, на котором установлен балансировщик нагрузки.
Балансировщик нагрузки отправляет сертификат сервера haproxy.pem/nginx.pem BI-серверу.
BI-сервер проверяет полученный сертификат сервера с помощью корневого сертификата ca.crt. Если сертификат сервера подписан корневым сертификатом, действителен на момент его использования, IP-адрес или DNS-имя сервера совпадает с параметрами сертификата CN или SAN, то BI-сервер отправляет сертификат клиента fp-sesman-client.crt балансировщику нагрузки.
Балансировщик нагрузки проверяет полученный сертификат клиента с помощью корневого сертификата ca.crt.
Алгоритм соединения балансировщика нагрузки с менеджером сессий по протоколу mTLS:
Балансировщик нагрузки подключается к менеджеру сессий по указанному IP-адресу или DNS-имени сервера, на котором установлен менеджер сессий.
Менеджер сессий отправляет сертификат сервера server.crt балансировщику нагрузки.
Балансировщик проверяет полученный сертификат сервера с помощью корневого сертификата ca.crt. Если сертификат сервера подписан корневым сертификатом, действителен на момент его использования, то балансировщик нагрузки отправляет сертификат клиента client.pem менеджеру сессий.
Менеджер сессий проверяет полученный сертификат клиента с помощью корневого сертификата ca.crt.
После успешной проверки сертификатов безопасности устанавливается защищённое соединение между элементами системы по протоколу mTLS.
В HAProxy используется настройка «verify required» в разделах frontend sesman_frontend и backend sesman_backend, указание настройки в разделе backend sesman_backend не обязательно, проверка параметра CN не выполняется.
В nginx по умолчанию проверяется параметр CN, заданный в сертификате сервера. Значение параметра CN должно совпадать со значением параметра «grpc_ssl_name». В каждом менеджере сессий при генерации сертификатов безопасности должен быть указано общее значение параметра CN, например, «sesman».
Если авторизация пользователя в веб-приложении выполняется с ошибкой, то используйте файл с логами /var/log/nginx/error.log. В файле содержатся только успешно пройденные проверки сертификатов. Ошибки «upstream SSL certificate does not match» или «No route to host» указывают на проблемы с сертификатами или сетью.
См. также:
Настройка отказоустойчивости системы | Менеджер сессий | Сервер состояний