web-dev-qa-db-fra.com

Pouvons-nous avoir plusieurs CNAMES pour un seul nom?

J'en ai besoin pour l'équilibrage de charge. Par exemple, j'ai deux comptes de stockage Azure (disons a et b) et les adresses d'objets blob pour ceux-ci sont a.blob.core.windows.net et b.blob.core.windows.net. Les deux stockent des données identiques. Maintenant, je dois fournir un nom externe unique (disons example.com) qui pointe vers les deux comptes de stockage et devrait fonctionner en round robin. Cela peut être réalisé si je crée deux entrées CNAME dans DNS comme suit et qu'il se résout en l'une d'entre elles en tournage circulaire.

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

Mais je ne peux pas créer deux enregistrements CNAME pour un seul nom dans le serveur DNS Windows.

Est-ce que c'est jamais possible?

44
Raghuram Murthy P

Plusieurs enregistrements CNAME pour le même nom de domaine complet constituent une violation des spécifications DNS. Certaines versions de BIND vous permettent de le faire (certaines uniquement si vous avez spécifié le multiple-cnames yes option) et équilibrerait la charge entre les deux, mais ce n'est pas techniquement légal.

Il n'est pas censé y avoir d'enregistrements de ressources (RR) avec le même nom qu'un CNAME et, pour choisir des lentes, cela inclurait plusieurs CNAME identiques. Quoth RFC 1034, section 3.6.2:

Si un CNAME RR est présent sur un nœud, aucune autre donnée ne doit être présente; cela garantit que les données d'un nom canonique et de ses alias ne peuvent pas être différentes. Cette règle garantit également qu'un CNAME mis en cache peut être utilisé sans vérifier auprès d'un serveur faisant autorité pour d'autres types de RR.

La lettre de la méthode RFC pour gérer ce que vous faites serait avec un seul CNAME se référant à un enregistrement "A" à charge équilibrée.

60
Evan Anderson

Vous ne pouvez pas. Un CNAME fait enregistrer un autre nom pour un autre. Si un enregistrement pouvait avoir CNAMES pour deux noms, ce ne serait pas un autre nom pour l'un ou l'autre, mais un nom pour quelque chose de complètement nouveau, rendant une entrée CNAME inappropriée.

Il existe cependant probablement un bon moyen de résoudre votre problème extérieur. Par exemple, vous pouvez avoir plusieurs enregistrements A.

12
David Schwartz