Открыть сервис

Активный-активный резерв

Активный-активный резерв (англ. 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 →