Запасные серверыпонадобилисьвсем сразу.
11 октября Yandex Cloud приостановил выдачу новых квот. Из четырёх зон работали две, и свободные серверы в них понадобились многим клиентам в один день. План «поднимем из бэкапа» в этот день упирался в очередь за серверами.
Из всей октябрьской истории с Yandex Cloud я бы запомнил слово «квоты». В пересказах оно шло после пожаров и такси, если вообще попадало, и, по-моему, зря.
Коротко, что случилось. С 8 по 11 октября после атак беспилотников, как сообщил Яндекс, остановились его площадки в Сасове и Владимире, а в Калуге вышли из строя несколько модулей. Из четырёх зон доступности облака две, ru-central1-a и ru-central1-b, перестали работать. 10 октября облако перевело выдачу квот на вычислительные ресурсы и диски в ручной режим, а 11-го приостановило её совсем (SecurityLab). Уже работающие серверы из-за этого не отключали. А вот создать новые стало почти нельзя.
А почти любой план на случай аварии сводится к фразе «поднимем из копии в другом месте». Поднимать из копии и значит создавать новые серверы. В тот же день на полчаса легла ещё и защита сайтов Curator, но это отдельная история с другой причиной.
Что Yandex Cloud советует про отказоустойчивость
Провайдер, кстати, это заранее проговорил. В рекомендациях Yandex Cloud по отказоустойчивости разбирается сценарий, когда одна зона выходит из строя на несколько часов. Сервисы советуют разворачивать в трёх зонах и держать в каждой запас «минимум +50% от расчетной нагрузки». И отдельно предупреждают: при отказе одной зоны свободные ресурсы в остальных «будут исчерпываться значительно быстрее».
Запас на случай аварии здесь, выходит, поручен клиенту. Держите лишнюю половину серверов включённой и платите за неё каждый месяц, даже когда она простаивает.
Цифра +50% взялась не с потолка. Если нагрузка поровну лежит в трёх зонах, у каждой треть. Отказала одна — две оставшиеся тянут по половине, то есть каждой нужно в полтора раза больше. Это ровно цена потери одной зоны. Чтобы пережить потерю двух, последней пришлось бы тянуть всё одна, а это втрое больше обычного. Так никто не строит, и документация такого не обещает: в ней разобран отказ одной зоны на часы, а встали две и на дни.
Задело и то, что ставят как раз ради надёжности. Кластер баз из трёх хостов в трёх зонах работает, пока живо большинство. Если два хоста стояли в зонах a и b, после 11 октября в живых остался один из трёх, и голосовать ему не с кем (Хабр).
Даже этот запас почти никто не держит, и я понимаю почему. Платить за полтора сервера, когда работает один, обидно. Приятнее думать, что в облаке серверы всегда есть: понадобятся — создадим за пять минут. В обычный день так и есть. Только «создадим» значит «возьмём из общего свободного запаса провайдера». А общий он на всех. У Yandex Cloud в первом полугодии было около 64 000 клиентов (Хабр), и в день, когда две зоны встали, свободные серверы понадобились многим из них сразу. Похоже на банк: деньги на вкладах есть, пока за ними не пришли все в один день.
Почему Yandex Cloud заморозил квоты
Злого умысла здесь нет. Когда мощностей меньше, чем просят, кто-то должен решать, кому они достанутся. Сначала облако рассматривало заявки вручную и в первую очередь давало ресурсы пострадавшим клиентам с критичными сервисами, потом остановило и это. Провайдера понять можно: иначе оставшиеся две зоны забрал бы тот, кто быстрее нажал кнопку. Только у клиента в этот момент план восстановления превратился в заявку в чужой очереди, и место в ней определял не он.
На Хабре разобрали, как это выглядело у одного сервиса, по сообщениям его поддержки (разбор). У Salebot копии лежали в том же облаке, свежая недельная копия не успела завершиться, и базу развернули из дампа на 4 октября. Сама база поднималась больше суток. Перенос части сервисов к другим провайдерам упёрся в очередь на ручное выделение серверов. А первой целью поддержка называла поднять «хотя бы 6 базовых серверов из 40».
Что обещал план и что вышло
Если разложить типичный план на шаги, видно, что каждый из них рассчитан на спокойный день.
- переключимся на соседнюю зону
- создадим серверы и развернём копию
- в крайнем случае переедем к другому провайдеру
- соседняя зона тоже встала
- новые квоты не выдают
- туда же едут другие пострадавшие
Третий пункт особенно коварный. Яндекс 9 октября договорился с Selectel, K2Cloud и VK Cloud об ускоренном переезде пострадавших клиентов. Решение хорошее, только в те же дни туда переезжают и другие пострадавшие. А описание инфраструктуры, написанное под провайдера Yandex в Terraform, к другому облаку как есть не применишь, его надо переписывать (Хабр). Писать его в день аварии — сомнительное удовольствие.
Где держать запас мощностей
Неприятно, но свободный резерв, за который вы не платите, принадлежит не вам. В обычный день этого не видно, а в аварию его делят.
Своим запас можно сделать двумя способами, и оба стоят денег. Первый — заранее закрепить мощности у того же провайдера. У Yandex Cloud для этого есть пулы резервов ВМ, пока в тестовом режиме, и платить в них приходится за весь свободный зарезервированный объём. Пул привязан к одной зоне, а в октябре встали две. Второй — держать запасное место у другого провайдера: аккаунт заведён и оплачен, лимиты одобрены, копия доезжает туда сама. Горячее зеркало целиком мало кто потянет. Salebot, по тем же сообщениям поддержки, оценивал его примерно в 2 миллиона рублей в месяц.
Но между «ничего» и «полная копия всего» есть середина, и она дешёвая. Шесть серверов из сорока звучит как провал. По-моему, это нормальная первая цель восстановления, если про эти шесть знали заранее, а не выясняли в ту ночь.
Поэтому в план я бы дописал одно число. Сколько серверов, памяти и диска нужно, чтобы бизнес просто принимал заказы: сайт открывается, заявки доходят до CRM, оплата проходит, отчёты и аналитика подождут. У небольшой компании число может оказаться смешным, вплоть до одного сервера. Рядом с числом — где эти серверы стоят прямо сейчас. Если ответ «создадим», это не ответ: в октябре создать было нельзя. И учения из справочника про резервные копии я бы проводил именно туда, на запасное место у другого провайдера. В соседнюю зону того же облака — нет. Кто 8 октября перенёс серверы из зоны b в зону a, 11-го переносил их ещё раз.
- До этого029Кнопки, которые нельзя прятать в менюИнтерфейсы · 6 мин
- На практикеСПР«Бэкапы у нас есть»: как проверить, что сайт из них подниметсяРазработка · 10 мин
- На практикеСПРТехнический долг берёт проценты только с того кода, который меняютРазработка · 10 мин
- На практикеСПРБезопасность кода от ИИ — что проверить перед запуском, если вы не читаете кодРазработка · 8 мин