AWS в дауне: почему небеса рухнули

http://justinsb.posterous.com/aws-down-why-the-sky-is-falling
  • Перевод
21 апреля в 01:41 по тихоокеанскому времени произошёл серьёзный сбой в одном из дата-центров Amazon Web Services, «облака» для многих сайтов. Некоторые крупные проекты (Reddit, Quora, Foursquare) ушли в офлайн или сильно пострадали. Я уже видел кучу дезинформации с намёком на то, что проблемы пострадавших сайтов связаны только с ленью инженеров этих проектов, но в данном случае причина в другом. И вот почему.

У AWS две концепции относительно доступности: регионы (Regions) и зоны доступности (Availability Zones, AZ). Есть пять регионов: два в США (западное и восточное побережье), один в Европе (Ирландия) и два в Азии (Токио, Сингапур). В каждом регионе расположены несколько AZ, которые должны быть изолированы друг от друга и не иметь общей точки сбоя, кроме стихийного бедствия или чего-нибудь подобного масштаба.

AWS говорит, что «ставя инстансы в отдельных AZ, вы можете защитить свои приложения от сбоя в каком-то отдельном месте». Под «местом» они подразумевают «физическую независимость зон доступности друг от друга и независимую инфраструктуру». Судя по всему, это отдельные дата-центры (хотя, из описания Amazon это не очевидно — может быть, это разные этажи/комнаты в дата-центре с независимым питанием и подключением по разным каналам — прим. пер.). Они не должны рушиться одновременно друг с другом, если не случилось катастрофы, которая накрыла весь регион.

Зоны доступности также предлагают «недорогую возможность соединения с низкой задержкой между зонами доступности в том же регионе». Межрегиональный коннект, с другой стороны, идёт через открытый интернет, и относительно дорогой, медленный и ненадёжный.

Это «правила игры». Так что если вы играете по правила AWS и подняли master/slave базу данных MySQL (чтобы взять самый распространённый пример), то, по логике, вы должны поставить master и slave в одном и том же регионе, но убедиться, что они в разных зонах доступности. Вы не будете размещать их в разных регионах, иначе придётся гонять трафик по медленным и дорогим каналам между регионами, и скорее всего у вас будет больше проблем с синхронизацией баз. Вы рискуете только в том случае, если, например, ураган обрушится на восточное побережье и уничтожит дата-центр(ы), но за исключением этого всё должно быть в порядке — по крайней мере, если соблюдаются обещания AWS.

Так что, в итоге, у нас образовалась проблема. Вчера несколько зон оказались недоступными в регионе восточного побережья. AWS нарушили собственные обещания по сценарию сбоев в зонах доступности. Это значит, что у AWS есть некая общая точка сбоя (если предположить, что не случился некий абсолютно невероятный сценарий вроде одновременного физического повреждения нескольких независимых инфраструтур). Сайты, которые до сих пор в дауне, вполне корректно выполнили свои условия «правил игры», проблема в том, что AWS не следовали собственным спецификациям. Случилось это из-за некомпетентности или нечестности, или чего-то более простительного, мы просто не знаем на данный момент. Но разработчики в Quora, Foursquare и Reddit очень компетентные и будет неправильно направлять обвинения в их сторону.

Конечно, теоретически можно защититься даже от катастрофических сбоев (нескольких зон доступности), но для большинства бизнесов эти дополнительные затраты на разработку и расходы не стоят того (или могут быть даже контрпродуктивными, усложняя систему). Я уверен, что у всех сайтов, которые сейчас в дауне, сохранились бэкапы. Проблема в том, что их возврат в онлайн может стать сложным и рискованным — на практике, вам нужно всё переместить в другой регион, иначе сетевая задержка между вашими серверами будет слишком большой. На AWS это чрезвычайно сложно: на серверах разных регионов — разный набор опций, разные идентификаторы AMI, я думаю, что зарезервированные инстансы вообще нельзя перемещать между дата-центрами — в реальности, передача управления в другой регион практически невозможна. Наверное, здесь потребуется примерно столько же усилий, сколько при миграции в совершенно другое облако, что, вероятно, и является лучшим вариантом восстановления после такой катастрофы. Насколько мы знаем, Quora начала этот процесс в ту же минуту, как только случился сбой на AWS, и не завершила его до сих пор — это может занять сутки.

