2009/06/29

Как безболезненно сменить ip-адрес сайта (хоста)?

За разрешение имён хостов в ip-адреса и наоборот ответственна служба DNS. Чтобы снизить нагрузку на уполномоченные за зону (домен) сервера используется кеширование dns-запросов, и в настройках DNS-сервисов есть параметры, помогающие гибко сконфигурировать данную функциональность.

В описании зоны есть параметры для вторичных серверов:
refresh - интервал обновления зоны (в секундах) для вторичных уполномоченных серверов
retry - интервал попытки обновления зоны (в секундах) при неудаче обновления
expire - интервал истечения полномочий для вторичных уполномоченных серверов при неудаче обновления (в секундах)

В рамках вопроса, который интересовал меня (см. subject) наиболее интересны параметры Default TTL, TTL, Minimum TTL. Они определяют время TTL (Time-to-live - "время жизни"), в течение которого DNS-серверы (кроме вторичных), получившие информацию о записях с любого DNS-сервера, будут ее хранить в своей памяти (кэше) и сообщать ее по запросам других DNS-серверов.

  • TTL - этот параметр определяет период времени (в секундах), в течение которого другие DNS-сервера должны хранить запись в кэше. Если значение параметра в записи не указано, то "время жизни" определяется параметром Default TTL.
  • Default TTL - определяет значение параметра TTL для тех записей, для которых это значение не установлено явно. Обычно используется именно Default TTL вместо указания TTL для каждой записи.
  • Minimum TTL - определяет "время жизни" отрицательных ответов на запросы о ресурсах, не существующих в DNS.

Таким образом, если Вы готовитесь сменить ip-адрес сайта (хоста) и хотите об этом объявить через СМИ (с указанием конкретной даты), Вам необходимо заранее изменить (Default)TTL-записи Вашей зоны (либо конкретных хостов в зоне) на маленькие значения, например 5 минут (60 секунд), подождать, пока изменения вступят в силу и обязательно проверить.
После того как перенос будет завершён не забудьте вернуть значения назад, чтобы снизить нагрузку на уполномоченные за Вашу зону dns-сервера.
Безусловно, это не решит всех проблем, так как есть крупные dns-forward'еры (dns-сервера), которые используются большим числом людей (например, провайдер даёт пользоваться своим dns-сервером) и которые могут игнорировать заданные Вами TTL-значения. В данном случае ничего кроме пресловутого "ждите" не поможет. Хотя можете попробовать добраться до админов данного dns-сервера и попросить их руками выбросить из кэша данные о Вашем старом ip-адресе :)

Links:
  1. DNS-Master - Редактор файлов зон DNS :: Помощь
  2. Bog BOS: DNS (Domain Name System)
  3. Moving your website to another server? Tune your DNS for minimum downtime.

5 comments:

chip said...

Если необходимо перенести один сайт, то на старом месте можно *дополнительно* к вышеописанному сделать безусловный redirect на
http://новый_адрес/$uri

А на новом адресе перенесенного домена поставить флаг _default_ в соотвествующем virtualhost(e).

Roman Sozinov said...

to chip:
Благодарю, совсем забыл о http-редиректах. Хотя сам когда-то именно ими и спасался :)

poige said...

«Крупные dns-forward'еры», которые нарушают требования, описанные в RFC, идут лесом, который кончается на юге — по-определению.

anchous said...

Обычно вот на этапе обнулить кэш для зоны и возникает затыка, особенно с каким нибудь западными конторами, ибо часто просто отсутствует админ как класс, так что с наиболее веселыми товарищами время ожидания может растягиваться до недели

Саша Домнич said...

Очень быстрая смена IP адреса у http://altvpn.com/ большой список серверов, хорошая скорость, тест код 24 часа, а если хорошо попросить модераторов, даже и помогут настроить