Введение
Управление аутентификацией и авторизацией пользователей требует обеспечения высокой доступности NAC-системы, т. к. в случае её отказа подключение пользователей и эндпоинтов станет невозможным.
Резервирование Eltex-NAICE выполняется по схеме Active-Active с использованием VRRP-адреса, что позволяет использовать один RADIUS-сервер в настройках сетевых устройств и зарезервировать подключение для сетевых устройств, настройки которых не поддерживают указание нескольких RADIUS-серверов. Для настройки схемы с резервирование требуется выделить 4 виртуальных (или физических) сервера: 2 для функционирования сервисов NAICE, 2 для функционирования СУБД PostgreSQL, отвечающей за хранение данных.
Установка обновлением схемы с резервированием на хост, который ранее использовался для работы системы в однохостовом режиме не допускается
Порядок действий при переходе с однохостовой схемы на схему с резервированием описан в v1.1_3.8.1 Обновление PostgreSQL при переходе со схемы с однохостовой установкой на схему с резервированием.
Общая схема резервирования
- Резервирование NAICE выполняется по схеме Active-Active, возможно обращение к любому серверу NAICE протоколу RADIUS со стороны сетевых устройств. Потребует настройки одного инстанса radius-server host с указанием VIP адреса на сетевом оборудовании, либо двух инстансов radius-server host с указанием реальных адресов NAICE.
- Между IP-адресами серверов с NAICE используется дополнительно VIP, зарезервированный по протоколу VRRP с использованием сервиса keepalived. Данный адрес также может использоваться сетевым оборудованием для обмена RADIUS-трафиком и позволяет ограничиться настройкой только одного инстанса radius-server host на нём. Также адрес используется для административного доступа: подключение к WEB-интерфейсу управления.
- Для резервирования БД PostgreSQL используется replication manager. Резервирование выполняется на двух нодах, которые имеют роли Primary и Standby.
- В настройках подключения к БД сервисов NAICE указываются оба адреса БД.
Для лицензирования схемы с резервированием требуется две лицензии для каждого из хостов NAICE. Лицензии должны иметь уникальные Product ID, но одинаковый ключ лицензии.
Системные требования к серверам
Системные требования к серверам описаны в разделе "Установка с резервированием" статьи v1.1_3.1 Системные требования
Установка
Возможна онлайн и оффлайн установка.
Установка онлайн возможна на все поддерживаемые типы ОС и описана далее.
Оффлайн установка (закрытый контур) описана в разделе v1.1_3.4.1 Установка схемы с резервированием в закрытом контуре (с использованием VRRP)
Онлайн установка
Для выполнения онлайн установки требуется обеспечить с хостов, на которые выполняется установка, прямой доступ в сеть Интернет (без использования прокси-сервера или иных способов, которые вызывают подмену сертификатов конечных сайтов, к которым выполняется обращение в ходе установки).
Требуется указывать IP-адреса целевых серверов при выполнении установки! Использование доменных имен не допускается!
Установка выполняется с помощью двух плейбуков ansible:
- Выполняется установка СУБД PostgrteSQL в кластере плейбуком
install-postgres-cluster.yml. - Выполняется установка сервисов NAICE и сервиса
keepalivedплейбукомreservation-naice-services.yml.
Подготовка к установке
Адреса целевых хостов, на которых будет выполняться установка, определяется в файле inventory/hosts-cluster.yml.
Для СУБД PostgreSQL необходимо задать адреса в разделе postgres-cluster:
# Группа хостов для установки postgres-cluster (primary + standby)
postgres-cluster:
hosts:
node_primary:
ansible_host: <IP-адрес хоста для node-1 PostgreSQL>
ansible_port: 22
ansible_user: <логин пользователя>
ansible_ssh_pass: <пароль пользователя>
ansible_become_password: <пароль для повышения привилегий (sudo)>
forwarded_postgresql_port: 5432
forwarded_ssh_port: 15432
node_standby:
ansible_host: <IP-адрес хоста для node-2 PostgreSQL>
ansible_port: 22
ansible_user: <логин пользователя>
ansible_ssh_pass: <пароль пользователя>
ansible_become_password: <пароль для повышения привилегий (sudo)>
forwarded_postgresql_port: 5432
forwarded_ssh_port: 15432
Для установки сервисов NAICE с резервированием необходимо задать адреса в разделе reservation:
# Группа хостов для установки NAICE с резервированием
reservation:
hosts:
master_host:
ansible_host: <IP-адрес хоста 1 для NAICE>
ansible_port: 22
ansible_user: <логин пользователя>
ansible_ssh_pass: <пароль пользователя>
ansible_become_password: <пароль для повышения привилегий (sudo)>
keepalived_interface: <наименование интерфейса, на котором будет настроен VIP-адрес, например eth0>
backup_host:
ansible_host: 192.168.0.102
ansible_port: 22
ansible_user: <логин пользователя>
ansible_ssh_pass: <пароль пользователя>
ansible_become_password: <пароль для повышения привилегий (sudo)>
keepalived_interface: <наименование интерфейса, на котором будет настроен VIP-адрес, например eth0>
vars:
keepalived_vip: <VIP-адрес, без маски, например 192.168.0.11>
При выполнении онлайн установки не требуется указывать данные для доступа к хосту, на котором запускается плейбук, в разделе Local actions. Данный раздел используется только при выполнении установки в закрытом контуре.
Установка кластера СУБД PostgreSQL
Выполнить плейбук:
ansible-playbook install-postgres-cluster.yml -i inventory/hosts-cluster.yml
Результатом выполнения плейбука будет установка СУБД PostgreSQL в кластере на серверах, указанных в node_primary и node_standby. Мастер-нода кластера будет находиться на хосте node_primary.
Проверка состояния кластера PostgreSQL после установки описана в инструкции Диагностика состояния кластера БД PostgreSQL.
Установка кластера NAICE
Перед установкой необходимо убедиться, что роль Primary принадлежит ноде PostgreSQL, указанной в переменной node_primary "ansible_host". При необходимости выполнить переключение роли Primary. В противном случае установка не сможет быть завершена.
В настройках подключения к БД сервисов NAICE указываются оба адреса БД, а запись в БД возможна только через Primary-сервер, обязательным условием является использование в URL параметра targetServerType.
Пример:
URSUS_POSTGRES_JDBC_URL:jdbc:postgresql://192.168.0.101:5432,192.168.0.102:5432/ursus?targetServerType=preferPrimary
Адреса взаимодействия с БД берутся из значения ansible_host из раздела postgres-cluster файла hosts-cluster.yml.
Для установки необходимо выполнить плейбук:
ansible-playbook reservation-naice-services.yml -i inventory/hosts-cluster.yml
Проверка состояния кластера NAICE
После завершения установки на одной из нод кластера, NAICE захватит мастерство VRRP и поднимет у себя на интерфейсе VIP-адрес. Для того, чтобы узнать на какой ноде он находится, необходимо выполнить команду на каждой ноде:
ip address show dev <имя интерфейса указанное в переменной keepalived_interface>
VIP-адрес должен быть только на одной ноде кластера. Если адрес отображается на обоих нодах, это, как правило, означает отсутствие связности между ними.
Для работы протокола VRRP требуется наличие L2-связности и возможность передавать мультикаст-трафик на адреса VRRP 00:00:5E:00:01:XX (используемые для рассылки анонсов MAC-адреса определенные в RFC3768).
На хосте зайти в папку установки (по умолчанию /etc/docker-naice) и убедиться, что контейнеры запущены.
Описание схемы работы
Нормальное состояние системы
В нормальном состоянии системы функционируют все четыре хоста.
- Обработка RADIUS-запросов возможна на всех трех адресах кластера;
- Взаимодействие сервисов с БД выполняется по двум реальным адресам нод кластера PostgrteSQL. Нода, доступная для записи в состоянии Primary, определяется автоматически.
Отказ хоста NAICE 1
При отказе хоста NAICE 1 будут автоматически выполнены следующие действия:
- Хост NAICE 2 автоматически перехватит VRRP-мастерство;
- Обработка RADIUS-запросов будет выполняться адресами VIP и реальным адресом хоста NAICE 2.
Отказ хоста БД 1
При отказе хоста БД 1 будут автоматически выполнены следующие действия:
- Хост БД 2 автоматически перейдет в состояние Primary;
- Сервисами NAICE будет определен факт недоступности БД 1 и дальнейшие действия по работе с БД будут выполняться с хостом БД 2;
- Обработка RADIUS-запросов возможна на всех трех адресах кластера.
Восстановление после отказа
- После возвращения в работу хоста NAICE, более высокоприоритетный VRRP инстанс не выполняет перехват мастерства и будет работать в состоянии VRRP BACKUP.
- После возвращения в работу хоста БД PostgreSQL, он будет работать в режиме Standby. Роль Primary останется у текущей ноды кластера.
Восстановление хоста
В случае полной утраты одного из хостов требуется предварительно восстановить стартовое состояние: развернуть ОС, настроить IP-адресацию и пользователей, как было ранее, и выполнить процедуру восстановления.
Восстановление хоста кластера БД PostgreSQL
На оставшейся в работе ноде, выполнить резервное копирование данных в соответствии с инструкцией: v1.1_3.9 Создание резервной копии данных БД и восстановление данных БД.
Повторно развернуть хост для вышедшей из строя ноды кластера с прежней ОС, адресацией и пользователем.
Выполнить плейбук:
ansible-playbook install-postgres-cluster.yml -i inventory/hosts-cluster.yml
После завершения работы плейбука, проверить состояние кластера БД PostgreSQL, убедиться в его работоспособности и проверить работу авторизации и корректности настроек в GUI.
Восстановление хоста сервисов NAICE
Повторно развернуть хост для вышедшей из строя ноды кластера с прежней ОС, адресацией и пользователем.
Выполнить плейбук:
ansible-playbook reservation-naice-services.yml -i inventory/hosts-cluster.yml
При повторном выполнении установки будет выполнен перезапуск всех сервисов NAICE, что приведет к кратковременному (до 5 мин) перерыву в работе комплекса. Необходимо это учитывать при проведении работ по восстановлению.
Также будет выполнен перезапуск сервиса keepalived, что приведет к переходу VRRP-мастерства на более высокоприоритетный инстанс.
В случае, если выполнялось восстановление первого хоста NAICE, будет выпущен новый самоподписанный сертификат HTTPS.
После восстановления, убедиться в работе авторизации и корректной работе всех сервисов.