Назад | Перейти на главную страницу

Смена псевдонима записи AWS Route 53 занимает слишком много времени

Я установил стек в AWS Cloudformation, и он работает. Стек содержит ELB (балансировщик нагрузки) и несколько экземпляров EC2. Когда мы выполняем новое развертывание нашего приложения, мы создаем новую среду и удаляем старую. Следовательно, мы должны обновить DNS-запись в Route 53. Мне интересно, как долго старый стек должен оставаться в живых.

Я следил за Документы AWS для использования субдомена без миграции родительского домена. NS-записи родительского домена (в сторону AWS DNS) имеют TTL равное 3600. Внутри Route 53 я установил A-запись с псевдонимом для балансировщика нагрузки в стеке (здесь я не могу установить TTL).

Я не могу ввести TTL для записи псевдонима из консоли AWS. Однако некоторые источники говорят, что изменение может занять до 60 секунд.

Я только что провел несколько тестов локально, чтобы проверить, сколько времени требуется DNS, чтобы получить новый стек. Это время между обновлением DNS-записи псевдонима в Route 53 и возможностью достичь нового стека в моем браузере:

Разве это не должно быть меньше 60 секунд? Какое максимальное время это может занять для всех клиентов? Можно ли сократить это время? В какое время безопасно удалить старую стопку?

Во-первых, важно понимать, что записи DNS, кэшированные на клиенте или их преобразователе DNS, находятся вне вашего контроля (обратите внимание, что я имею в виду записи DNS, а не ваш авторитетный сервер имен). Следовательно, клиент и его DNS-преобразователь должны соблюдать ваш TTL.

В случае нового посетителя, который никогда раньше не посещал ваш сайт и чей DNS-преобразователь не кэшировал ваши записи (или посещал их достаточно давно, когда срок действия кеша истек), они немедленно увидят новые записи.

Разве это не должно быть меньше 60 секунд?

Должно, но только если ваш клиент соблюдает TTL. У некоторых клиентов минимальный TTL, а в некоторых сетях также есть преобразователь DNS, который может кэшировать результаты.

Можно ли сократить это время?

Вы должны помнить, что большинство ваших посетителей (при условии, что это общедоступный сайт) не сидели и загружали ваш сайт каждые несколько секунд, как вы. Большинство ваших посетителей, вероятно, не посещали сайт в последнее время, и их DNS-преобразователь может не иметь записей в их кеше. Большинство распознавателей DNS должны уважать ваш TTL, но вы не можете этого гарантировать.

В какое время безопаснее удалить старую стопку?

Лучше судить об этом по тому, какой трафик все еще обслуживается старым стеком, а не по TTL DNS. Если вы используете ELB, вы сможете увидеть, сколько запросов в секунду обслуживает старый ELB в cloudwatch. Подождите, пока он не упадет ниже допустимого уровня, затем удалите его.

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

Изменить, я заметил, что у Google Public DNS есть инструмент, позволяющий очищать кеш:

https://developers.google.com/speed/public-dns/cache

Это может ускорить процесс, так как значительная часть клиентов, вероятно, будет им пользоваться.