Назад | Перейти на главную страницу

При переносе домена из записи A в CNAME важен порядок

Мы находимся в процессе переноса некоторых сайтов на AWS от другого провайдера. Наш текущий балансировщик нагрузки был доступен на одном IP-адресе, поэтому все записи DNS были созданы с такими записями, как:

A example.com 192.0.2.0

Как вы, возможно, знаете, AWS Elastic Load Balancer уже предоставляет запись A для своего балансировщика нагрузки, поэтому сайты создаются с такими записями CNAME:

CNAME example.com production-lb1-<numbers>.us-west-1.elb.amazonaws.com

Мы установили этот рекорд с TTL в 900 секунд, мы не видели, чтобы он распространялся.

dig all example.com

Есть ли какие-то волшебные внутренние механизмы DNS, которые останавливают подобные конфликты имен? I.E. он не хочет создавать CNAME, потому что A и CNAME будут указывать на противоречивую информацию?

Значит ли это, что мне нужно удалить запись A, а затем добавить CNAME? Достаточно ли умен DNS-контроллеры, чтобы не уронить мой сайт, когда на него ничего не указывает? I.E. Я бы действительно не хотел, чтобы имя A исчезло, когда CNAME еще не запущен. Мысли?

  1. Что за TTL старый Запись? Если это, например, 43200 (12 часов), старая запись будет оставаться в кешах DNS по всему миру до 12 часов.

    Решение этой проблемы - заблаговременно снизить TTL для старых записей до примерно 300 (5 минут), прежде чем изменять записи.

  2. Вы не могу иметь CNAME в корне домена (он же вершина). Т.е. example.com A 123.456.789.123 действительно, а example.com CNAME production-lb1-...elb.amazonaws.com является недействительно. Вероятно, поэтому ваш DNS-сервер проигнорировал это.

    Решением для этого является перенос домена example.com в AWS Route53, а затем используйте ALIAS A запись вместо CNAME. Таким образом, запросы на example.com возвращает фактические IP-адреса ELB вместо CNAME ELB. Это небольшая, но существенная разница.

    К сожалению, ALIAS работает только тогда, когда и домен, и балансировщик нагрузки находятся на AWS.

    Посмотреть здесь: Почему корень домена не может быть CNAME

Надеюсь, это поможет :)