Изменение псевдонима записи AWS Route 53 занимает слишком много времени
Я установил стек в AWS Cloudformation, который запущен и работает. Стек содержит ELB (балансировщик нагрузки) и несколько EC2-экземпляров. Когда мы делаем новое развертывание нашего приложения, мы создаем новую среду и удаляем старую. Поэтому мы должны обновить DNS-запись в маршруте 53. Мне интересно, как долго старый стек должен оставаться в живых.
Я использовал документы AWS, чтобы использовать поддомен без миграции родительского домена. NS-записи родительского домена (к AWS DNS) имеют TTL 3600
, Внутри маршрута 53 я настроил A-запись с псевдонимом балансировщика нагрузки в стеке (здесь я не могу установить TTL).
Я не могу ввести TTL для записи псевдонима с консоли AWS. Однако некоторые источники говорят, что изменение может занять до 60 секунд.
Я только что провел несколько локальных тестов, чтобы проверить, сколько времени потребуется DNS, чтобы собрать новый стек. Это время между обновлением DNS-записи псевдонима в Route 53 и достижением нового стека в моем браузере:
- Попробуйте №1: ~4 минуты
- Попробуйте №2: ~9 минут
- Попробуйте № 3: ~7 минут
- Попробуйте № 4: ~15 минут
Разве это не должно быть меньше 60 секунд? Какое максимальное время это может занять для всех клиентов? Можно ли сократить это время? Какое безопасное время для удаления старого стека?
1 ответ
Во-первых, важно признать, что записи DNS, кэшированные на клиенте или их распознавателе DNS, которые находятся вне вашего контроля (обратите внимание, что я имею в виду записи DNS, а не ваш авторитетный сервер имен). Поэтому клиент и их DNS-распознаватель должны соблюдать ваш TTL.
В случае нового посетителя, который никогда ранее не посещал ваш сайт и чей DNS-распознаватель не кэшировал ваши записи (или посетил достаточно давно, чтобы срок действия кэша истек), они сразу увидят новые записи.
Разве это не должно быть меньше 60 секунд?
Так и должно быть, но это только в том случае, если ваш клиент соблюдает TTL. Некоторые клиенты имеют минимальные TTL, а в некоторых сетях также есть преобразователь DNS, который может кэшировать результаты.
Можно ли сократить это время?
Вы должны помнить, что большинство ваших посетителей (при условии, что это публичный сайт) не будут сидеть и загружать ваш сайт каждые несколько секунд, как вы. Большинство ваших посетителей, вероятно, не посещали сайт в последнее время, и их распознаватель DNS может не иметь записей в своем кеше. Большинство распознавателей DNS должны уважать ваш TTL, но вы не можете гарантировать это.
Какое безопасное время для удаления старого стека?
Лучше судить об этом по тому, какой трафик все еще обслуживается старым стеком, а не DNS TTL. Если вы используете ELB, вы сможете увидеть, сколько запросов в секунду обслуживает старый ELB в cloudwatch. Подождите, пока это не упадет ниже приемлемого уровня, затем удалите его.
Для просмотра нового стека сразу после коммутатора я рекомендую просто вручную сбросить локальный кеш DNS. Если вы оставите свой собственный клиент для истечения срока действия записей, естественно, чтобы увидеть, сколько времени это займет, вероятно, не будет указывать на то, сколько времени это займет для других клиентов.
Правка, я заметил, что в общедоступном DNS Google есть инструмент, позволяющий очистить кеш:
https://developers.google.com/speed/public-dns/cache
Это может ускорить процесс, поскольку значительная часть клиентов, вероятно, будет использовать это.