21 апреля в 01:41 по тихоокеанскому времени произошел серьезный сбой в одном из дата-центров Amazon Web Services, «облака» для многих сайтов.
Некоторые крупные проекты (Reddit, Quora, Foursquare) вышли из строя или сильно пострадали.
Я уже видел много дезинформации с намеком на то, что проблемы пострадавших сайтов связаны только с ленью инженеров этих проектов, но в данном случае причина в другом.
И вот почему.
В AWS существует две концепции доступности: регионы и зоны доступности (AZ).
Всего существует пять регионов: два в США (западное и восточное побережье), один в Европе (Ирландия) и два в Азии (Токио, Сингапур).
Каждый регион содержит несколько зон доступности, которые должны быть изолированы друг от друга и не иметь общей точки отказа, кроме стихийного бедствия или чего-либо подобного масштаба.
AWS заявляет, что «размещая экземпляры в разных зонах доступности, вы можете защитить свои приложения от сбоев в одном месте».
Под «местом» они подразумевают « физическая независимость зоны доступности друг от друга и независимой инфраструктуры».
Судя по всему, это отдельные дата-центры( хотя из описания Амазона это не очевидно - возможно, это разные этажи/помещения в дата-центре с независимым электроснабжением и подключением по разным каналам - прим.
переулок ).
Они не должны рухнуть одновременно друг с другом, если только не произойдет катастрофа, охватывающая весь регион.
Зоны доступности также предлагают «недорогое соединение с малой задержкой между зонами доступности в одном регионе».
Межрегиональная же связь осуществляется через открытый Интернет и является относительно дорогой, медленной и ненадежной.
Это «правила игры».
Итак, если вы играете по правилам AWS и у вас есть база данных MySQL «главный/подчиненный» (возьмем наиболее распространенный пример), то по логике вам следует поместить главный и подчиненный сервер в один и тот же регион, но убедитесь, что они находятся в разных зонах доступности.
Вы не будете размещать их в разных регионах, иначе вам придется пересылать трафик по медленным и дорогим каналам между регионами, и скорее всего у вас возникнет больше проблем с синхронизацией баз данных.
Вы подвергаетесь риску только в том случае, если, например, ураган обрушится на восточное побережье и разрушит центры обработки данных, но в остальном с вами все будет в порядке — по крайней мере, пока выполняются обещания AWS. Итак, в конце концов, у нас есть проблема.
Вчера несколько районов в регионе Восточного побережья были недоступны.
AWS нарушила свои собственные обещания относительно сценариев сбоев в зоне доступности.
Это означает, что у AWS есть какая-то общая точка отказа (при условии, что не произошел какой-то совершенно невероятный сценарий, например, одновременное физическое повреждение нескольких независимых инфраструктур).
Сайты, которые до сих пор не работают, вполне корректно выполняли свои условия «правил игры»; проблема в том, что AWS не следовала своим собственным спецификациям.
Было ли это связано с некомпетентностью, нечестностью или чем-то более простительным, мы просто не знаем на данный момент. Но разработчики Quora, Foursquare и Reddit очень компетентны и обвинять их было бы неправильно.
Конечно, теоретически можно защититься даже от катастрофических сбоев (множественных зон доступности), но для большинства предприятий эти дополнительные усилия и затраты на разработку того не стоят (или даже могут оказаться контрпродуктивными, усложняя систему).
Я уверен, что все сайты, которые сейчас не работают, имеют резервные копии.
Проблема в том, что вернуть их в онлайн может оказаться сложно и рискованно — на практике вам нужно переместить все в другой регион, иначе задержка сети между вашими серверами будет слишком велика.
На AWS это крайне сложно: серверы в разных регионах имеют разный набор опций, разные идентификаторы AMI, я думаю, что зарезервированные инстансы вообще нельзя перемещать между дата-центрами — в реальности передача управления в другой регион практически невозможна.
Вероятно, это потребует примерно тех же усилий, что и переход в совершенно другое облако, что, вероятно, является лучшим вариантом восстановления после такой катастрофы.
Насколько нам известно, Quora начала этот процесс в ту минуту, когда произошел сбой AWS, и еще не завершила его — это может занять день.
Короче говоря, вина здесь лежит исключительно на AWS, которая «гарантировала» нарушенные ею условия.
Ошибки случаются, но это вина AWS. И это не вина облачного хостинга как такового.
Этот случай показывает, что выбирать провайдера нужно тщательно.
Я думаю, что многие люди пересмотрят свой выбор в пользу AWS. Еще несколько мыслей:
- Причина, по которой так много сайтов размещено в регионе Восточного побережья, заключается в том, что именно здесь AWS в первую очередь внедряет новые функции.
Это также самый дешевый вариант. И это, наверное, лучший регион для обслуживания трафика (хорошая производительность для Северной Америки, сносная производительность для Европы)
- Причиной сбоя на самом деле стали дисковые массивы ЭБС (Elastic Block Store), которые с самого начала использования оказались катастрофическими с точки зрения надежности.
Но это тема совсем другой статьи!
- Массивы EBS могут находиться только в одной зоне доступности, и доступ к ним возможен только из этой зоны.
Судя по всему, распределенная база данных Amazon RDS использует секретные API, которые позволяют получать доступ к EBS из других зон, но эти интерфейсы недоступны никому, кроме RDS (хм.
компания из Сиэтла, которая использует секретные API для получения конкурентного преимущества - звучит как - это знакомо?)
-
Принцип Kiss В Разработке
19 Oct, 24 -
Nginx Занял 51% Веб-Серверов В Рунете
19 Oct, 24 -
Ниссан Не Заводится, Если Водитель Пьян
19 Oct, 24