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

Real Application Clusters

Real Application Clusters (RAC) — это архитектура базы данных, реализованная в системе управления базами данных (СУБД) Oracle Database, которая позволяет нескольким экземплярам СУБД, работающим на разных серверах (узлах), одновременно обращаться к единой общей базе данных, хранящейся на общем дисковом массиве (shared disk). Основное назначение RAC — обеспечение высокой доступности (high availability) и горизонтальной масштабируемости (scalability) за счёт распределения нагрузки между узлами и автоматического восстановления работоспособности при отказе одного или нескольких узлов.

История

Разработка технологии кластеризации для Oracle Database началась в конце 1990-х годов. Первая коммерческая реализация, называвшаяся Oracle Parallel Server (OPS), была выпущена в версии Oracle8i (1999 год). OPS позволял нескольким экземплярам базы данных работать с одними и теми же данными, но имел серьёзные ограничения: он требовал ручного разделения данных между узлами, а при конфликтах доступа к одним и тем же блокам данных возникали блокировки, что снижало производительность.

В 2001 году с выходом Oracle9i технология была значительно переработана и получила название Real Application Clusters. Ключевым нововведением стал механизм Cache Fusion, который позволил экземплярам обмениваться кэшированными блоками данных через высокоскоростное межсоединение (interconnect), а не сбрасывать их на диск при каждом обращении. Это устранило основное узкое место OPS и сделало RAC практичным решением для OLTP-систем.

В последующих версиях Oracle Database (10g, 11g, 12c, 18c, 19c, 21c) функциональность RAC расширялась: были добавлены поддержка до 64 узлов (в версии 11g), интеграция с Oracle Automatic Storage Management (ASM), улучшенные механизмы балансировки нагрузки, поддержка виртуализации и облачных сред. В версии 19c была представлена технология Oracle RAC One Node — вариант RAC, работающий на одном узле, но с возможностью быстрого переключения на другой узел без перезапуска базы данных.

Архитектура

Компоненты

Кластер RAC состоит из следующих основных компонентов:

  1. Узлы (Nodes): физические или виртуальные серверы, на которых установлены экземпляры Oracle Database. Каждый узел имеет собственную операционную систему, память и процессоры.
  2. Экземпляры (Instances): копии СУБД Oracle, запущенные на каждом узле. Каждый экземпляр имеет собственную системную глобальную область (SGA) и фоновые процессы.
  3. Общая база данных (Shared Database): единый набор файлов данных (datafiles), управляющих файлов (control files) и файлов журналов повтора (redo logs), расположенный на общем дисковом хранилище, доступном всем узлам.
  4. Межсоединение (Interconnect): высокоскоростная сеть (обычно Gigabit Ethernet, InfiniBand или Oracle RDS), соединяющая узлы кластера. Используется для передачи служебных сообщений и обмена кэшированными блоками данных между экземплярами (Cache Fusion).
  5. Программное обеспечение кластеризации (Clusterware): Oracle Grid Infrastructure (ранее Oracle Clusterware) — набор программных компонентов, отвечающих за управление кластером, обнаружение отказов, автоматическое переключение (failover) и координацию работы узлов.
  6. Общее хранилище (Shared Storage): дисковая система, доступная всем узлам. Может быть реализована на основе SAN (Storage Area Network), NAS (Network Attached Storage) или с использованием Oracle ASM (Automatic Storage Management).

Принцип работы: Cache Fusion

Cache Fusion — ключевой механизм, отличающий RAC от OPS. Он позволяет экземплярам обмениваться кэшированными блоками данных напрямую через межсоединение, без необходимости записи на диск. Процесс выглядит следующим образом:

  • Каждый экземпляр кэширует блоки данных в своей SGA.
  • Если экземпляру A требуется блок, который уже кэширован в экземпляре B, экземпляр A отправляет запрос экземпляру B через межсоединение.
  • Экземпляр B передаёт блок данных экземпляру A по сети. Если блок был изменён (dirty block), он сначала передаётся, а затем записывается на диск.
  • Если блок не кэширован ни на одном узле, он считывается с диска.

Этот подход значительно снижает нагрузку на дисковую подсистему и обеспечивает линейную масштабируемость для многих типов рабочих нагрузок.

Управление блокировками

В RAC используется распределённая система блокировок, управляемая Global Resource Directory (GRD), который хранит информацию о том, какие блоки данных кэшированы на каких узлах и какие блокировки на них установлены. GRD распределён между всеми экземплярами кластера. Для координации доступа к данным используется протокол Global Cache Service (GCS) и Global Enqueue Service (GES).

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

