Знизьте 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-серверів.