Найти в Дзене
IT for Dummies

Н-н-надо разобраться с синхронной и асинхронной репликации - раз и на всегда!

Оглавление

@Artem_Guschin

Что такое репликация в СХД?

Репликация — это копирование данных с одного хранилища на другое, чтобы обеспечить:

  • отказоустойчивость,
  • доступность,
  • защиту от потерь,
  • катастрофоустойчивость (DR — Disaster Recovery).

Идея репликации данных как концепции — это не изобретение одного конкретного человека, а результат эволюции распределённых вычислений и систем отказоустойчивости в 1960–1980-х годах.

1960

В университетах и оборонных структурах (ARPA, IBM, MIT) начинают обсуждать дублирование компонентов для повышения отказоустойчивости.

ОПЯТЬ И ОПЯТЬ IBM (Батя технологий)  https://telegra.ph/Tehnologii-i-ZLO-06-06

1980-е

Появляется репликация в системах управления базами данных (Sybase, Oracle).

1990-е

Концепции зеркалирования и репликации применяются к дискам и СХД.

2000-е

Amazon, Google и др. внедряют свои системы (Dynamo, Bigtable) с асинхронной и eventually-consistent репликацией.

2022-й

Россия строит собственный подход (спойлер на будущую статью)

Кто конкретно?

Лесли Лэмпорт — автор формальной теории согласованности (Paxos), без которой не было бы корректной репликации в распределённых БД и СХД.

Джим Грей (Jim Gray) — пионер транзакционных систем, автор работы по двухфазному коммиту (2PC), которая лежит в основе синхронной репликации в БД.

Инженеры DEC, IBM, Oracle, Tandem Computers — внедрили первые коммерческие реализации репликации в БД и хранилищах.

Конкретные задачи, которые решает репликация:

1. Отказоустойчивость (High Availability)

Если один массив/сервер/дата-центр выходит из строя — система продолжает работать за счёт копии данных.

Пример:

Упал контроллер/хранилище — приложение автоматически переключается на реплику

2. Защита от потери данных (Data Loss Prevention)

Синхронная репликация может гарантировать нулевые потери (RPO = 0), потому что запись считается завершённой только после попадания на обе площадки.

3. Катастрофоустойчивость (Disaster Recovery)

При пожаре, наводнении, падении метеорита — можно восстановиться из реплики, расположенной в другом регионе.

Асинхронная репликация обычно используется именно для DR.

4. Обеспечение непрерывности бизнеса (Business Continuity)

Позволяет сократить время простоя (RTO) и избежать потерь в критичных бизнес-процессах:

банковские операции, биллинги, логистика и т.д.

5. Чтение с реплики (в некоторых системах)

Некоторые СХД или распределённые файловые системы позволяют разгружать основное хранилище, выполняя чтение с реплики.

Что не делает репликация

  • Не заменяет бэкап: реплика — это зеркало текущего состояния. Удалённые/искажённые данные также попадут в реплику.
  • Не защищает от логических ошибок: например, случайного удаления таблиц.

(про бекап поищи в канале - были статьи)

Вывод (номер 1)

Репликация в СХД — это про непрерывность, доступность и живучесть данных в реальном времени.

Она — основа для построения отказоустойчивых и катастрофоустойчивых архитектур.

Что такое синхронная репликация

Синхронная репликация — это механизм, при котором запись данных на основное хранилище не считается завершённой, пока эти данные не будут успешно записаны и на удалённое (зеркальное) хранилище.

Иными словами, клиент получает ACK (подтверждение записи) только тогда, когда данные записаны в оба массива — первичный и вторичный (реплицируемый).

Алгоритм записи:

  1. Клиент отправляет I/O-запрос (WRITE) на основное СХД.
  2. Основное СХД записывает данные в кэш или журнал.
  3. Параллельно оно передаёт данные на удалённое СХД.
  4. Удалённое СХД подтверждает приём и запись.
  5. Основное СХД отправляет ACK клиенту.

Особенности реализации

  • Используется протокол двухфазной фиксации (2PC) или проприетарные алгоритмы согласования записи.
  • Обычно задействуется журнал изменений (Write Journal), чтобы гарантировать порядок операций.
  • Для повышения производительности часто применяется журнализация в DRAM/NVRAM перед фактической записью на диск.

Зачем использовать синхронную репликацию

1. Нулевой RPO (Recovery Point Objective = 0)

— ни один байт данных не теряется при сбое. Всё, что клиент «увидел как записанное», уже находится в двух местах.

2. Высокая доступность / отказоустойчивость (HA/FT)

— при сбое основного хранилища можно моментально переключиться на зеркало (failover), без потерь и задержек.

3. Поддержка Metro-кластеров

— это основа для кластеров с географическим разнесением, когда две площадки работают как единый логический массив с репликацией в реальном времени.

Требования к сети

Синхронная репликация предъявляет очень строгие требования к сетевому соединению

Обычно синхронная репликация используется на расстояниях до 100 км, т.к. на больших расстояниях даже свет даёт задержки >1 мс на 100 км.

Вывод (номер 2)

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

Huawei HyperMetro — это высокодоступное (HA) решение синхронной репликации от компании Huawei, разработанное для работы в Active-Active режиме между двумя СХД, расположенными на разных площадках (обычно до 100 км). Оно обеспечивает нулевой RPO и минимальный RTO, гарантируя непрерывную работу приложений даже в случае выхода из строя одной площадки.

Основная цель HyperMetro

Обеспечить одновременный доступ к данным с двух независимых СХД в режиме Active-Active и автоматическое переключение в случае сбоя одной из них — без потерь данных и прерывания работы приложений.

Архитектура Huawei HyperMetro

Компоненты:

Две СХД Huawei (OceanStor)

например, OceanStor Dorado V6, 18000 V5 или другие.

HyperMetro Domain (домен репликации)

логическая сущность, объединяющая две СХД в одну репликационную пару с синхронной репликацией.

Quorum Server (сервер арбитра)

независимый узел, обеспечивающий защиту от split-brain, решает, какой из массивов должен продолжить работу при потере связи.

Как работает HyperMetro

Данные записываются одновременно на обе СХД.

Обе СХД доступны для чтения/записи — в зависимости от режима доступа (Active-Active).

При сбое одной из СХД:

Quorum Server определяет, какой узел «живой».

Оставшаяся СХД немедленно принимает на себя полную нагрузку, без потерь данных.

Когда вторая СХД восстанавливается, выполняется автоматическая ресинхронизация данных.

Поддерживаемые сценарии

  1. Катастрофоустойчивость (DR)
  2. Высокодоступные ЦОДы (Active-Active Metro Data Center)
  3. Безостановочное обслуживание хранилищ
  4. Zero RPO решения для банков, телекомов, госпитальных систем

Пример: Банковская система

  • Транзакционная БД работает в ЦОД1.
  • Синхронная репликация на ЦОД2 (через HyperMetro).
  • При падении ЦОД1 система продолжает работать в ЦОД2 — клиенты банка даже не замечают.

Но ведь теперь этого у нас нет …

А что дальше?