Простое и классное решение - поставить ELB позади CloudFront.
Если исходный сервер (в данном случае ELB) выдает ошибку 5XX (или 4XX, если хотите), CloudFront может вернуть пользовательскую страницу ошибки , которую можно настроить для CloudFront для выборки из корзины S3, создав второе начало, указывающее на ведро и создание кэша поведения маршрутизации (например) /errors/static/*
в ведро.
Это работает лучше, чем аварийное переключение на Route 53 по важной причине ... фатальный недостаток, если хотите ... браузеры ужасно относятся к кешированию DNS-запросов гораздо дольше, чем вы ожидаете. DNS TTL не имеет значения.
По сути, когда у браузера есть запись DNS, он просто пытается ее использовать ... обычно, пока все окна браузера не закрыты.
Поэтому, если ваш сайт отключается для посетителя, который уже был на сайте, он вряд ли увидит альтернативный сайт.
Хуже того, если посетитель впервые заходит на ваш сайт, пока он не работает, он будет «прилипать» к странице обслуживания, пока не закроет все окна браузера.
Если вы используете отказоустойчивый DNS, это действительно хорошо, если целью восстановления после сбоя по-прежнему является ваше приложение, может быть, еще дальше.
Вы можете отключить кеширование CloudFront, если оно вам не нужно.
Вы также можете настроить ненадлежащее значение для кэширования ошибок CloudFront на ненулевое значение, если хотите, чтобы он прекратил работу вашего сайта, пока он не работал, и пытался восстановиться. Для данной страницы, которая выдает ошибку, он будет продолжать отображать страницу ошибки и не будет беспокоить ваш сервер дополнительными запросами на эту страницу, пока не истечет Error CachingTTL.