У меня есть веб-приложение, размещенное в Azure, которое дает мне «собственный» домен, awesomeapp.cloudapp.net
, а в настройках я вижу IP-адрес: 123.456.789
У нас есть домен www.awesomeapp.com
который указывает на целевую страницу, продвигающую компанию и службу приложения, и я настроил запись A следующим образом:
app.awesomeapp.com
=> 123.456.789
который отлично работает.
Проблема в том, что иногда нам нужно выключить виртуальную машину, и при повторном включении IP-адрес другой, поэтому запись A больше не работает. Действительно ли я установил такую запись CNAME?
app.awesomeapp.com
=> awesomeapp.cloudapp.net
это решило бы проблему разных IP-адресов каждый раз, когда я включаю / выключаю машину. Это сработает? Это то, для чего используется CNAME? Это хорошая практика (с точки зрения производительности и безопасности?
Против CNAME:
Это (крошечное) снижение производительности, так как нисходящие кэши DNS должны выполнить 2 поиска DNS, один для CNAME и один для A-записи, на которую указывает CNAME. Расплывчатые, фальшивые аргументы в пользу того, что CNAME имеют меньше "полномочий" или проблем с совместимостью.
В пользу CNAME:
Они обеспечивают чистую абстракцию между оборудованием (физическими серверами) и службами. Они упрощают управление DNS - когда сервер перемещается, вам нужно изменить только одну запись. Попробовав несколько разных способов сделать это, у меня теперь есть личный любимый стиль. Это:
Одна запись A для каждого физического сервера; с довольно низким TTL (возможно, 30 минут); дать серверу понятное для человека имя. Один CNAME для каждой службы; с высоким TTL (возможно, 24 часа); указывая на указанные выше имена серверов. В качестве единственного исключения из приведенных выше правил корнем домена является A-запись, указывающая на веб-сервер / балансировщик веб-нагрузки. (@ Должен быть A-record.) Я считаю, что эта установка работает хорошо. Он запрещает дополнительные поиски DNS для CNAMES; и если сервер выйдет из строя, я все равно могу довольно быстро изменить общедоступный DNS.
Вот (импровизированный) пример синтаксиса BIND:
;name ttl class rr value
server01 30m IN A 192.168.0.3
server02 30m IN A 192.168.0.4
webmail 24h IN CNAME server01
extranet 24h IN CNAME server02
ftp 24h IN CNAME server02
Использование CNAME - довольно стандартная практика для Azure именно по этой причине, это предотвратит проблему изменения IP-адреса.
Если по какой-то причине вам нужно использовать запись A, вы можете использовать зарезервированный IP, который останется постоянным, даже если вы перезагрузите или выключите виртуальную машину.