一个名称可以有多个CNAMES吗?


43

我需要这个来进行负载平衡。例如,我有两个azure存储帐户(say ab),而这些blob地址是a.blob.core.windows.netb.blob.core.windows.net。他们两个都存储相同的数据。现在,我需要提供一个外部名称(例如example.com),该名称指向两个存储帐户,并且应该循环使用。如果我按照以下方法在DNS中创建两个CNAME条目,并且将其解析为其中之一,则可以实现此目的。

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

但是我无法在Windows DNS服务器中为单个名称创建两个CNAME记录。

那有可能吗?


我无法检查,但我认为您无法使用CNAMES进行此操作。请尝试使用A记录。
2014年

1
@Dan问题将是没有固定IP的服务,例如AWS Elastic Load Balancer。鉴于core.windows.net我怀疑Azure或类似情况。
ceejayoz 2014年

但是有了A记录,我必须指定IP地址吗?我更喜欢DNS名称而不是IP地址。
Raghuram Murthy P 2014年

你为什么想这么做?已经为高可用性和地理冗余设置了azure blob存储。
JTKH

@JTKH是因为blob的下载限制为65MB / sec左右,如果我想要更多的下载限制,我考虑使用多个blob。
Raghuram Murthy P

Answers:


58

同一完全合格域名的多个CNAME记录违反了DNS规范。某些版本的BIND允许您执行此操作(仅在指定了multiple-cnames yes选项的情况下才可以执行此操作),并在此之间轮流进行负载平衡,但这在技术上不合法。

不应该有与CNAME同名的资源记录(RR),并且要挑剔,它应该包括多个相同的CNAME。Quoth RFC 1034,第3.6.2节:

如果节点上存在CNAME RR,则不应存在其他数据。这样可以确保规范名称及其别名的数据不能不同。该规则还确保无需使用权威服务器检查其他RR类型,就可以使用缓存的CNAME。

用于处理您正在执行的操作的RFC方法将是使用单个CNAME来引用负载平衡的“ A”记录。


有关更多详细信息,请参阅docstore.mik.ua/orelly/networking_2ndEd/dns/…
wedi

11

你不能。CNAME使一条记录成为另一个的另一个名称。如果一条记录可以包含两个名称的CNAMES,那么这两个名称都不是另一个名称,而是一个全新名称的名称,因此CNAME条目不合适。

不过,可能有一种解决外部问题的好方法。例如,您可以有多个A记录。


我可以同时拥有一个网站的CName和一个A记录吗?
amesh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.