DNS "распространение" по сути является мифом.Задержка есть, но это не связано с тем, что правильно называется «распространением».Это связано с распределенным кэшированием и TTL.Это явление, которое легко понять, но, возможно, немного трудно объяснить.
Соблюдайте TTL («время жизни») в вашей текущей записи DNS.Давайте предположим, что это 3600 - число в секундах, так что это будет 1 час.Значение current означает, что next раз, когда вы меняете запись, вы можете ожидать, что до этого длинного будет «распространяться».
Итак, запишите значение, затем измените TTL на очень маленькое число, например 15. После того, как предыдущий TTL за время пройдет, 15 будет вашим текущим TTL, глобально.(Если предыдущее значение было 3600, то через час - 3600 секунд - после того, как вы изменили на 15, это будет 15, когда ваше новое эффективное значение будет глобально.)
После того, как это установлено, вы можете изменитьA-запись указывает на новый IP-адрес, и изменение будет «распространяться» в течение 15 секунд.На самом деле, это займет около 35 секунд дольше, если вы используете маршрут 53, потому что маршрут 53 имеет небольшую задержку, прежде чем изменения становятся видимыми ... но эта стратегия позволяет быстро измениться - в основном - с минимальными нарушениями.
EC2 позволяет выполнять горячую замену общедоступного IP-адреса для Elastic IP без остановки машины, поэтому вы можете взять этот IP-адрес и поместить его в DNS, а затем подключить его к экземпляру, и все готово.В течение нескольких секунд ваш DNS будет корректным и «распространенным».Как только вы освоитесь с новой средой, снова измените DNS TTL на большее значение, чтобы повысить производительность и сократить количество запросов, которые должен обрабатывать Route 53.
Все это звучит довольно просто, но все же есть ловушка.
Суть в том, что любой, у кого при внесении изменений открыт браузер, может потерять доступ к сайту, независимо от того, что вы делаете, потому что браузеры, как правило, кэшируют DNS-запросы, независимо от настроенного TTL.Запись DNS актуальна и актуальна, но их браузер не ищет ее.Браузер может кэшировать старое значение, пока оно не будет закрыто.Поведение браузера в этом отношении является чем-то вроде подстановочного знака.
Существует служба AWS, которую вы можете временно использовать, чтобы этого не происходило, - выставив свой сайт на общедоступных IP-адресах, не привязанных к фактическому экземпляру.Вы можете временно перенести свой DNS, чтобы он там указывал.
Предполагая, что это веб-сайт, подключите балансировщик нагрузки приложения к экземпляру.Переключите DNS, чтобы указать на ALB.Подождите, пока журналы вашего веб-сервера не покажут, что все запросы поступают через ALB.Затем измените экземпляр на Elastic IP.Поскольку ALB подключается к экземпляру, используя его частный IP-адрес, это не будет затронуто.Затем измените DNS на EIP.Опять же, дождитесь, пока журналы веб-сервера не начнут отображать трафик, поступающий непосредственно к экземпляру, и прекратите показывать любой трафик, проходящий через ALB - журналы ALB не показывают значимого трафика.(Для этого нельзя просто использовать метрики подсчета запросов ALB, поскольку все веб-серверы с общедоступными IP-адресами получают некоторое количество мусорного трафика от людей, просматривающих сеть.) Если трафик не проходит через ALB, удалите его.