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

Можно ли использовать несколько CNAMES для одного имени?

Мне это нужно для балансировки нагрузки. Например, у меня две учетные записи хранения Azure (скажем, a и b) и адреса больших двоичных объектов для них 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.

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

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

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

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

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

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

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