Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Коротко: 17 июня около часа ночи мы потеряли два ввода питания от города из-за аварии на подстанции, затем — один из дизелей, что вызвало «мигание» питания в подземном дата-центре. Итог инцидента — простой около 12 часов примерно 7–10 % машин одного из 14 наших ЦОДов.

Это просто дикая цепочка событий.

Это патрубок дизеля, перевязанный бинтом из админской аптечки. Сейчас расскажу, какую роль он тут сыграл.

Итак, мы потеряли оба городских ввода — всё как в худших домах Парижа. Как мы уже потом узнаем, вроде бы авария была на трансформаторе 110 кВт: при перераспределении мощностей с первого произошло замыкание второго. За полтора года это уже третий раз, когда пропадают оба луча, и вот тут я рассказывал, как мы почти сутки стояли на дизеле. Для клиентов это прошло незаметно (кроме той стойки, где при мигании света сгорел ИБП: там был простой на перезагрузку).

Штатно сработали ИБП, автоматически завелись дизель-генераторы, ЦОД продолжил работу. У нас общая энергосеть с соседним ЦОДом всё в том же подземном бомбоубежище. Общее потребление — 0,5 МВт, дизелей — на 1,05 МВт.

Через два часа, около 3:30 ночи, лопнул патрубок дизеля 0,5 МВт, отчего он внезапно перестал работать. Админы убежища переключили мощности на дизели 2 х 100 КВт и 2 х 200 КВт. В момент переключения нагрузка снова легла на ИБП, а за два часа они не успели восстановиться, и часть оборудования выключилась.

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

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

А еще интересно:  Обнародован объем багажника Nivas: краткий обзор важной информации

Дисклеймер: мы ещё не до конца разобрались с логами и причинно-следственными связями, но сейчас я пишу по горячим следам. Возможно, дальше выяснятся ещё интересные детали. Сейчас мы сосредоточились в основном не на расследовании инцидента, а на устранении последствий. Детальный разбор будет позже.

Содержание

▍ Почему только два админа

Ночь с субботы на воскресенье, особо охраняемая территория. В течение двух часов с начала инцидента всё идёт относительно предсказуемо, и помощь не нужна. Админы работают штатно. Примерно в 3:30 становится понятно, что нужно высылать подкрепление, но в этот момент уже:

То есть центральный коммутатор у нас нормально в кластере, а один из листов, относительно небольшая и относительно нетребовательная к непрерывности подсеть, на хотсвапе. Это была ошибка, и здесь мы здорово облажались.

Во-первых, оказывается, что тяжело менять коммутатор, когда ты держишь руками патрубок дизеля. Кроме физической замены, там нужно импортировать правила и ACL.

Во-вторых, на то, чтобы понять, что с ним что-то не так, тоже ушло время. Он не сгорел полностью, а включился и вроде бы начал работать. После его включения полетела часть ACL, и он отрезал нам управляющие сервера от сети.

В этот момент около 3:30 мы остались без сервисдеска, мониторинга, корпоративного мессенджера и одной из реплик сайта. Мессенджер тут же деградировал до «Телеграма», веб-сервер сайта автоматически поднялся в другом ЦОДе, а вот от мониторинга и сервисдеска такой подставы мы не ждали.

На мониторинг, в частности, было завязано определение оставшегося свободного места в ЦОДах, а оставшееся свободное место в ЦОДе определяет возможность создавать в нём новую виртуальную машину.

Это означало, что автоматика не видит свободного места, потому что источник данных для панели управления находился именно в глючившем защищённом сегменте. А потому система не даёт возможности создать новые ВМ в каждом из ЦОДов сети.

Выглядело это как крестик на создание ВМ на каждом из ЦОДов нашей сети, что начало вызывать панику в чате клиентов хостинга:

Это уже семь утра, когда существенная часть клиентов проснулась. До семи утра было ещё два отключения питания и перехода на уже истощённые ИБП. Перегрелся и начал нестабильно работать один из малых дизелей, а большой ещё не успели перебинтовать. И вообще, админы не очень хорошо ремонтируют дизели: это немного не их профиль работы.

