Хронология отключения электричества в датацентре Google App Engine

    Если электричество отключится у вас дома, то скорее всего ничего серьёзного с вашим компьютером не произойдёт. Может конечно сгореть блок питания или накрыться диск — для вас это неприятно, но не смертельно. А вот что произойдёт, если электричество отключится в большом датацентре, обслуживающем сотни тысяч пользователей?



    24 февраля в датацентре, в котором работал Google App Engine, отключилось электричество. В течении двух с лишним часов App Engine был недоступен. Полный отчёт об этом происшествии можно прочитать в списке рассылки, а перевод хронологии сбоя и кое-какие выводы читайте ниже.

    Раннее утро.

    7:48. Графики мониторинга начинают показывать что в основном датацентре какие-то проблемы и что число ошибок неуклонно растёт. Примерно в это же время в списке рассылки появляются сообщения от пользователей о проблемах с доступом к App Engine.

    7:53. Инженеры эксплуатационной надёжности (Site Reliability Engineers) посылают большому количеству дежурных инженеров сообщение о том, что в основном датацентре отключилось электричество. В датацентрах для такого случая есть резервные генераторы, но в этом случае примерно 25% машин в датацентре не получили резервного питания вовремя и упали. В это время наш дежурный инженер получил сигнал на пейджер.

    8:01. К этому времени дежурный инженер определил объём сбоя и установил что App Engine не работает. Согласно процедуре, он по тревоге уведомил менеджеров продуктов и инженерных руководителей о необходимости информировать пользователей о сбое. Несколькими минутами позже в списке рассылки появляется первое сообщение от команды App Engine («We are investigating this issue.»).

    8:22. После анализа мы устанавливаем, что хотя электроснабжение датацентра восстановлено, много машин не пережило отключения и обслуживать трафик они не способны. В частности, установлено что GFS и Bigtable кластеры из-за потери большого числа машин находятся в неисправном состоянии и следовательно хранилище данных (Datastore) в основном датацентре использовать нельзя. Команда дежурных инженеров обсуждает аварийное перемещение в альтернативный датацентр. Принимается решение о проведении аварийных работ по процедуре внезапного отключения электричества.

    8:36. Команда App Engine посылает дополнительные сообщения о перебое в работе в группу appengine-downtime-notify и на сайт статуса App Engine.

    8:40. Основной дежурный инженер обнаруживает два конфликтующих набора процедур. Это был результат недавнего изменения операционных процессов из-за перемещения Datastore. Обсуждение с остальными дежурными инженерами к консенсусу не привело, и инженеры пытаются для разрешения ситуации установить контакт с теми, кто был ответственным за изменение процедур.

    8:44. В то время как все пытаются выяснить, какая же из аварийных процедур правильная, дежурный инженер пытается перевести трафик в режиме «только чтение» в альтернативный датацентр. Трафик переведён, но из-за неожиданной конфигурационной проблемы в этой процедуре, работает некорректно.

    9:08. Разные инженеры занимаются диагностикой проблем с read-only трафиком в альтернативном датацентре. Однако тем временем, основной дежурный инженер получает данные, которые приводят его к мысли о том, что основной датацентр восстановился и может продолжать работу. У инженера, однако, не было чётких инструкций по принятию этого решения, которые могли бы подсказать ему что восстановление к этому моменту времени маловероятно. В попытке восстановить обслуживание, трафик переводится обратно в основной датацентр, в то время как остальные инженеры продолжают исследовать проблему read-only трафика в альтернативном датацентре.

    9:18. Основной дежурный инженер устанавливает, что основной датацентр не восстановился и обслуживать трафик не может. К этому моменту дежурным инженерам ясно, что сигнал был ложным, основной датацентр по-прежнему неработоспособен и что нужно сосредоточиться на альтернативном и на аварийной процедуре.

    9:35. Установлен контакт с инженером, знакомым с аварийной процедурой и он начинает руководить процессом. Трафик переносят в альтернативный ДЦ, сначала в режиме «только чтение»

    9:48. Начинается обслуживание внешних пользователей из альтернативного ДЦ в режиме «только чтение». Приложения, которые правильно работают с периодами «только чтение» должны к этому моменту работать корректно, хоть и с урезанной функциональностью.

    9:53. После консультации, теперь уже в online режиме, с соответствующим инженером, правильная документация аварийной процедуры выяснена и подтверждёна и готова к использованию дежурным инженером. Начинается собственно процедура аварийного переноса чтения и записи.

    10:09. Аварийная процедура завершается безо всяких проблем. Обслуживание трафика восстанавливается в нормальном режиме, для чтения и записи. В этот момент App Engine считается работающим.

    10:19. В список appengine-downtime-notify посылается сообщение о том, что AppEngine работает в нормальном режиме.

    Можно выдыхать.

    Как завещал великий Джоэл, хватит болтать о бекапах, давайте поговорим о восстановлениях. Когда случается неприятность, нужно чтобы слаженно сработало много шестерёнок. Во-первых, ваша система мониторинга (Что? Вы не знаете что такое система мониторинга? Тогда наверное можете не задумываться об оставшихся шестерёнках) должна вас оповестить через несколько минут после начала неприятностей, а не через две недели в виде удивлённых писем от пользователей. Во-вторых, у вас должны быть резервные мощности. В-третьих, вы должны точно знать или иметь точные инструкции о том, как этими резервными мощностями воспользоваться. Если бы у команды App Engine был один (правильный) комплект документации, то outage продлился бы всего 20 минут вместо двух часов.

    Впрочем, на мой взгляд App Engine справился с проблемой неплохо. Представьте себя на месте инженера, у которого ни свет ни заря на пейджере появляется сообщение «Доброе утро, друг! Прямо сейчас твоя компания теряет сотни долларов деньгами и бог весть сколько репутацией. И знаешь, это твоя проблема. Удачи!»
    Поделиться публикацией

    Комментарии 42

      +2
      Я вот думал у них по разным датацентрам приложения GAE раскиданы. Оказывается пока нет.
        +5
        Думаю, что такая возможность скоро появится. По крайней мере переменная окружения DATACENTER появилась месяца 2 назад ('DATACENTER': 'na1',). Не думаю, что это просто так.
          0
          Думаю что эта переменная, если она есть (кстати, где? Не нашёл в коде на code.google.com/p/googleappengine/source/browse/ ) связана всё же не с разбиением множества приложений по разным ДЦ, а с multihoming'ом — возможностью одного и того же приложения работать одновременно в двух разных ДЦ

            +3
            Она в переменных окружения приложения (os.environ в рантайме питона)
            А вот к чему разрабы придут в итоге — я не знаю (в смысле будем указывать, какой датацентр (-ы?)использовать, или еще что-то более сложное придумают). Ждем-с, не просто так она там.
        0
        и у великого Гугла случаются факапы! Ох и влетит кому-то за неверные DRP для дежурных!
          +1
          как мне кажется дело не в самих «факапах», а в том что делается, что бы они не повторились. А гугл это умеет.
            +3
            под «факапом» я имел в виду не отключение электричества как таковое, это скорее «дизастер», а то, что в DRP (Disaster Recovery Plan) закрались взаимоисключающие параграфы.
              +1
              Да нет, тут всплыл целый комплекс ошибок проектирования всей системы.
          +18
          Проблемы бывают у всех
          Но не все способны их признать (вспоминаю русских хостеров)
          Респект Гуглу
            +2
            Русские хостеры для начала могут пару недель о них тупо не знать (например о том что MySQL сломался и все данные утеряны). После того как их спросишь «ребята, а что у вас там с MySQL?» они выяснят что все две недели бекапы делались со сломанной базы и стало быть ничего в себе не содержат, а более древних бекапов нет. Личный опыт.

            Впрочем, врядли это связано именно с русскимихостерами.
            0
            может в тематический блог перенести? Например в habrahabr.ru/blogs/it-infrastructure/
              0
              Перенёс, но всё же в более тематический habrahabr.ru/blogs/gae
                +3
                может. Но по мне так вопрос больше инфраструктурный, а не конкретно по GAE.
              0
              Вот это я понимаю скорость ( при таких то огромных объёмах ), почему то сразу вспоминаются собственные провайдеры которые простейшую проблему решают сутками…
                +10
                >>>>9:35. Установлен контакт с инженером, знакомым с аварийной процедурой и он начинает руководить процессом. Трафик переносят в альтернативный ДЦ, сначала в режиме «только чтение»

                они все таки смогли его разлбудить!!!111
                  0
                  не только разбудить, но и разговорить)
                  0
                  Интересно, а какая база данных у них стоит на серверах?
                    0
                    Datastore у AppEngine, если вы о нём, работает на Bigtable.
                      0
                      Ну не совсем, Bigtable это промежуточный уровень (как распределенное транзакционное хранилище ключ-значение, не поддерживающее схемы и пр.), а на сегодня самый верхний уровень это megastore.
                        0
                        Ну да, Megastore. Но по нему нет таких научных статей :)
                          0
                          Я думаю этой статьи хватит для того, чтобы было «понаучнее» :)
                            0
                            Ну это чьи-то записки с гугловской презентации на SIGMOD'08, не статья ни разу :)
                    0
                    Какой забавный usecase! Спасибо за публикацию! :)
                      +24
                      Так пишут, ей-богу, будто это хронология взрыва Чернобыльской АЭС
                        +1
                        Причем сильно не хватает вагонов матов между строк.
                          0
                          Они подразумеваются )
                          0
                          Кстати, а ведь очень похоже. Не по масштабам, конечно, а по некоторой идиотичности причин и по чёткости реакции и организации «спасательных работ».
                        • НЛО прилетело и опубликовало эту надпись здесь
                            +1
                            Похвально, что подобные вещи не скрываются, а выносят на суд общественности с подробным описанием. За это можно лишь уважать.
                              0
                              Если электричество отключится у вас дома, то скорее всего ничего серьёзного с вашим компьютером не произойдёт. Может конечно сгореть блок питания или накрыться диск — для вас это неприятно, но не смертельно.


                              Если сгорит диск на котором 200 гиг редчайшего коллекционного музла, собиравшегося по крупицам 10 лет — это все же более, чем досадная неприятность…
                                +3
                                Давно пора купить внешний диск, который будет в роли резервного — подключаться только для синхронизации, вами, вручную, раз в неделю. К примеру до 320Гб эти диски стоят уже совсем небольшие деньги; и точно, несопоставимо меньшие по сравнении с потерей «200 гиг редчайшего коллекционного музла, собиравшегося по крупицам 10 лет»…

                                Но ваш контр-пример в тему)
                                  +1
                                  Я буду больше переживать из за личных данных — фото, видео, мультитреки из студии, куски кода, архив важной переписки. На всякий случай самое ценное храню в двух местах сразу.
                                    0
                                    Если вам дороги ваши фотки, музыка и т.д., то почему вы еще не используете что-то вроде https://mozy.com? Тогда это все-таки останется мелкой неприятностью — нужно будет всего лишь вытащить эти 200 гиг обратно на новый винт.
                                    +11
                                    ВНИМАНИЕ!
                                    Волнующие и захватывающие приключения APC UPS в фашистских условиях двухвазного тока, потеря надежды и душерзрывающая кульминация в рассказе «Хронология отключения электричества в датацентре у меня дома»:

                                    21:34 — свет отключили
                                    21:36 — свет включили

                                    Конец.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                        +1
                                        О Боже, сколько же раз я был в состоянии этого инженера…
                                          –1
                                          Гуглу, конечно, респект за скорость и старания, но вот мне интересно, как так вышло, что никто из имеющихся инженеров:
                                          -не знал процедуры переноса на резервный дата-центр
                                          -не знал, что он не знает этой процедуры и не пытался её узнать
                                          -не знал, где взять документацию

                                          Вот есть пару десятков человек, в их ОСНОВНЫХ служебных обязаностях — безотказная работа системы, бекапы и восстановления, а они этого делать не умеют. И как бы это никого (ни их, ни их начальство) не тревожит?
                                            0
                                            Дежурные инженеры — самые обычные разработчики, их основной обязанностью является всё же написание кода. Помимо этого они посменно дежурят и реагируют на сбои. Специальные SRE есть у многих наиболее критических продуктов и внутренних сервисов, но далеко не у всех.

                                            Ну и «никто» — слишком сильное слово, кто-то как видите знал :) Проблема была в том что документаций было две, и непонятно какая правильная. Эта оплошность собственно в постмортеме и не отрицается, и выводы там делаются.
                                              0
                                              Что, правда одни и те же люди занимаются написанием приложений (ну, Gmail там пишут или код поисковика) и занимаются последствиями пропажи электричества в дата-центрах?
                                                0
                                                *Последствиями* отключения занимаются всё же SRE. Но инженеры, за приложениями которыми не следят постоянно SRE, сами должны на отключение отреагировать и перевести трафик в резервные ДЦ. А кроме таких катастроф, постоянно происходят мелкие и не очень происшествия, и таки да, их устраняют те люди, которые «пишут gmail» (подставьте нужный продукт).
                                            –5

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.