Можем ли мы иметь несколько CNAMES для одного имени?

43

Мне это нужно для балансировки нагрузки. Например, у меня есть две учетные записи хранения Azure (скажем, aи b) и адреса BLOB-объектов для них a.blob.core.windows.netи b.blob.core.windows.net. Они оба хранят идентичные данные. Теперь мне нужно предоставить одно внешнее имя (скажем example.com), которое указывает на обе учетные записи хранения и должно работать в циклическом режиме. Это может быть достигнуто, если я создаю две записи CNAME в DNS, как показано ниже, и это разрешает одну из них в циклическом разборе.

  1. example.com CNAME a.blob.core.windows.net
  2. example.com CNAME b.blob.core.windows.net

Но я не могу создать две записи CNAME для одного имени в DNS-сервере Windows.

Так возможно ли это?

Рагурам Мурти П
источник
Я не могу проверить, но я не думаю, что вы можете сделать это с CNAMES. Попробуйте A записи вместо.
Дан
1
@Dan Проблема будет в том, что сервисы не имеют фиксированного IP-адреса, например, AWS Elastic Load Balancer. Учитывая, core.windows.netя бы заподозрил похожую ситуацию в Azure или что-то в этом роде.
ceejayoz
Но с записями A я должен указать IP-адрес, верно? Я предпочитаю DNS-имена IP-адресам.
Рагурам Мурти П
Почему вы хотите это сделать? хранилище BLOB-объектов Azure уже настроено для обеспечения высокой доступности и географической избыточности.
JTKH
@JTKH, потому что ограничение на загрузку BLOB-объекта составляет 65 МБ / с или около того, и если я хочу увеличить лимит загрузки, я подумал об использовании нескольких BLOB-объектов.
Рагурам Мурти П

Ответы:

58

Наличие нескольких записей CNAME для одного и того же полного доменного имени является нарушением спецификации DNS. Некоторые версии BIND позволят вам сделать это (некоторые только если вы указали multiple-cnames yesопцию) и будут распределять баланс нагрузки между ними, но это технически недопустимо.

Не должно быть записей ресурсов (RR) с тем же именем, что и у CNAME, и, чтобы выбрать nits, которые будут включать несколько идентичных CNAME. Квота RFC 1034, раздел 3.6.2:

Если CNAME RR присутствует на узле, никакие другие данные не должны присутствовать; это гарантирует, что данные для канонического имени и его псевдонимов не могут быть разными. Это правило также гарантирует, что кэшированное CNAME можно использовать без проверки на доверенном сервере других типов RR.

Метод буквы RFC для обработки того, что вы делаете, будет с одним CNAME, ссылающимся на запись «A» со сбалансированной нагрузкой.

Эван Андерсон
источник
См. Docstore.mik.ua/orelly/networking_2ndEd/dns/… для получения более подробной информации.
WEDI
11

Вы не можете. CNAME делает одну запись другим именем для другого. Если запись может иметь CNAMES для двух имен, это не будет другое имя для любого из них, но имя для чего-то совершенно нового, что делает запись CNAME неуместной.

Там, вероятно, хороший способ решить вашу внешнюю проблему, хотя. Например, вы можете иметь несколько записей А.

Дэвид Шварц
источник
Могу ли я иметь одну CName и одну запись для веб-сайта одновременно?
AMESH