Активный-активный резерв
Активный-активный резерв (англ. Active-Active, A-A) — это конфигурация отказоустойчивой системы, в которой два или более узла (сервера, контроллера, хранилища данных) одновременно обрабатывают рабочие запросы и взаимно резервируют друг друга. В отличие от схемы «активный-пассивный», где резервный узел простаивает до момента отказа основного, в конфигурации «активный-активный» все узлы находятся в состоянии полной рабочей нагрузки, обеспечивая как балансировку трафика, так и непрерывность обслуживания при выходе из строя любого из них.
Принцип работы
В системе «активный-активный» каждый узел имеет собственные вычислительные ресурсы (процессор, память, сетевые интерфейсы) и доступ к общему или реплицируемому хранилищу данных. Входящие запросы распределяются между узлами с помощью балансировщика нагрузки или алгоритмов распределённой маршрутизации. При отказе одного узла его нагрузка автоматически перераспределяется между оставшимися работающими узлами. Для обеспечения целостности данных используется механизм синхронизации состояний — как правило, репликация данных в реальном времени или транзакционная согласованность через кластерную файловую систему.
Требования к синхронизации
Ключевое условие работы конфигурации — согласованность данных между узлами. Если два узла одновременно изменяют один и тот же блок данных, возникает конфликт, который может привести к потере или повреждению информации. Для предотвращения таких ситуаций применяются:
- Распределённые блокировки — механизм, запрещающий одновременную запись в один и тот же ресурс с разных узлов.
- Оптимистическая блокировка — разрешение одновременной записи с последующей проверкой и откатом при обнаружении конфликта.
- Протоколы консенсуса (например, Paxos или Raft) — для систем, где критична строгая согласованность (например, в распределённых базах данных).
Виды архитектур
С общим хранилищем (Shared Storage)
Все узлы подключаются к одному и тому же дисковому массиву (SAN, NAS). Преимущество — простота настройки и единая копия данных. Недостаток — единая точка отказа в виде самого хранилища. Для устранения этого недостатка хранилище также дублируется (например, RAID-массивы или репликация между контроллерами).
С реплицированным хранилищем (Shared Nothing)
Каждый узел имеет собственное локальное хранилище, а данные синхронизируются между узлами программными средствами (репликация на уровне файловой системы, базы данных или приложения). Преимущество — отсутствие единой точки отказа на уровне дисков. Недостаток — сложность обеспечения консистентности при высокой частоте изменений.
Гибридная
Сочетает общее хранилище для статических данных и локальную репликацию для часто изменяемых. Используется в крупных корпоративных системах, где требуется баланс между производительностью и надёжностью.
Преимущества и недостатки
Преимущества
- Высокая доступность (High Availability) — при отказе одного узла система продолжает работу без перерыва, хотя производительность может временно снизиться.
- Масштабируемость — добавление новых узлов увеличивает общую производительность системы (горизонтальное масштабирование).
- Эффективность использования ресурсов — в отличие от схемы «активный-пассивный», где резервный узел простаивает, здесь все узлы задействованы в обработке запросов.
- Балансировка нагрузки — распределение трафика между узлами снижает пиковую нагрузку на каждый отдельный узел.
Недостатки
- Сложность реализации — требуется разработка или настройка механизмов синхронизации, разрешения конфликтов и распределённых блокировок.
- Риск конфликтов данных — при одновременном изменении одного и того же ресурса с разных узлов возможны коллизии, которые требуют разрешения на уровне приложения.
- Стоимость — лицензирование ПО для кластеризации, а также затраты на сетевое оборудование и системы хранения данных могут быть выше, чем для пассивного резерва.
- Сложность отладки — ошибки, связанные с состоянием гонки или рассинхронизацией, трудно воспроизвести и диагностировать.
Применение
Конфигурация «активный-активный» широко используется в критически важных информационных системах, где недопустимы простои:
- Веб-серверы и серверы приложений — крупные интернет-сервисы (поисковые системы, социальные сети, онлайн-магазины) используют тысячи узлов в активной конфигурации.
- Базы данных — распределённые СУБД (например, Cassandra, CockroachDB, кластеры MySQL Group Replication) работают в режиме «активный-активный».
- Системы хранения данных — контроллеры СХД (например, Dell EMC PowerStore, NetApp AFF) могут работать в паре «активный-активный», обрабатывая запросы ввода-вывода одновременно.
- Телекоммуникационное оборудование — базовые станции сотовой связи, коммутаторы и маршрутизаторы часто используют активную избыточность для обеспечения непрерывности связи.
- Промышленные системы управления — в автоматизированных системах управления технологическими процессами (АСУ ТП) резервирование по схеме «активный-активный» применяется для управления непрерывными производствами.
Примеры реализации
Кластеры веб-серверов
Два сервера Nginx или Apache, работающие под управлением балансировщика нагрузки (например, HAProxy или Nginx Plus). Каждый сервер обрабатывает запросы, а при отказе одного балансировщик перенаправляет весь трафик на исправный. Для синхронизации сессионных данных используется общее хранилище (Redis, Memcached) или репликация файлов cookie.
Активные контроллеры СХД
В системах хранения данных, таких как Huawei OceanStor или российские СХД «Аэродиск», два контроллера одновременно обрабатывают запросы ввода-вывода. Каждый контроллер имеет доступ ко всем дискам, и при отказе одного контроллера второй принимает на себя его нагрузку без потери данных.
Распределённые базы данных
В СУБД Apache Cassandra все узлы кластера равноправны и могут принимать запросы на запись. При отказе одного узла данные реплицируются на другие узлы в соответствии с настройками фактора репликации. В российском сегменте аналогичные решения применяются в системах управления базами данных, например, в «Яндекс.Облаке» (Managed Service for ClickHouse, Managed Service for PostgreSQL с кластеризацией).
Сравнение с другими схемами резервирования
| Характеристика | Активный-активный | Активный-пассивный | Активный-активный с «горячим» резервом |
|---|---|---|---|
| Загрузка резервного узла | 100% | 0% | 100% (но без приёма запросов) |
| Время переключения при отказе | Мгновенно | Секунды–минуты | Мгновенно (при условии синхронизации) |
| Производительность при отказе | Снижается пропорционально числу отказавших узлов | Не изменяется (резервный берёт нагрузку) | Снижается |
| Сложность настройки | Высокая | Низкая | Средняя |
| Риск конфликтов данных | Есть | Нет | Нет (при строгой синхронизации) |
Источники
- Кэтлин М. (Kathleen M.) и др. «Архитектура отказоустойчивых систем». — М.: Вильямс, 2018.
- Документация по кластеризации СУБД PostgreSQL (версия 16). — The PostgreSQL Global Development Group, 2024.
- Спецификация IEEE 802.1AX-2008 (Link Aggregation) — основа для активной балансировки сетевых интерфейсов.
- «Высокодоступные системы на базе Linux». — Linux Foundation, 2023.
- Материалы конференции HighLoad++ 2022 (Москва): доклады о кластеризации СХД и баз данных.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →