Команда считает хранилище отказоустойчивым, потому что у него три реплики, но все находятся в одной зоне доступности. Какой отказ такая схема не переживёт?
Такая схема не переживёт отказ всей зоны доступности, даже если отдельные серверы и три реплики исправны. Репликация защищает только от отказов, независимых между копиями; размещение в одном домене отказа оставляет общий источник риска.
Для защиты от отказа зоны реплики нужно распределять между независимыми зонами, а для защиты от более крупного регионального сбоя — дополнительно рассматривать межрегиональную репликацию.
Репликация появилась как способ продолжить работу при отказе отдельного диска, сервера или экземпляра хранилища. Однако практика эксплуатации распределённых систем показала, что несколько узлов могут одновременно потерять доступность из-за общего сетевого, энергетического или инфраструктурного сбоя.
Поэтому отказоустойчивость стали рассматривать не только как число копий, но и как их размещение по доменам отказа: группам компонентов, которые могут выйти из строя по общей причине.
Три реплики в одной зоне образуют три копии данных, но не три независимых места отказа. При потере зоны клиент может одновременно потерять доступ ко всем репликам, включая возможность выполнить запись или выбрать актуальную копию.
Неверная оценка создаёт ложную уверенность в доступности. Система может соответствовать ожиданиям при отказе одного сервера, но полностью остановиться при отказе сетевого сегмента или инфраструктуры зоны.
Сначала определяют требуемую модель отказоустойчивости: отказ узла, зоны, региона или нескольких компонентов одновременно. Затем реплики и кворум размещают так, чтобы отказ целого домена не лишал систему нужного числа доступных копий.
Например, при трёх репликах их можно распределить по трём зонам. При кворумной записи система подтверждает операцию только после получения подтверждений от достаточного числа независимых реплик. Тогда отказ одной зоны может быть пережит, если оставшихся реплик достаточно для выбранного кворума.
Распределение по зонам не устраняет все риски. Нужно учитывать общие зависимости: сетевые маршруты, управляющую плоскость, DNS, балансировщики, систему выдачи конфигурации и сам алгоритм выборов лидера.
У такого решения есть компромиссы. Межзональная синхронная репликация повышает защищённость подтверждённых данных, но увеличивает задержку записи и стоимость межзонального трафика. Асинхронная репликация обычно дешевле и быстрее, однако при полном отказе зоны возможна потеря последних неподтверждённых на удалённой реплике изменений.
Важно различать доступность и сохранность данных. Для доступности нужны доступные узлы и корректный механизм переключения, а для сохранности — подтверждение записи на достаточном числе независимых доменов и регулярные резервные копии.
Платёжное хранилище имело три реплики, размещённые на разных серверах одной зоны. Вариант с сохранением этой схемы был простым и дешёвым, но не защищал от отказа зоны. Вариант с асинхронной репликацией в другую зону снижал задержку записи, но допускал потерю последних изменений при аварийном переключении.
Выбранное решение разместило реплики по трём зонам и использовало кворум, достаточный для подтверждения записи после отказа одной зоны. Это увеличило задержку и стоимость, зато обеспечило продолжение работы при отказе зоны с контролируемым риском потери данных. Для регионального сбоя дополнительно настроили резервное межрегиональное копирование, не выдавая его за замену межзональному кворуму.
Нет, одного распределения недостаточно. Нужно знать, какие реплики участвуют в подтверждении записи и какой кворум требуется для чтения, записи и выборов лидера. Если запись подтверждается только одной репликой, отказ двух зон может привести к потере подтверждённых данных, даже когда остальные копии формально существуют.
Две зоны дают защиту от отказа одной зоны, но оставляют меньше запаса для кворума. При схеме, где для записи нужны обе реплики, отказ одной зоны остановит запись. При кворуме из одной реплики запись может продолжиться, но возрастают риски рассинхронизации и неоднозначности при восстановлении.
Три реплики в трёх зонах обычно дают больше вариантов для формирования кворума, но требуют дополнительных ресурсов и не защищают автоматически от регионального сбоя. Выбор зависит от требований к доступности, задержке, потере данных и стоимости.
Она может защитить, но не обязательно заменяет межзональное размещение. Если межрегиональная копия асинхронная, при переключении возможна потеря последних изменений. Кроме того, переключение в другой регион может быть медленным, требовать изменения маршрутизации и временно ухудшать задержку.
Для отказа зоны обычно проектируют локальный кворум по независимым зонам, а межрегиональную репликацию используют как отдельный уровень защиты от регионального катастрофического сбоя.