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

Active/Active кластер

Active/Active кластер — это архитектура отказоустойчивого кластера, в которой все узлы одновременно находятся в активном состоянии и обрабатывают рабочие запросы. В отличие от архитектуры Active/Passive, где резервный узел простаивает до момента отказа основного, в Active/Active кластере каждый узел выполняет полезную работу, что позволяет повысить общую производительность системы и обеспечить непрерывность обслуживания при выходе из строя одного или нескольких компонентов.

Принцип работы

В Active/Active кластере все узлы (серверы, базы данных, приложения) одновременно подключены к единой сети и имеют доступ к общим ресурсам, таким как дисковые массивы или базы данных. Запросы от клиентов распределяются между узлами с помощью балансировщика нагрузки (англ. load balancer). Балансировщик может использовать различные алгоритмы, например, циклический перебор (round-robin), наименьшее количество соединений (least connections) или взвешенное распределение на основе производительности узлов.

Каждый узел обрабатывает свою долю запросов независимо от других. При отказе одного узла балансировщик автоматически перенаправляет его трафик на оставшиеся рабочие узлы. Система продолжает функционировать, хотя её общая пропускная способность временно снижается. После восстановления отказавшего узла он снова включается в пул активных узлов, и нагрузка перераспределяется.

Классификация

Active/Active кластеры можно классифицировать по способу организации доступа к данным и синхронизации состояния:

По типу данных

  • Кластеры с общим хранилищем (Shared Storage). Все узлы имеют доступ к одному и тому же дисковому массиву (SAN, NAS). Требуется механизм блокировок и координации, чтобы избежать конфликтов при одновременной записи. Примеры: Oracle RAC, Microsoft SQL Server Always On Availability Groups.
  • Кластеры с репликацией данных (Shared Nothing). Каждый узел имеет собственное локальное хранилище, а данные синхронизируются между узлами в реальном времени или с задержкой. Примеры: PostgreSQL с потоковой репликацией, Cassandra, MongoDB.

По уровню синхронизации

  • Синхронные кластеры. Запись данных считается завершённой только после подтверждения на всех узлах. Обеспечивает максимальную целостность, но увеличивает задержки.
  • Асинхронные кластеры. Запись подтверждается на одном узле, а затем данные асинхронно распространяются на другие. Увеличивает производительность, но возможна потеря данных при отказе основного узла до завершения репликации.

Преимущества и недостатки

Преимущества

  • Высокая доступность. При отказе одного узла система не останавливается, нагрузка перераспределяется на оставшиеся.
  • Масштабируемость. Производительность системы может быть увеличена добавлением новых узлов без остановки сервиса.
  • Эффективность использования ресурсов. Все узлы выполняют полезную работу, в отличие от пассивного резервирования.
  • Балансировка нагрузки. Равномерное распределение запросов снижает вероятность перегрузки отдельных компонентов.

Недостатки

  • Сложность реализации. Требуется сложное программное обеспечение для синхронизации состояния, управления блокировками и разрешения конфликтов.
  • Проблемы с согласованностью данных. В распределённых системах с асинхронной репликацией возможны расхождения данных (eventual consistency).
  • Высокие требования к сетевой инфраструктуре. Необходима низкая задержка и высокая пропускная способность между узлами.
  • Сложность администрирования. Требуется квалифицированный персонал для настройки и мониторинга кластера.

Применение

Active/Active кластеры широко используются в критически важных системах, где недопустимы длительные простои:

  • Базы данных. Oracle RAC, MySQL Cluster, PostgreSQL с репликацией, Microsoft SQL Server Always On.
  • Веб-серверы. Nginx, Apache HTTP Server в связке с балансировщиками (HAProxy, F5).
  • Облачные платформы. Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform — все они используют Active/Active архитектуру для своих сервисов.
  • Системы управления контентом (CMS). Например, кластеризация WordPress или Drupal для высоконагруженных сайтов.
  • Финансовые системы. Банковские транзакционные системы, биржевые платформы, где требуется высокая надёжность и производительность.

Примеры реализации

Oracle Real Application Clusters (RAC)

Одна из наиболее известных реализаций Active/Active кластера для баз данных. Все узлы Oracle RAC имеют доступ к общему хранилищу (SAN) и используют технологию Cache Fusion для синхронизации кэшей. Это позволяет нескольким узлам одновременно читать и записывать данные без конфликтов.

PostgreSQL с потоковой репликацией

PostgreSQL поддерживает синхронную и асинхронную репликацию. В Active/Active конфигурации может использоваться несколько серверов, каждый из которых принимает запросы на чтение, а запись направляется на один первичный узел (master). Для полной Active/Active архитектуры требуются дополнительные решения, такие как PostgreSQL BDR (Bi-Directional Replication).

Apache Cassandra

Cassandra — распределённая NoSQL база данных, изначально спроектированная как Active/Active кластер. Данные реплицируются на несколько узлов, и любой узел может обрабатывать запросы на чтение и запись. Cassandra обеспечивает высокую доступность и масштабируемость за счёт асинхронной репликации и децентрализованной архитектуры.

Критика

Основные критические замечания к Active/Active кластерам связаны с их сложностью и потенциальными проблемами с согласованностью данных. В системах с синхронной репликацией задержки могут быть значительными, особенно при большом количестве узлов. В асинхронных системах возможна потеря данных при отказе узла до завершения репликации. Кроме того, настройка и обслуживание Active/Active кластера требуют высокой квалификации персонала, что увеличивает эксплуатационные расходы.

Источники

  • Oracle. «Oracle Real Application Clusters (RAC)». Документация Oracle.
  • PostgreSQL Global Development Group. «PostgreSQL Streaming Replication». Официальная документация.
  • Apache Software Foundation. «Apache Cassandra Documentation».
  • Tanenbaum, A. S., & Van Steen, M. (2007). «Distributed Systems: Principles and Paradigms». Pearson Education.
  • Coulouris, G., Dollimore, J., Kindberg, T., & Blair, G. (2012). «Distributed Systems: Concepts and Design». Addison-Wesley.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →