Понизьте TTL перед переносом
Обновлено 5 мин чтенияКоманда DNSPeek
Понизьте TTL записей, которые будете менять, до 300 секунд как минимум за один полный старый TTL до переноса, обычно за 24–48 часов. Тогда резолверы будут кешировать старый адрес не более пяти минут, так что переключение быстро дойдёт почти до всех, а откат будет таким же быстрым. Через несколько дней после переезда верните TTL к обычному значению.
Что делает TTL во время переноса
У каждой DNS-записи есть TTL (time to live, время жизни) в секундах. Он сообщает резолверам, сколько они могут повторно использовать закешированный ответ, прежде чем запросить снова. С TTL 86400 резолвер, запросивший ваш домен прямо перед переключением, может ещё целые сутки отправлять своих пользователей на старый сервер.
Само по себе понижение TTL ничего не ускоряет. Оно сокращает следующий период кеширования. Поэтому и важен момент: короткий TTL начинает действовать только тогда, когда старый, длинный TTL истёк в каждом кеше, где хранится запись.
График
| Когда | Запись | TTL | Зачем |
|---|---|---|---|
| Сегодня | A → IP старого сервера | Понизить до 300 | Кеши начинают получать короткий TTL по мере устаревания их старых копий |
| После того как пройдёт один старый TTL | A → IP старого сервера | 300 | Теперь каждый кеш держит запись не более пяти минут |
| День переключения | A → IP нового сервера | 300 | Посетители переходят за несколько минут; откат так же быстр |
| Через несколько дней | A → IP нового сервера | Вернуть к 3600 или больше | Меньше запросов, лучшая устойчивость, если у вашего DNS-провайдера случится сбой |
; Before the move: same IP, short TTL
example.com. 300 IN A 198.51.100.7
; Switch day: new IP
example.com. 300 IN A 203.0.113.10
; A few days later: a longer TTL again
example.com. 3600 IN A 203.0.113.10Как понизить TTL
Шаг 1: Проверьте текущий TTL
Узнайте TTL каждой записи, которую измените, с помощью проверки TTL или
digи запишите самое большое значение.Шаг 2: Установите TTL 300 секунд
В панели DNS-провайдера измените только TTL этих записей на 300. Оставьте их направленными на старый сервер.
Шаг 3: Подождите один старый TTL
Подождите как минимум столько, сколько составлял записанный старый TTL, чтобы каждая закешированная копия с длинным TTL устарела.
Шаг 4: Переключите записи
Измените записи на новый сервер. Большинство посетителей попадёт на него в течение пяти минут; следите за этим с помощью проверки распространения DNS.
Шаг 5: Снова повысьте TTL
Через несколько дней после переезда, когда будете уверены, что откат не понадобится, верните TTL к 3600 секундам или больше.
Проверьте текущий TTL
Бесплатная проверка TTL показывает TTL каждой записи домена. В терминале число после имени — это TTL в секундах:
dig example.com A +noall +answer
# example.com. 3600 IN A 198.51.100.7Resolve-DnsName -Name example.com -Type A | Format-Table Name, TTL, IPAddressЗакешированные ответы отсчитывают время
Рекурсивный резолвер показывает оставшееся время своей закешированной копии, поэтому число уменьшается между запросами. Чтобы увидеть настроенное значение, запросите авторитетный NS-сервер напрямую (dig @ns1.your-dns-host.com example.com A).
Какие записи понижать
- A и AAAA для домена и для
www, а также для любых других имён хостов, которые указывают на старый сервер, напримерshopилиapi. - CNAME-записи, которые будут указывать на новое место.
- MX — только если почта тоже переезжает. Если почта остаётся на месте, MX не трогайте.
- TXT-записи, например SPF, если меняются серверы-отправители.
Записи, которые вы не будете трогать, могут сохранить свой TTL. Если вы переносите DNS-зону к другому провайдеру (меняете NS-серверы), TTL отдельных записей помогает меньше: у делегирования в реестре есть собственный TTL, который вы не можете изменить, часто от одних до двух суток. В этом случае сначала скопируйте все записи в новую зону и сравните обе стороны с помощью Сравнения DNS, прежде чем менять NS-серверы. Проверка NS-серверов показывает, что выдаёт реестр.
Насколько низко понижать?
300 секунд — обычный выбор. Этого достаточно мало, чтобы переключение или откат дошли до большинства посетителей за несколько минут, и достаточно много, чтобы не нагружать вашего DNS-провайдера. Значения ниже, например 60 секунд, на практике редко помогают: некоторые резолверы всё равно применяют минимальное время кеширования, а браузеры и операционные системы держат собственные короткие кеши.
Некоторые DNS-панели не разрешают значения ниже определённого минимума или показывают TTL как меню с пунктами вроде «Auto». Для проксируемой записи в CDN, например Cloudflare, установленный TTL для переключения вообще не важен: посетители резолвятся в CDN, а менять нужно origin в CDN.
Типичные ошибки с TTL
- Понизить TTL в день переключения. Кеши, которые уже держат запись с TTL в одни сутки, сохранят её до суток, каким бы коротким ни был новый TTL.
- Изменить не ту зону. Если NS-серверы домена указывают на Cloudflare, редактирование зоны у регистратора ничего не даст. Сначала проверьте, какие NS-серверы авторитетны.
- Забыть про www и IPv6. Голый домен переключается за минуты, а
wwwили AAAA-запись всё ещё несёт старый IP с длинным TTL. - Так и не повысить TTL обратно. Постоянный TTL 300 секунд работает, но означает больше запросов и меньшую защиту, если у вашего DNS-провайдера случится сбой.
- Ждать, что TTL поможет с CDN. С проксируемой записью посетители в любом случае резолвятся в CDN; изменение происходит в настройках origin в CDN.
Используйте время ожидания для проверки
Короткий TTL — это ещё и ваша страховка. Если после переключения что-то пойдёт не так, возврат записи на старый сервер дойдёт до посетителей так же быстро, если старый сервер ещё работает. Держите его, пока переезд не завершится окончательно. Сутки между понижением TTL и переключением — идеальное время проверить новый сервер. Откройте сайт на новом IP с помощью ссылки-превью DNSPeek, запустите QA-отчёт и отправьте ссылку тому, кто должен её согласовать. QA-отчёт также читает DNS домена и напомнит понизить TTL, если он всё ещё длинный.
Чек-лист TTL
TTL
- Текущий TTL каждой записи, которая изменится, записан
- TTL понижен до 300 секунд, записи ещё указывают на старый IP
- Перед переключением прошёл один старый TTL
- Записи переключены на новый IP
- Распространение проверено через публичные резолверы
- Через несколько дней TTL снова повышен
Частые вопросы
За сколько до переноса нужно понизить TTL?
Как минимум за один полный старый TTL до переключения. Если TTL составляет час, понижайте его больше чем за час; если сутки — больше чем за сутки. Понижение за 24–48 часов покрывает типичные случаи.
Какой TTL использовать для переключения DNS?
300 секунд, то есть пять минут, — обычное значение. Оно делает переключение и любой откат быстрыми, не создавая заметной нагрузки на вашего DNS-провайдера.
Поможет ли понижение TTL непосредственно перед переключением?
Очень мало. Резолверы, закешировавшие запись со старым, длинным TTL, держат её, пока этот TTL не истечёт, так что короткое значение помогает только тем резолверам, которые запрашивают снова после понижения.
Стоит ли держать низкий TTL постоянно?
Обычно нет. Более длинный TTL, например час или больше, означает меньше запросов и дольше сохраняет ваш сайт доступным, если у вашего DNS-провайдера случится сбой. Снова понизьте его перед следующим запланированным изменением.
Влияет ли TTL на смену NS-серверов?
Лишь частично. Делегирование к вашим NS-серверам резолверы кешируют в соответствии с TTL родительской зоны, который вы не можете изменить. Скопируйте все записи к новому провайдеру и заложите до двух суток на саму смену NS-серверов.