Соответственно, клиенты пытались перенести свои ВМ в другие ЦОДы по миру, но из-за сбоя мониторинга не могли этого сделать: система не давала создать новые ВМ.

Начиная с шести утра мы пытались ответить клиентам, что происходит, но сами не до конца понимали масштаб проблемы из-за отвалившегося мониторинга.

Например, год назад это был монитор автомобильного аккумулятора через Bluetooth – за собственные деньги.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

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

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Столь пристальное внимание, уделяемое автомобилистами аккумулятору, вполне объяснимо. При хорошем обслуживании аккумулятор может прослужить до 10 лет, а при небрежном к нему отношении уже через год-два эксплуатации может создавать трудности при запуске двигателя. На моей предыдущей до обновления машине аккумулятор через 7 лет эксплуатации оставался вполне работоспособным, но ушел к другому владельцу вместе с машиной при замене по трейд-ин программе.
Так вот, чтобы автомобиль был готов к использованию в любой необходимый момент времени, достаточно следить и не допускать уменьшения текущей остаточной емкости аккумулятора ниже уровня 50 % от номинальной. Такие сведения можно увидеть на представленной таблице.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Поскольку к гаражу подведена постоянная сеть электроснабжения, в этом году я решил в некоторой степени автоматизировать процесс зарядки, для чего приобрел умную GSM розетку SimPal-T4, показанную на рисунке.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Оказывается, в умной розетке для контроля температуры воздуха таки встроен простой терморезистор с двумя выводами, и схематично он показан в верхнем правом углу рисунка. Но это лишь мелкая составная часть более сложного цифрового устройства — термодатчика, управляемого «мастером» из умной розетки по протоколу 1-Wire. Внешний вид термодатчика, использующего для связи штекерный разъем Jack-3,5 мм, иллюстрирует рисунок.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

А поможет мне в аппаратной модернизации розетки, решил я,пороговое устройство КР1171СП64, формирующее предупреждающий сигнал о недопустимом снижении контролируемого напряжения.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Разумеется, сформировать сигнал – это всего лишь полдела, его необходимо ещё передать в умную розетку. Для этого было использовано реле РЭС55А с показанными ниже установочными и габаритными размерами, а также условным графическим обозначением и назначением выводов.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

При проектировании устройства следует использовать электрические и обмоточные данные, соответствующие примененной модификации (паспорту) реле РС4.569.604.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Вот теперь можно приступать к проектированию требуемого устройства. Напомним, суть задачи состоит в том, чтобы заставить умную розетку при уменьшении напряжения аккумулятора ниже заданного значения 12,5 В сформировать соответствующее сообщение мне на смартфон. Пусть даже не в автоматическом режиме, а по отдельному запросу. И поможет нам в этом микроконтроллер умной розетки, которой практически к любому сообщению прикладывает сведения о температуре воздуха в месте наблюдения, как это показано на скриншоте смартфона по тексту получаемых СМС.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Всего лишь достаточно разорвать связь микроконтроллера с термодатчиком, и вместо численных показателей температуры появляются прочерки следующего вида: -С Р. Т.е. когда напряжение аккумулятора превышало 12,5 В, в тексте, как показано в верхней строке, присутствовала температура 6С (шесть градусов Цельсия со знаком плюс Р). А вот когда напряжение снизилось менее заданного значения, в сообщениях вместо температуры пошли сплошные прочерки, и так до тех пор, пока напряжение не возрастет выше 14,5 В. Принципиальная схема устройства, реализующего заданный алгоритм функционирования, приведена ниже.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Что ещё необходимо отметить, так это отсутствие гистерезиса при переключении реле, что связано с разительным (почти на порядок) отличием напряжения срабатывания реле 2,5 В от напряжения отпускания 0,3 В. В результате характеристика переключения реле приобретает вид, показанный на рисунке.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Если бы гистерезис отсутствовал, а переключение реле происходило бы лишь при напряжении 12,5 В как при его уменьшении, так и при увеличении, в этом случае на пороге срабатывания наблюдался бы дребезг реле, что приводило бы к невозможности нормального функционирования устройства.
В нашем случае при указанных на схеме параметрах элементов работа проходит безукоризненно. Для исключения отрицательного воздействия на работу устройства электрических помех, наведенных на длинных (около 3 м) проводниках, присоединенных к клеммам аккумулятора, каждый из них выполнен экранированным проводом, оплетка которого соединена с общим заземлением GND, как и штекер Х2.
Моделирование печатной платы устройства выполнено с помощью широко известной компьютерной программы Sprint Layout 6.0. Причем реле с гасящими самоиндукцию в обмотках диодами Д223 применены как готовый отдельный фрагмент печатной платы из-под списанных приборов, к которому пристыкована плата с остальными элементами. Чертеж платы представлен ниже в двух вариантах: в крупном масштабе как монтажная схема с размещенными на ней элементами, и рядом – фотошаблон в натуральную величину (ширина – 19 мм, высота – 20 мм) для изготовления печатной платы.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

И на завершение показа — общий вид (фото) смонтированного устройства со снятой верхней крышкой.

Я ОБЕЩАЛ РАССКАЗАТЬ ПРО АВАРИЮ

Корпус устройства изготовлен из двухсторонне фольгированного стеклотекстолита толщиной 1 мм методом пайки по всему периметру прямоугольных стыков боковых поверхностей с дном и крышкой. Габаритные размеры корпуса без учета выступающего штекера Х2 составляют примерно 77х33х22 мм

▍ Восстановление

Когда приехал резервный дизель, всё встало на свои места.

Мы восстановили питание и более-менее последовательно разобрались, что происходит. Стало понятно, что с коммутатором, поменяли его, подняли защищённый сегмент. Там подцепился мониторинг, который нарисовал нам всю картину ночи. В этот же момент на нас упали все тикеты, которые клиенты хостинга поставили за ночь, потому что заработала очередь.

Последние сервера поднялись около 16 часов: это когда мы подключили в бой тот самый защищённый сегмент, стоявший за частично погоревшим коммутатором.

Клиенты, естественно, были не очень довольны:

Интересно, что больше всего тикетов с паникой было у пользователей наиболее экономичных тарифов. То есть те, у кого был действительно критичный проект, развернули его на нескольких геоплощадках. Бывалые админы достаточно спокойно наблюдали за паникой людей в чате:

Общий итог такой:

▍ Разбор ошибок

Из того, на что мы могли повлиять:

Я пережил несколько очень неприятных моментов этой ночью и понял, что нам нужен публичный мониторинг.

С моей точки зрения ситуация выглядела так: ужасно усталый я пришёл домой вечером, бросил телефон с 3 % заряда на столик и вырубился. Около шести часов я проснулся, решил, что быстро не засну, включил телефон почитать Хабр и сорвал джекпот в виде лавины уведомлений. Технический директор хостинга ночью тоже спал. Но он никогда не отключает телефоны, и звонки админов у него всегда дают громкий сигнал. Он разруливал ситуацию с часа ночи. Хорошо, что телефония в ЦОДе у нас как раз была зарезервирована правильно.

Фактически утром я не мог точно понять, что произошло (как и все мы: для полноты картины нужно было бы дозвониться до админов и поговорить с ними больше 20 минут).

В итоге я и ещё несколько человек пытались отвечать клиентам в чате. Дежурная смена отвечала официальным фразами, а я пытался дать больше информации.

Мы рассылали вот такое письмо:

В районе 3:00 по МСК произошла авария на подстанции, в результате чего в дата-центре Rucloud (г. Королёв) были нарушены оба ввода электроснабжения. Проблема повлекла за собой перезапуск коммутационного ядра и длительный период восстановления. На момент аварии оборудование дата-центра работало на аварийных дизель-генераторах, но сейчас проблема устранена, и доступность всех нод уже восстановлена. Специалисты работают над восстановлением доступа к единичным оставшимся оффлайн виртуальным машинам, и в ближайшее время доступ должен полностью восстановиться.

По предварительным данным, аварийные работы затронули не более 10 % серверного оборудования в дц Rucloud. Остальные 13 дата-центров работают в штатном режиме, и проблем там не наблюдалось.

Подробный отчёт по аварии ждите в нашем блоге на Хабре в ближайшие дни.
Приносим свои извинения за доставленные неудобства!

