Отказоустойчивость на два ЦОД: как устроен active-active Stretched Cluster в российской виртуализации

Разбираем, чем «высокая доступность» внутри одного ЦОД отличается от катастрофоустойчивости на две площадки, какие подходы есть на российских платформах и как работает растянутый кластер, когда падает целый дата-центр.

Коротко

Отказоустойчивость на два ЦОД (катастрофоустойчивость) означает способность инфраструктуры продолжать работу, даже когда из строя выходит не отдельный сервер, а целая площадка. В российской виртуализации это решают тремя способами:

  • метрокластер через внешние СХД,
  • асинхронная репликация (сценарий disaster recovery)
  • растянутый кластер (stretched cluster) в архитектуре active-active, когда обе площадки работают одновременно и делят нагрузку.

Последний вариант ближе всего к непрерывной доступности, но требует быстрой сети между ЦОД с низкой задержкой.

Почему обычного HA внутри одного ЦОД недостаточно

Высокая доступность (HA) внутри одного дата-центра спасает от отказа узла: виртуальная машина перезапускается на другом сервере кластера. Но если из строя выходит вся площадка (пожар, потеря электропитания, обрыв магистрали), HA не поможет: весь кластер находился в одном месте.

Для критичных систем (банки, ритейл, госуслуги, телеком) простой измеряется в деньгах и репутации. Поэтому инфраструктуру растягивают на два географически разнесённых ЦОД.

Дальше вопрос в том, а как именно это сделать?

Три подхода на российских платформах

1. Метрокластер через внешние СХД.

Серверы двух ЦОД объединяются в кластер, а синхронная репликация данных обеспечивается на уровне систем хранения: их ставят в режим метрокластера. Платформа виртуализации при этом лишь «переезжает» между площадками. Минус: нужны внешние СХД с поддержкой метрокластера и их лицензии.

2. Асинхронная репликация (active-passive, DR).

Одна площадка рабочая, вторая резервная. Данные копируются на резерв с некоторым интервалом. Подходит для больших расстояний, но при аварии теряются последние изменения (ненулевой RPO), а на переключение нужно время. Это катастрофоустойчивость, но не непрерывность.

3. Растянутый кластер (stretched cluster) в HCI, active-active.

Узлы обеих площадок образуют единый кластер, а программно-определяемое хранилище (SDS) реплицирует данные между ЦОД синхронно. Обе площадки активны и делят нагрузку. При отказе одной вторая продолжает обслуживать сервисы без потери данных. Из трёх подходов это ближе всего к непрерывной работе сервисов, и реализует его гиперконвергентная архитектура.

Как работает active-active Stretched Cluster (на примере vStack)

Растянутый кластер — функция платформы vStack HCP, его строят средствами самой платформы, без отдельной внешней СХД.

Механика такая:

- Единый кластер на два ЦОД.

Вычислительные узлы обеих площадок и программно-определяемое хранилище (SDS собственной разработки) работают как одна система; поддерживается живая миграция (live migration) ВМ между площадками.

- Синхронная репликация данных (на уровне блоков).

Все операции записи выполняются синхронно на обеих площадках и хранятся с избыточностью (модель 2N, зеркало RAID-1) на локальных дисках; консистентность восстанавливает сам SDS. Потеря данных при отказе площадки практически исключена — RPO практически равен нулю.

- Арбитр в третьей точке.

Отдельный арбитр (quorum-сервер) на независимой площадке нужен, чтобы разрешать «split-brain», то есть ситуацию, когда связь между двумя ЦОД временно пропала и каждая площадка «думает», что выжила только она. Арбитр определяет, кто продолжает работу, и не даёт данным разойтись.

- Автоматическое переключение.

При потере целой площадки нагрузки продолжают работать на второй, восстановление проходит без ручного вмешательства (RTO ≈ 2 минуты); после возврата связи данные синхронизируются.

Что важно спроектировать заранее

Растянутый active-active нужно проектировать. Три вещи, которые нужно продумать заранее:

- Каналы между ЦОД.

Синхронная репликация требует высокоскоростной связи с минимальной задержкой (обычно единицы миллисекунд). Чем больше расстояние, тем сложнее удержать синхронность; на больших расстояниях подходит асинхронный DR.

- Арбитр и кворум.

Третья независимая площадка для арбитра обязательна для защиты от split-brain.

- Тестирование сценариев отказа.

Перед вводом в прод нужно смоделировать потерю узла, потерю площадки и обрыв каналов между ЦОД, а затем измерить фактические RPO и RTO.

Кому это нужно, а кому избыточно

- Нужно: банкам и финтеху, госуслугам и КИИ, ритейлу, телеком-операторам, провайдерам: везде, где недопустим простой и потеря данных.

- Избыточно: для некритичных сред, тестовых контуров и небольших инсталляций достаточно HA внутри одного ЦОД или асинхронного DR; растянутый кластер там не окупит требований к каналам.

11