
Недавний сбой в работе Amazon Web Services вывел из строя значительную часть интернета. И хотя распределенная архитектура облачных сервисов должна была бы защищать от подобных сбоев, на этот раз что-то пошло совсем не так. И, как выяснилось, виноват DNS (система доменных имён).
Проблема началась в ночь на 20 октября и длилась около трех часов, но последствия ощущались еще долго.
Как написал Amazon в техническом отчёте, причиной сбоя оказалась сломанная DNS-конфигурация базы данных DynamoDB, которую по ошибке опубликовали в Route53 - системе DNS-сервисов Amazon.
Из-за этого перестали работать зависимые сервисы, среди которых EC2 (виртуальные машины) и Network Load Balancer, обеспечивающий распределение нагрузки. DynamoDB обслуживает огромное количество сайтов, поэтому ее падение повлекло за собой миллионы ресурсов.
Техническая причина сбоя - так называемый "race condition", когда два системных события выполняются одновременно и поочередно отменяют действия друг друга. В данном случае один процесс DNS-обновления еще не успел завершить "старый план", когда другой уже применил новый, а затем - автоматически удалил старые записи. В результате вся таблица DNS для DynamoDB опустела, и сервис пришлось восстанавливать вручную.
Пока инженеры исправляли ситуацию, EC2 не мог запускать новые инстансы, что вызвало огромную очередь запросов. Их пришлось ограничивать, чтобы не перегрузить систему, поэтому многие сайты оставались офлайн еще часами. Далее начал плыть и Load Balancer, из-за рассинхронизации данных он считал здоровые узлы "мертвыми" и удалял их из DNS, только чтобы позже снова добавлять.
После аварии Amazon временно остановил системы DNS Planner и DNS Enactor для DynamoDB, чтобы исправить условия, которые привели к race condition. Компания также анонсировала новые механизмы тестирования для EC2 и контрольные ограничения для Load Balancer, чтобы подобное не повторилось.
Ранее мы рассказывали, что основатель Amazon Джефф Безос сделал непредсказуемый прогноз о будущем человечества. Миллиардер призывает не паниковать из-за роли искусственного интеллекта.