Так что, вкратце, винить здесь нужно исключительно AWS, которая «гарантировала» условия, которые нарушила. Ошибки случаются, но здесь именно ошибка AWS.

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

Ещё несколько мыслей:
  • Причина, по которой так много сайтов размещаются в регионе восточного побережья в том, что именно здесь AWS раньше всего выкатывает новые фичи. Он также самый дешёвый. И это, вероятно, лучший регион для обслуживания трафика (нормальная производительность для Северной Америки, сносная производительность для Европы)
  • Причиной сбоя на самом деле стали дисковые массивы EBS (Elastic Block Store), которые катастрофически проявили себя в плане надёжности с самого начала их использования. Но это уже тема совершенно другой статьи!
  • Массивы EBS могут быть только в одной зоне доступности и доступ к ним может идти только из этой зоны. Судя по всему, распределённая база данных Amazon RDS использует секретные API, позволяющие получать доступ к EBS из других зон, но эти интерфейсы не доступны никому, кроме RDS (хм… компания из Сиэттла, которая использует секретные API для получения конкурентного преимущества — звучит как-то знакомо?)
Поделиться публикацией
Комментарии 70
    –1
    Есть пять регионов: очепяточка.
    время простоя действительно поражает :(
      +4
      Интересно, компенсации будут? Просто интересно как это у западных компаний поставлено. Наш Clodo говорят компенсирует каждый чих.
      А убытки у клиентов Amazon, думаю более чем ощутимые.
        0
        Смотря, что в договоре написано, если прописаны все форс-мажоры и все нюансы, то конечно будут выплачивать простой и компенсацию прибыли.
          +18
          В договоре прописано, uptime за последние 365 дней упал ниже 99,95% — пишите, ваш bill за месяц будет снижен на 10%. Думаю, я буду платить 90% еще месяца три.
          Сервер лежит, я спокоен — сделать ничего не могу. Сначала он перестал отвечать, сайт выдавал ошибку подключения к БД (локальной), после перезагрузки перестало работать что-либо вообще и в логе после загрузки ошибки жесткого диска. Попробовал остановить — в состоянии остановки тот провисел часов восемь. Попробовал запустить — в этом состоянии он уже часов двадцать, я думаю.
          Их инженеры не спали уже часов 40, я думаю, они воочию увидели пятилапого пса из Generation П.
          Я никуда от них не уйду, дешево, удобно — разве что буду держать backup'ы snapshot'ов в другом регионе, к 15 долларам в месяц прибавится доллара два, не жалко. Да и, думаю, после такого — они из кожи вон вылезут, чтобы сохранить клиентов.
          На всякий случай, еще раз: для них это катастрофа. Почитайте форум.
        0
        То, что причиной сбоя стали EBS — на самом деле забавно. Мы уже давно наблюдаем существенный спад IOPS'ов, но переезжать нам — это целая история. Вспоминаются «специалисты», которые для ускорения EBS советовали делать из 16 (!) дисков RAID0, мотивируя тем, что Amazon гарантирует их неубиваемость :)
          +3
          36 часов простоя — еще один довод в выборе облачного провайдера. Год назад у гугла тоже были проблемы с доступностью, но из-за отключения электричества, правда масштаб бедствия сильно меньше. Поразила скорость реакции технического персонала. Ждем «ответа» амазона :)
            +16
            amazon aws — это, да будет вам известно, мать и отец прародитель облачного хостинга. поверьте, google app engine то же страдает сбоями (как и microsoft azure), просто он не используется в таких масштабах, как amazon, поэтому его падения не вызывают таких бурных реакций.
              0
              Гугл статейку тиснул про data protection и reliability
              googleenterprise.blogspot.com/2011/04/security-first-security-and-data.html
                –2
                Ага, как бы невзначай, и ни слова про Amazon. :)
                  0
                  Ролик очень Half-Life первый напомнил…
                    0
                    Интересно, у них такие «рекламные» ролики на все случае жизни сняты и их достают по-ситуации в Мире или они очень операвно их штампуют?
                    0
                    Я кстати довольно быстро смог восстановиться.
                    Об этом не писали почему-то. Но запросы на генерацию снепшота с EBS вольюма проходили, но очень долго. У меня был затык с БД. Часов через 6 я таки смог сделать снепшот вольюма с базой и восстановить работу сервисов.
                    Но возможно мне просто повезло со снепшотом.
                    0
                    Может из тех, кто попробовал разные облака, теперь подытожит, на чей сервис лучше смотреть-то? GAE? Rackspace? Clodo?
                      0
                      Практика показала, что упасть могут все. Вопрос в скорости поднятия и отношении хостера к своим клиентам (предоставлении информации об аварии, работа службы поддержки и т.д.).
                        +1
                        зависит от круга поставленных задач.
                        селектел.
                          +13
                          У вас как-то строчки не стыкуются. Сначала правильный ответ, а потом — не правильный…
                        0
                        Вообще если по принципу оплаты за закрепляемые ресурсы, то в этот ряд нужно добавить Slidebar, Scalaxy и Azure

                        Но все зависит от ваших задач, аудитории проекта, необходимости хранения и обработки персональных данных в России (эксклюзив у slidebar) и т.д.
                        0
                        за последние 3 месяца 4й раз гробятся ФС на амазоновскийх дисках
                        вот вчера 100 гб база mysql вжих и нет.
                          +12
                          image
                            –4
                            Ещё есть более новая версия
                              +10
                              Идите на фишки.нет, а? Задрали уже все эти юмористы с картинками.
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                аналогично, только это не зона, это регион. вам повезло.
                                0
                                В статью можно добавить неофициальный список пострадавших.
                                  0
                                  Не упомянут в списке один из серверов ProjectLocker (гадство, как раз с моими проектами!), который тоже грохнулся, но сегодня его уже подняли. А вчера пришлось все по старинке на флешку в телефон закидывать.
                                  0
                                  >Судя по всему, распределённая база данных Amazon RDS использует секретные API

                                  Я бы так не сказал: status.aws.amazon.com/ И вчера и сегодня с RDS были проблемы. Возможно вы имели в виду SibmpleDB?

                                  Кстати, кто точно может сказать какие зоны падали?

                                  >Причиной сбоя на самом деле стали дисковые массивы EBS (Elastic Block Store)

                                  Помнится, кто-то недавно тесты проводил. Доигрались?
                                    +1
                                    Падали все зоны. Потом довольно быстро (4-5) поднялись все кроме одной. us east-b до сих пор точно лежит. Остальные вроде работают нормально. Мы перенесли оттуда все данные в east-a, пока полет нормальный
                                    0
                                    Селектел и Скалакси — спонсоры перерывов обслуживания AWS. Их активная маркетинговая политика как минимум не опровергает этого замечания.
                                      0
                                      где-что надо почитать, чтобы
                                      «хм… компания из Сиэттла, которая использует секретные API для получения конкурентного преимущества — звучит как-то знакомо?»
                                      мне тоже стало занкомо?
                                        +2
                                        поищите слово redmond на картах
                                        +3
                                        11:50 по МСК Только я в консоли добавил порт в Security Group и спустя 5 минут главный сервер и RDS пропали вникуда. Пол часа попыток выяснить в чём дело кроме седины ничего не дали. Повисшая Restore To Time RDS и снапшот диска наводили на мысль, что что то не так у Амазона. Но нормально работавшие m1.small вводили в заблуждение.

                                        ~12:40 по МСК — амазон обновил свой статус о том что «заметил увеличившийся error rate и latency». Поуспокоились.

                                        У нас сотня Gb пользовательских данных на S3 и около 4 Gb база в RDS. На EBS данных не храним.
                                        Есть ночной дамп базы на S3, но это 8 часов потери.
                                        Ждём, ибо вера в Амазон крепка, за ~1.5 года работы с ним — была пара кратковременных «глюков», по чьей вине которые случились — так и осталось загадкой. Стоит ли торопиться, восстанавливать БД и потерять данные, если Амазон «вот-вот» должен восстановиться.

                                        А время идёт. Foursquare поднялся. HootSuite и все остальные продолжают лежать.

                                        ~17:00 по МСК. Обдумываем переезд в Калифорнийский регион. Становится понятно, что перенос S3 и перенастройка DNS — это до завтра. Оставляем зашглушку на сайте и идём по домам жать F5 на status.aws.amazon.com

                                        Вечером ничего не изменилось.

                                        С утра следующего дня обнаружил сообщение амазона о том, что восстановлена работа в 3-х из 4-х регионах.
                                        Естественно та единственная зона — us-east-1b — это наша. Попробовал restore to tim rds в другую зону — о чудо, 20 минут и инстанс восстановлен. Нужный нам инстанс в этой зоне также создался нормально. Скорей на работу — переезжать на новый сервер.

                                        Около обеда переезд закончили, заодно обновили версию приложения (теперь со злосчастным IE9 всё в порядке и мобильная версия появилась), обновили дизайн сайта и переехали наконец на Win2008 R2.

                                        www.teamlab.com/ru — это мы

                                        Менять амазон на что то другое в мыслях нет.
                                        Стабильность в течении 1,5 лет до этого и удобство пока перевешивают этот «невероятный» сбой.
                                        Имей мы Multi-AZ размещение — поднялись бы быстрее. Так и сделаем.

                                        Сlaim оформим само собой. Подождём, пока ребята починятся.
                                          0
                                          Вчера так хотелось в проджект менеджере пару задач закрыть. А еще 1 внести.
                                          Тык мык, а вы в дауне :)
                                            +1
                                            Да, целые сутки простоя. Амазон выбрал лимит «недоступности» на 20 лет вперёд.
                                            Теперь заживём спокойно ))
                                            0
                                            странна у меня на us-east-1b все работало, а 1c лежало
                                            0
                                            двое суток уже один из инстансов недоступен
                                              +2
                                              Кстати, кто вменяемо объяснит преимущества облака? Судя по этой ситуации аптайм 100% не гаранирован и переезд не всегдаможно организовать по нажатию кнопки. Стоимость? Какие преимущества перед своим железом?
                                                0
                                                Стоимость. Очень тяжело нагрузить железку на 100%, чтобы использовать всё, за что заплатили. В случае же нормальных облаков вы платите только за то, что потребили (и поэтому, имхо, немного стрёмно, когда скалакси называет себя облаком при почасовой оплате инстансов).
                                                  +1
                                                  Аптайм 100% вам не гарантирует нигде и не на каком железе никто, кроме Господа Бога, да и за него я сильно сомневаюсь.
                                                  Если бы у меня был бекап (3 клика с главной страницы и ввод имени бекапа) — я мог бы создать новую машину такой же конфигурации в любом из пяти регионов.
                                                  На все нужно смотреть сквозь призму решаемой задачи.
                                                  Мне нужен хостинг — наверное, можно было бы хостится у кого-либо от $2 в месяц, я предпочел иметь свой сервер — $15 в месяц, сейчас подумал, и купил за $82 reserved instance на три года, $2,27 в месяц, $0.007 в час (посчитал — прослезился, окупается мгновенно). А получаю, вместо хостинга, полноценную машинку с таким быстродействием, какого я ни в windows-серверах, которые администрировал, ни в своих домашних linux машинах, не видел. Например, удивляющая меня скорость доступа к дисками, даже на моей самой дешевой micro instance.
                                                  Другой практический пример — все приложения, архитектуру которых я умудрился узнать\выведать у разработчиков — хостятся в облаках, большинство тех, что видел лично я — Google App Engine. Замечательная по своему удобству штука, пиши код, и не думай о нагрузках — сколько бы не было пользователей, код будет корректно работать, только оплачивай счета.
                                                  И, да, в добавку к комментарию выше — в Амазоне я плачу за закрепленные за мной ресурсы, в GAE — только за потребляемые.
                                                    0
                                                    А какой мощности вы получили «сервер» за 2.27 в месяц?
                                                      0
                                                      Думаю человек говорит о том, что заплатив 83 доллара на три года вперед он получает micro instance за 0.007$ в час.
                                                      24*0.007*30=5.04$/месяц. 2.27 правда у меня не получилось, может он выключает ее на ночь?:) Несмотря на то что он немного темнит(диски, операции io и траффик тоже платные), это все равно очень недорого.

                                                      Micro Instance — 613 MB of memory, up to 2 ECUs (for short periodic bursts), EBS storage only, 32-bit or 64-bit platform
                                                      EC2 Compute Unit (ECU) – One EC2 Compute Unit (ECU) provides the equivalent CPU capacity of a 1.0-1.2 GHz 2007 Opteron or 2007 Xeon processor.
                                                        0
                                                        а HDD?
                                                          0
                                                          Там используется Elastic block store и он вроде как одинаковый для всех, независимо от тарифа(выше был коммент про то, что их можно объединять в рейды для увеличения скорости)
                                                        0
                                                        Micro instance. Почему-то не вставил ссылку, когда писал.
                                                        На счет цены — $82 / 3 года = $27,33 в год. $27,33 / 12 месяцев = $2,27 в месяц. Цена взята из ec2 pricing, я пересчитал — $82 / 3 года / 365 дней / 24 часа = $0,0031. Видимо, $0,007 указано для годового контракта, 54$.
                                                          0
                                                          Ах так вы пока считатель, а не юзатель:) Тогда спешу вас разочаровать.
                                                          Reserved Instances give you the option to make a low, one-time payment for each instance you want to reserve and in turn receive a significant discount on the hourly usage charge for that instance
                                                          По-русски — 82 доллара — плата за скидочную цену 0.007$ за час(вместо 0.02 в случае micro instance).

                                                          Там же и калькулятор есть. calculator.s3.amazonaws.com/calc5.html
                                                            0
                                                            Да, намудрил, получается $82 / 3 года / 365 дней / 24 часа + 0,007 в час = $0,010 в час с учетом начального платежа. Ровно в два раза дешевле, чем без резерва.
                                                            Большое спасибо, что помогли разобраться
                                                          0
                                                          Вдогонку: если вам интересно, вот результат ab в 10000 запросов в 100 потоков. Загруженность процессора не поднималась выше 10%, подозреваю, время уперлось в скорость жесткого диска.
                                                          При таких настройках я могу выдержать хабраэффект, главное — грамотно пользоваться кешем (множество интересной информации по теме).
                                                            0
                                                            Сервер за 2.27 выдерживает хабраэффект? Напрашиваетесь на экперимент
                                                              +1
                                                              Я напишу об этом, думаю, будет интересно. А сервер, как выяснилось выше, обходится мне в $7.44 в месяц ($89.28 в год, соответственно 208 и 2501 рубль по сегодняшнему курсу без учета трафика) при наличии резерва на три года.
                                                                0
                                                                Обязательно напишите!
                                                                  0
                                                                  Тщетно попытался заснуть, и вот, третий час сижу пишу. Обещаю статью в две недели, в эту либо следующую пятницу (протестировать нагрузку, да и нужно перелопатить сотни килобайт текста).
                                                                  Единственное неудобство — почему-то теперь все блоги стали коллективными, и для написания в них нужно пять кармы — в итоге, я не могу даже сохранить черновик (что совсем странно), приходится писать в не очень хорошо работающем хабраредакторе и сохранять текст вручную в evernote.
                                                                    0
                                                                    Посильно поучаствовал, получилось как раз 5. Надеюсь, остальные «закрепят» результат.
                                                                    Ждём статью!
                                                                  0
                                                                  А по-моему ничего интересного не будет. У вас сейчас вдс с одним ядром и полугигом рам. Способна она ровно на то, на что способна вдс с одним ядром и полугигом рам. В отличие от клодо и др. она не будет scale-ится при нагрузке(амазон использует принцип запусти побольше инстансов, а не расширяй свой). Единственное чем вы сможете всех удивить это счетом за траффик:)
                                                                  0
                                                                  Что вы все называете эту маленькую вдску сервером? Ну хватит:)
                                                            0
                                                            облако — это такое место, которое наступает для вас, когда вы уже нифига не помещаетесь на шареде/слабеньком впс, но еще нифига не окупаете нормальный сервер + вы не знаете, как быстро будет расти клиентская база и нарузки.

                                                            с облака есть три выхода:
                                                            — на кучу своих серверов со своими матерыми админами
                                                            — на старое место
                                                            — /dev/null
                                                            –2
                                                            какой-то желтушный заголовок и не отвечает содержимому, правильней было бы написать «что и как упали небеса». ответа на вопрос «почему» нет.
                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                0
                                                                в оригинале заголовок такой же. я понимаю что переводчик просто перевел как было, и в предыдущем посте был камень в огород оригинальной статьи, а не перевода. нафига было минусовать? (пысы: статью я кстати не минусовал).
                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                0
                                                                Нормальный заголовок. Там выше ссылка, что лежат, к примеру, сервера компании по мониторингу людей с сердечной недостаточностью. Для кого-то это трагедия.
                                                                  0
                                                                  Согласен, что это плохо, но причем тут мой камент?
                                                                  (с технической точки зрения, подобные системы (имеющие непосредственное отношение к жизни и здоровью людей) должны проектироваться с учетом возможности отказа любой подсистемы, и уж тем более отказа удаленных систем со связью через каналы общего пользования (интернет), которые никакой надежности вообще не гарантируют. и их отказ не должен быть трагедией)
                                                                0
                                                                Самое забавное, когда год назад были проблемы у макхоста, у hosting.ua и других — многие нахваливали Амазон в стиле «а я вот переехал в облако и не парюсь». Какая цикличная все-таки штука — история!
                                                                  0
                                                                  Если бы она был по-настоящему циклична, то мы бы тут видели комментарии типа: «А я сижу на нашем валуйхосте и радуюсь».
                                                                  +2
                                                                  Один сбой произошёл у Амазона, а вы его уже загнобили. Просто загнобили до ужаса. Ваши макхосты и хостинг.уа курят в сторонке, их даже с Амазоном сравнивать смешно. Посмотрев на аптайм амазона, я думаю, они из кожи вон вылезут, лишь бы такого больше не повторилось. И я верю, что так будет.
                                                                    0
                                                                    на макхостах и хостинг.уа хостятся одни хомяки-визитки. а AWS пытается себя позицинировать хотя бы как частичную, но замену полноценной собственной инфраструктуре. а после таких аварий, доверие ко всем SaaS очень падает. что есть впринципе хорошо.
                                                                    0
                                                                    Массивы EBS могут быть только в одной зоне доступности и доступ к ним может идти только из этой зоны. Судя по всему, распределённая база данных Amazon RDS использует секретные API, позволяющие получать доступ к EBS из других зон, но эти интерфейсы не доступны никому, кроме RDS (хм… компания из Сиэттла, которая использует секретные API для получения конкурентного преимущества — звучит как-то знакомо?)


                                                                    Секретные API для Amazon RDS по использованю Amazon EBS? Вы, должно быть, шутите.
                                                                      0
                                                                      прим. пер.,

                                                                      Я так понимаю, в качестве «пер.»-а выступил промпт? Или все-же гугл транслейт?
                                                                      Не в обиду будет сказано, но вторую половину статьи читать просто невозможно. А жаль, тема интересная.

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

                                                                      Самое читаемое