В телеграм-канале был сущий кошмар. Дело в том, что в России уже было два случая, когда хостинг внезапно отключался целиком, а потом больше никогда не включался. И среди наших клиентов были админы, повидавшие некоторое дерьмо и знающие особенности ИТ-бизнеса в этой стране. Поэтому они, естественно, волновались. Мне очень нужно было объяснить, что происходит, но я никак не мог сам собрать информацию рано утром.

Никто не верил, что в одном из 14 ЦОДов был сбой, который затронул до 10 % железа. Отдельно меня обижали фразы вроде: «Чего вы хотите за такие деньги?» Аварии бывают и там, где на порядок дороже. У нас нет умышленной ставки на некачественные услуги. Неважно, сколько заплатить: зарезервироваться на 100 % не получится. Самое обидное в этой истории, что раздолбаями на этот раз оказались не мы. Точнее, мы тоже, но, трезво оценивая ситуацию, мы всё же в меньшей степени.

Вторая особенность была в том, что шквал звонков снёс поддержку нам и всем соседям, потому что люди звонили по всем телефонам и нам, и им.

Более-менее связную картину произошедшего мы получили только около восьми утра.

В целом это, наверное, — самый тяжёлый наш кризис, потому что мы его переживали при 100-процентно заполненном машзале. Когда гермозона стоит полупустой, есть резерв по мощности: формируется тот самый 2N + 1, а не просто 2N. У нас такой роскоши не было. В целом мы сейчас переберём архитектуру сети, но куда важнее, что мы в Москве принципиально делаем ставку на развитие Останкино (вот пост про него) — ЦОДа повышенной ответственности. И в убежище, и в М9 гермозоны уже заполнены полностью, и новых стоек просто нет. В случае М9, где мы делим площадку с другими компаниями, нет места даже в стойках соседей.

Итог: нам нужен сервис публичного мониторинга доступности нод. Обычный хостинг такого делать не будет, потому что инциденты принято скрывать. Особенно если они затронули не очень большую часть клиентов. Просто телеграм-канала, Хабра и поддержки не хватает. Нужна система, которая сама обновляется и показывает объективные данные всё время, даже если это не очень удобно для нас в моменте.

В процессе слова поддержки от вас были очень приятны. Благодарности в конце тоже очень грели. Спасибо! Это было очень тяжело, но то, что вы с пониманием отнеслись, — это очень приятно.

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх 🕹️

▍ Что было с городскими вводами

Они пропали. Авария коснулась всего микрорайона. Мы относимся к важным потребителям электроэнергии, поэтому восстановление наших мощностей — первый приоритет для города. У нас не было городского ввода примерно с часа ночи до обеда, около 10 дали первый луч, через пару часов — второй.

Как можно видеть по заявкам в районе, жилые дома восстанавливали позже, то есть устраняли аварию максимально быстро для нас.

▍ Админы были отрезаны от мира

Я неслучайно сказал, что это ночь с субботы на воскресенье на особо охраняемой территории. Дело в том, что после начала всем известных событий территория стала просто параноидально охраняемой.

Среди всего прочего в рамках общей параноизации нам отозвали все постоянные пропуска и заменили их на систему одноразовых пропусков персонала посменно. То есть около 3:40 ночи, когда уже стало понятно, что в ЦОДе не помешают лишние руки, никого отправить туда мы не могли, потому что люди встали бы на проходной.

Бюро пропусков по ночам не работает, по воскресеньям — тоже.

Это значит, что мы не можем отправить ещё админов и не можем отправить дизель. Дизель на 0,5 МВт у нас под рукой был после прошлого инцидента, и мы подтащили его к территории около девяти утра, но попасть внутрь не могли.

Охрана понимала всю серьёзность ситуации (насколько могла) и очень хотела помочь, но ровно в рамках своих полномочий: им нужно было разбудить своего начальника, чтобы он разрешил нештатную ситуацию. Попасть на территорию получилось только около 13:00.

До этого момента в ЦОДе было две пары рук.

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

Админы разрывались между попытками ремонта дизеля, жонглированием мощностями, включением стоек и сетевого оборудования и попытками понять, что происходит с защищённым сегментом. Плюс время от времени им было нужно подниматься на воздух, чтобы не разболелась голова.

Закладка Постоянная ссылка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *