Персональный блог Александра Мокрова

О работе и отдыхе

Быстрый переезд на новый сервер: ускорение обновления ДНС

servЕсли вы планируете переезд к другому хостинг-провайдеру, или на другой сервер со сменой IP, то вы обязательно столкнетесь с проблемой кеширования ДНС-записей у клиентов и провайдерских неймсерверов. В результате этого, в зависимости от настроек «времени жизни» зоны, клиенты не будут знать об обновлении зоны на протяжении ощутимо длительного времени – вплоть до 2х суток (а иногда и больше).

Можно сократить время простоя, и тем самым ускорить перенос сайта, если вы имеете доступ к редактированию ДНС-зоны (через панель управления или непосредственный доступ к конфигурационным файлам первичного DNS-сервера вашей зоны). Таким образом можно уменьшить даунтайм до минимальных 5 минут.

Типичные настройки зоны (по умолчанию) выглядят так:

$TTL    14400
@       IN      SOA     ns1.example.com. admin.example.com. (
        2009081300      ; Serial
        10800           ; Refresh
        3600            ; Retry
        604800          ; Expire
        86400           ; Negative Cache TTL
)

Мы сейчас не будем подробно останавливаться на функциональном значении всех полей зоны, благо эту информацию можно прочитать в руководстве по настройке ДНС-сервера. На данный момент важно знать, что Serial должно с каждым изменением настроек увеличиваться. Классически рекомендуется его формировать из даты + двух цифр номера модификации. В виде «YYYYMMDDNN», где YYYY – год, MM – месяц, DD – день месяца, NN – номер модификации за день.

Для того чтобы наши будущие изменения быстро «применились», нам необходимо временно выставить такие значения:
$TTL = 361
Serial = сформировать на основе вышеуказанной информации, увеличив дату или номер модификации
Refresh = 362
Retry = 63
Expire = 3640
Negative Cache TTL = 365

Таким образом получится:

$TTL    361
@       IN      SOA     ns1.example.com. admin.example.com. (
        2009081301      ; Serial
        362             ; Refresh
        63              ; Retry
        3640            ; Expire
        365             ; Negative Cache TTL
)

Именно эти значения рекомендуются как наиболее с балансированные для задачи оперативного реагирования на изменения в зоне. Они обусловлены с одной стороны приемлемым временем устаревания ДНС-кешей, а с другой стороны не дают вашему DNS-серверу «лечь» от повысившейся нагрузки (в случае слишком уж малых значений). К тому же некоторые реализации могут переопределять собственными значениями слишком заниженные времена (ниже указанных).

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

По прохождении 1-2 суток, можно смело менять записи в ДНС на новый IP, выжидать час, затем, убедившись, что все ок, не забыть возвратить прежние значения (кроме Serial, который необходимо увеличить снова).

4 Комментариев

4 Комментариев

  1. Смешной Январь 10th, 2010 11:05

    Очень полезный блог, автор всегда (почти) описывает актальные темы. Спасибо.

  2. Brodyaga Апрель 6th, 2012 12:55

    Спасибо. Будем пробовать. А то перенес сайт а все еще могу смотреть его через сторонние прокси сервисы

  3. Kot Июль 30th, 2013 02:08

    Спасибо, дельно и четко.

  4. yodo Февраль 6th, 2015 11:11

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

Оставить комментарий