По типу развёртывания

  • Классический RAC (RAC on-premises): развёртывается на физических или виртуальных серверах в локальном центре обработки данных (ЦОД).
  • RAC в облаке (RAC in Cloud): развёртывается в инфраструктуре облачных провайдеров, таких как Oracle Cloud Infrastructure (OCI), Amazon Web Services (AWS) или Microsoft Azure. В OCI доступна сервисная модель Oracle RAC on Exadata Cloud Service.
  • RAC One Node: вариант RAC, работающий на одном узле, но поддерживающий быстрое переключение на другой узел в случае отказа.

По масштабу

  • Двухузловой кластер (2-node RAC): минимальная конфигурация для обеспечения высокой доступности.
  • Многоузловой кластер (Multi-node RAC): от 3 до 64 узлов (в зависимости от версии Oracle Database). Используется для масштабирования производительности.

Применение

RAC применяется в системах, где критически важны высокая доступность, отказоустойчивость и возможность горизонтального масштабирования. Основные области применения:

  • Системы обработки транзакций (OLTP): банковские системы, системы бронирования, интернет-магазины, ERP-системы (например, SAP, Oracle E-Business Suite). RAC позволяет распределить нагрузку между узлами и обеспечить непрерывную работу при отказе одного из них.
  • Системы поддержки принятия решений (DSS) и хранилища данных (Data Warehousing): RAC может использоваться для параллельной обработки сложных аналитических запросов, ускоряя их выполнение за счёт использования ресурсов нескольких узлов.
  • Платформы для критически важных приложений: системы, требующие 99,999% доступности (five nines), например, в телекоммуникациях, здравоохранении, государственном управлении.
  • Консолидация баз данных: RAC позволяет объединить несколько небольших баз данных на одном кластере, снижая затраты на оборудование и управление.

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

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

  • Высокая доступность: при отказе одного узла оставшиеся узлы продолжают обслуживать запросы. Время восстановления (Recovery Time Objective, RTO) может составлять секунды.
  • Горизонтальная масштабируемость: добавление новых узлов позволяет увеличить пропускную способность системы без замены существующего оборудования.
  • Балансировка нагрузки: запросы могут распределяться между узлами с помощью Oracle Connection Manager, Transparent Application Failover (TAF) или сторонних балансировщиков.
  • Прозрачность для приложений: большинство приложений не требуют изменений для работы в среде RAC, если они правильно используют транзакции и не полагаются на локальные ресурсы узла.

Недостатки

  • Сложность администрирования: настройка и обслуживание кластера RAC требуют высокой квалификации администраторов баз данных (DBA) и системных администраторов.
  • Высокая стоимость: необходимость в лицензиях Oracle Database Enterprise Edition (с опцией RAC), высокоскоростном межсоединении, общем дисковом хранилище и дополнительном оборудовании.
  • Сетевые задержки: при интенсивном обмене данными между узлами (Cache Fusion) могут возникать задержки, связанные с пропускной способностью и латентностью межсоединения.
  • Проблемы с производительностью для некоторых типов нагрузок: приложения с высокой степенью конкуренции за одни и те же блоки данных (например, интенсивные обновления одной таблицы) могут показывать худшую производительность в RAC по сравнению с одноузловой конфигурацией из-за накладных расходов на синхронизацию.

Критика

Основная критика RAC связана с его стоимостью и сложностью. Критики отмечают, что для многих задач можно достичь сопоставимой доступности и масштабируемости с помощью более простых и дешёвых решений, таких как репликация (Oracle Data Guard, Active Data Guard) или использование облачных сервисов с автоматическим восстановлением. Кроме того, RAC не является панацеей от всех проблем: он не защищает от логических ошибок (например, случайного удаления данных) или повреждения файлов базы данных, для чего требуются резервное копирование и другие механизмы.

Интересные факты

  • Технология Cache Fusion была запатентована корпорацией Oracle.
  • Максимальное количество узлов в кластере RAC, официально поддерживаемое в Oracle Database 19c, составляет 64.
  • RAC может работать на платформах Linux, Solaris, AIX, HP-UX и Windows.
  • В версии Oracle Database 12c была представлена технология Oracle Multitenant, которая позволяет запускать множество подключаемых баз данных (PDB) на одном контейнере (CDB) в среде RAC, что упрощает консолидацию.

Источники

  1. Oracle Database Concepts Guide, 19c. Oracle Corporation.
  2. Oracle Real Application Clusters Administration and Deployment Guide, 19c. Oracle Corporation.
  3. Oracle Grid Infrastructure Installation and Upgrade Guide, 19c. Oracle Corporation.
  4. Kyte, T., & Kuhn, D. (2014). Expert Oracle Database Architecture: Oracle Database 9i, 10g, and 11g Programming Techniques and Solutions. Apress.
  5. Chan, J., & Kwan, T. (2012). Oracle RAC 12c: A Practical Guide. Oracle Press.

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

На главную BFOmetr →