Мы находимся в процессе переноса некоторых сайтов на 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 еще не запущен. Мысли?
Что за TTL старый Запись? Если это, например, 43200 (12 часов), старая запись будет оставаться в кешах DNS по всему миру до 12 часов.
Решение этой проблемы - заблаговременно снизить TTL для старых записей до примерно 300 (5 минут), прежде чем изменять записи.
Вы не могу иметь 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
Надеюсь, это поможет :)