- Отказоустойчивое развёртывание
- Требования к окружению
- Балансировка веб-интерфейсов
- Балансировка gRPC
- Балансировка RADIUS
Отказоустойчивое развёртывание
Avanpost FAM может быть развёрнут в виде отказоустойчивого кластера с использованием следующих решений:
- Балансировка нагрузки.
- Репликация базы данных.
Данное решение обладает следующими преимуществами:
- Может быть развёрнуто в минимальном исполнении (к примеру, в объёме двух узлов за общим балансировщиком) с последующим добавлением дополнительных узлов кластера;
- Позволяет использовать имеющийся корпоративный балансировщик без необходимости развёртывания дополнительных серверов для обеспечения балансировки нагрузки;
- Предоставляет возможность горизонтального масштабирования по производительности путем увеличения количества экземпляров серверных компонентов без изменения архитектуры.
Общая верхнеуровневая схема отказоустойчивого кластера выглядит следующим образом:
Возможные программные продукты, подходящие для реализации балансировки нагрузки:
- Nginx Plus.
- Nginx.
- HAProxy.
Для резервирования базы данных можно применять средства СУБД PostgreSQL с open-source компонентами.
Резервирование компонента Avanpost FAM Server
Резервирование компонента Avanpost FAM Server обеспечивается путём развёртывания нескольких узлов (виртуальных машин, серверов или контейнеров), на которых запускается и работает компонент Avanpost FAM Server.
Балансировка по протоколу HTTPS
В документации представлен пример настройки отказоустойчивости с использованием протокола HTTP. Реализация балансировки по протоколу HTTPS зависит от специфики инфраструктуры и выбранных технологий. Эти технологии могут различаться в зависимости от эксплуатирующей организации. Обычно такие настройки выполняются на стороне клиента с учётом особенностей его сетевой архитектуры, применяемых средств безопасности и внутренних требований.
Поскольку единой универсальной инструкции для настройки HTTPS не существует, рекомендуется использовать общие принципы, описанные в документации, и адаптировать их с учётом особенностей используемого балансировщика и требований вашей инфраструктуры.
Компонент Avanpost FAM Server функционирует без долговременного хранения состояния, поэтому может быть масштабирован на любое количество узлов (виртуальных машин, серверов или контейнеров). Все функции хранения данных и синхронизации между узлами Avanpost FAM Server обеспечиваются функциями кластера СУБД PostgreSQL, поэтому компонент не требует прогрева или синхронизации кеша в случае необходимости запуска дополнительных узлов Avanpost FAM Server.
Балансировка нагрузки позволяет обеспечить работу в следующих режимах:
- Распределение нагрузки между узлами кластера (схема Active-Active) с целью снижения нагрузки на каждый конкретный узел Avanpost FAM Server.
- Резервирование на случай отказа одного или нескольких узлов путём применения горячего резерва (схема Active-Passive).
В зависимости от прикладных задач, требуемых для решения системой Avanpost FAM, осуществляется балансировка нагрузки для следующих функций:
- HTTP-интерфейс аутентификации и личного кабинета;
- HTTP-интерфейс административной консоли и REST API системы Avanpost FAM;
- HTTP-интерфейс Reverse Proxy;
- RADIUS-интерфейс;
- gRPC-интерфейс;
- Компоненты Avanpost FAM Mobile Services для Avanpost Authenticator.
Резервирование при помощи балансировки может быть выполнено целиком для всех функций системы, либо частично. Состав резервируемых функций определяется исходя из требований к экземпляру системы Avanpost FAM.
Для балансировки нагрузки может быть использован любой балансировщик, обладающий следующими функциями:
- Балансировка TCP-запросов (для функций HTTP и gRPC-интерфейсов) с поддержкой TCP Health Check.
- Балансировка UDP-запросов (для функции RADIUS) с поддержкой UDP Health Check либо с возможностью использования TCP Health Check для отключения UDP-интерфейсов вышедших из строя узлов системы.
Балансировка для HTTP-интерфейса аутентификации и личного кабинета
Балансировка настраивается для обеспечения отказоустойчивости на случай недоступности одного из узлов для трафика, направляемого на:
- Веб-интерфейс аутентификации для прохождения аутентификации в сценариях OAuth 2.0, OpenID Connect, SAML 2.0, Reverse Proxy;
- Веб-интерфейс личного кабинета для загрузки SPA-приложения;
- REST API для функционирования SPA-приложения личного кабинета.
Схема резервирования для HTTP-интерфейса аутентификации и личного кабинета:
Балансировка для HTTP-интерфейса Reverse Proxy
Балансировка HTTP-интерфейса Reverse Proxy настраивается для обеспечения отказоустойчивости на случай недоступности одного из узлов для трафика, направляемого на Reverse Proxy, а также с целью снижения нагрузки на остальные узлы системы. Для функций Reverse Proxy целесообразно применение одного из двух вариантов развёртывания:
- Развёртывание отдельных узлов, Avanpost FAM Server в количестве от 2-х, обслуживающих только Reverse Proxy-трафик. Данный вариант является наиболее предпочтительным в тех случаях, если используется большое число приложений, подключенных посредством механизма Reverse Proxy.
- Распределение нагрузки между несколькими узлами Avanpost FAM Server, решающими и другие функции системы.
Схема решения по балансировке трафика, поступающего на Reverse Proxy-интерфейс системы:
Балансировка для HTTP-интерфейса административной консоли и REST API
Балансировка HTTP-интерфейса административной консоли и REST API настраивается для обеспечения отказоустойчивости на случай недоступности одного из узлов для трафика, направляемого на:
- Веб-интерфейс административной консоли для загрузки SPA-приложения административной консоли;
- REST API для работы SPA-приложения административной консоли и сторонних интеграций, выполненных через REST API.
Разворачивать отдельные узлы Avanpost FAM Server с целью оптимизации нагрузки для административной консоли и REST API как правило не требуется.
Схема решения по балансировке трафика для административной консоли и REST API:
Балансировка для RADIUS-интерфейса
Балансировка RADIUS UDP-трафика осуществляется для обеспечения отказоустойчивости в случае подключения к Avanpost FAM критичных с точки зрения доступности сервисов, к примеру, корпоративных VPN или VDI-решений.
Схема решения по балансировке для RADIUS-трафика:
Балансировка для gRPC-интерфейса
Балансировка gRPC-трафика применяется для обеспечения отказоустойчивости в случае массового использования дополнительных компонентов из состава Avanpost FAM, таких как:
- Avanpost FAM Agent для решения задачи Enterprise SSO-аутентификации в унаследованные десктопные приложения;
- Avanpost FAM Credential Provider для решения задачи аутентификации на рабочие станции и сервера под управлением ОС семейства Windows, в том числе с использованием RDP;
- Avanpost FAM PAM Linux для решения задачи аутентификации на рабочие станции и сервера под управлением ОС Linux.
Для балансировки gRPC-трафика балансировщик должен обладать следующими характеристиками:
- Поддержка балансировки TCP, в том числе HTTP/2;
- Поддержка TCP Health Checks с автоматическим отключением вышедшего из строя узла.
Схема решения по балансировке для gRPC-трафика:
Резервирование компонентов Avanpost FAM Mobile Services для Avanpost Authenticator
Резервирование компонентов Avanpost FAM Mobile Services может применяться для повышения доступности сервиса MFA с использованием мобильного аутентификатора Avanpost Authenticator.
Для резервирования следует использовать TCP-балансировщик, в роли которого можно как использовать тот же экземпляр балансировщика, что и для основного трафика TCP. Также может быть использован отдельный балансировщик, размещённый в DMZ.
Схема резервирования компонентов Avanpost FAM Mobile Services:
Резервирование базы данных системы
Резервирование обеспечивается путём построения кластера на базе СУБД PostgreSQL с репликацией данных.
Репликация осуществляется в режиме Master-Slave и позволяет обеспечить резервирование базы данных системы. Все узлы системы работают с одним экземпляром базы данных.
В случае отказа Master-экземпляра базы данных осуществляется автоматическое переключение на Slave. После восстановления Master-экземпляра базы данных выполняется операция обратного ручного переключения на Master-экземпляр.
Схема резервирования базы данных системы:
Минимальный состав виртуальных машин для отказоустойчивого развёртывания
Минимальная конфигурация состоит из следующих виртуальных машин:
| Наименование машины | Кол-во | Назначение | Примечание |
|---|---|---|---|
| TCP/UDP Load Balancer | 1* | Балансировщик входящего TCP/UDP-трафика, Health Check для TCP/UDP-трафика с отключением вышедшего из строя узла Avanpost FAM Server или узла Avanpost FAM Mobile Services | При наличии развёрнутого стороннего корпоративного балансировщика, подходящего для решения задач балансировки, можно исключить данную машину |
| Avanpost FAM Server | 2 | Обслуживание всех запросов | - |
| DB Load Balancer | 1 | Балансировщик трафика к БД PostgreSQL | - |
| DB | 2 | Кластер БД из двух узлов (Master-Slave) | - |
| TCP/UDP DMZ Load Balancer | 1* | Балансировщик входящего TCP/UDP-трафика для DMZ-компонентов | При наличии развёрнутого стороннего корпоративного балансировщика, подходящего для решения задач балансировки, можно исключить данную машину |
| Avanpost FAM Mobile Services | 2 | DMZ-компоненты для обслуживания мобильного приложения-аутентификатора Avanpost Authenticator | При отсутствии потребности в мобильном аутентификаторе Avanpost Authenticator можно исключить данные машины |
Аппаратная конфигурация каждой из машин определяется исходя из рекомендаций по масштабированию и планируемого профиля нагрузки.
Получение значений IP-адресов пользователей
Алгоритм получения значения IP-адреса:
- Во входящем HTTP-запросе система проверяет наличие специальных служебных заголовков, которые могут содержать IP-адрес, сначала X-Forwarded-For, потом X-Real-IP.
- Если заголовки отсутствуют, то значение для IP-адреса извлекается из сетевых настроек входящего HTTP-запроса.
Для получения IP-адресов пользователей и их записи в журнал безопасности нужно добавить передачу одного из служебных заголовков в конфигурации балансировщика.
Требования к окружению
Перед выполнением развёртывания по текущей инструкции необходимо выполнение следующих условий:
В ОС должны быть установлены следующие программы:
- openssl(программа управления сертификатами);- tar(программа архивирования);- psql(CLI-клиент из состава PostgreSQL);- nginx(веб-сервер/прокси-сервер);- sudo(программа выполнения команд от имени суперпользователя).
Балансировка веб-интерфейсов
Балансировка веб-интерфейсов – метод распределения нагрузки между несколькими серверами, обслуживающими веб-приложения, с целью обеспечения высокой доступности, повышения производительности и отказоустойчивости.
При равномерном распределении трафика между серверами каждый сервер получает только ту часть запросов, которую способен обработать. Это позволяет распределить нагрузку и предотвратить перегрузку одного конкретного сервера, что может привести к снижению производительности или сбою в работе приложения.
Данный метод подходит для распределения HTTP-трафика между несколькими серверами.
Для настройки балансировки веб-интерфейсов необходимо:
На серверах со службой FAM в конфигурационном файле config.json в качестве хоста указать IP-адрес сервера:
app-server1"server": { "host": "%IP-адрес сервера 1%", "port": 4008 }app-server2
"server": { "host": "%IP-адрес сервера 2%", "port": 4008 }Создать конфигурационный файл /etc/nginx/sites-available/lb.conf, заполнить параметрами, указанными ниже, заменив %заполнители% на значения IP-адресов :
upstream backend { server %IP-адрес сервера приложений 1%:4008; server %IP-адрес сервера приложений 2%:4008; } server { listen 80; server_name idp.avanpost.local location / { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $http_host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }В конфигурационном файле /etc/nginx/nginx.conf добавить запись в секцию http:
include /etc/nginx/sites-available/*;
- Перезапустить службу nginx.
Балансировка gRPC
Балансировка нагрузки gRPC — это процесс распределения входящих запросов между несколькими экземплярами gRPC-серверов для обеспечения оптимальной производительности и доступности при разработке распределенных приложений с использованием gRPC-протокола.
Данный метод подходит для распределения gRPC-трафика между несколькими серверами.
Для настройки балансировки gRPC необходимо:
Отредактировать файл /etc/nginx/sites-available/lb.conf:
upstream grpc { server %IP-адрес сервера приложений 1%:9007; server %IP-адрес сервера приложений 2%:9007; } server { listen 9007; server_name grpc.avanpost.local location / { proxy_pass http://grpc; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $http_host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }- Перезапустить службу nginx.
- В результате изменений интерфейс gRPC будет доступен по адресу http://grpc.avanpost.local:9007.
Балансировка RADIUS
Необходима информация о балансировке RADIUS протокола







