4 апреля с 20:12 до 20:29 (мск) наблюдалась недоступность сервиса api.mindbox.ru и административной панели для 10% клиентов.
Корневая причина недоступности — отказ части клиентских баз данных.
Во время инцидента на пострадавших проектах завершались с ошибкой синхронные вызовы, скапливалась очередь выполнения асинхронных запросов, не работала административная панель.
20:15 — команда дежурных получила уведомление о нарушении SLA расчёта скидок, приступила к диагностике
20:21 — автоматически восстановилась доступность базы данных у большей части клиентов
20:29 — восстановлена доступность баз данных у всех клиентов
Для хранения баз данных клиентов мы используем кластеры SQL Server, организованные по технологии WSFC. Это оптимальный вариант для повышения надёжности системы через обеспечение автоматического переключения и синхронизации между серверами и ресурсами в случае неполадок. Для каждого клиента предусмотрена собственная группа доступности, состоящая из основной (primary) и резервной (secondary) реплики.
По результатам отказа WSFC 13 ноября мы посчитали, что именно изменения в кластерах приводят к автоматическим переключениям работы на резервные реплики, однако в этот раз никаких изменений в кластере перед отказом не было.
Мы связываем инцидент с перенаселенностью нашего самого большого WSFC кластера. Перед отказом пропадали мониторинговые сигналы об исправности кластера - хартбиты. Это привело к каскадному переключению групп доступности клиентских баз данных. На кластерах меньшего размера такого поведения за всё время наблюдений не было.
После отказа мы проконсультировались с коллегами, которые держат на продакшене сотни WSFC кластеров и получили рекомендации по целевой конфигурации.