Описание и пример настройки HA-кластера¶
HA-кластер AFIGate повышает отказоустойчивость, снижает простои при отказе узла и позволяет распределять нагрузку между несколькими серверами. Ниже — обзор компонентов, архитектуры и пример развертывания кластера из двух узлов.
Компоненты кластера¶
Узлы AFIGate — серверы с установленным AFIGate; не хранят собственных данных и могут клонироваться, добавляться или удаляться без потери информации.
PostgreSQL/MySQL — основная СУБД: настройки системы, устройства, учетные записи, пароли к целевым системам и, по умолчанию, текстовые логи команд SSH, SQL-запросов и ввода с клавиатуры в RDP-сессиях.
Redis — кэш и очереди; для кластера рекомендуется единый Redis (или Sentinel) на всех узлах.
Хранилище записей сессий — по умолчанию /opt/afigate/core/data/media на
каждом узле; для кластера используется общее хранилище — NFS, S3/MinIO, Ceph
или аналог.
Хранилище логов команд — по умолчанию в основной БД; опционально — внешний Elasticsearch.
Балансировщик — обычно HAProxy, используется для автоматического распределения подключений на активные узлы кластера.
Архитектура кластера¶
Узлы кластера подключаются к общим PostgreSQL/MySQL и Redis, используют общее
хранилище записей сессий и логов команд и работают за балансировщиком. Все
узлы должны использовать одинаковые SECRET_KEY, BOOTSTRAP_TOKEN и
конфигурацию /opt/afigate/config/config.txt; время и DNS на узлах должны
быть синхронизированы.
Пример кластера из двух узлов¶
Пример ниже разворачивает кластер с единым PostgreSQL, единым Redis и общим хранилищем записей на базе NFS:
- требования к кластеру — «Требования к кластеру»;
- общая инфраструктура — «Общее файловое хранилище», «PostgreSQL для кластера», «Redis для кластера»;
- установка узлов AFIGate — «Первый узел AFIGate» и «Дополнительный узел AFIGate»;
- публикация кластера — «Балансировка HAProxy».
Результат: несколько узлов AFIGate, использующих один PostgreSQL/Redis и общее хранилище записей. Любой узел пригоден для доступа к целевым системам; балансировщик распределяет запросы между узлами и переключает пользователей при отказе одного из них.