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 состоит из следующих основных компонентов:
- Узлы (Nodes): физические или виртуальные серверы, на которых установлены экземпляры Oracle Database. Каждый узел имеет собственную операционную систему, память и процессоры.
- Экземпляры (Instances): копии СУБД Oracle, запущенные на каждом узле. Каждый экземпляр имеет собственную системную глобальную область (SGA) и фоновые процессы.
- Общая база данных (Shared Database): единый набор файлов данных (datafiles), управляющих файлов (control files) и файлов журналов повтора (redo logs), расположенный на общем дисковом хранилище, доступном всем узлам.
- Межсоединение (Interconnect): высокоскоростная сеть (обычно Gigabit Ethernet, InfiniBand или Oracle RDS), соединяющая узлы кластера. Используется для передачи служебных сообщений и обмена кэшированными блоками данных между экземплярами (Cache Fusion).
- Программное обеспечение кластеризации (Clusterware): Oracle Grid Infrastructure (ранее Oracle Clusterware) — набор программных компонентов, отвечающих за управление кластером, обнаружение отказов, автоматическое переключение (failover) и координацию работы узлов.
- Общее хранилище (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, что упрощает консолидацию.
Источники
- Oracle Database Concepts Guide, 19c. Oracle Corporation.
- Oracle Real Application Clusters Administration and Deployment Guide, 19c. Oracle Corporation.
- Oracle Grid Infrastructure Installation and Upgrade Guide, 19c. Oracle Corporation.
- Kyte, T., & Kuhn, D. (2014). Expert Oracle Database Architecture: Oracle Database 9i, 10g, and 11g Programming Techniques and Solutions. Apress.
- Chan, J., & Kwan, T. (2012). Oracle RAC 12c: A Practical Guide. Oracle Press.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →