我需要这个来实现负载平衡。例如,我有两个 Azure 存储帐户(例如a
和b
),它们的 Blob 地址是a.blob.core.windows.net
和b.blob.core.windows.net
。它们都存储相同的数据。现在我需要提供一个example.com
指向两个存储帐户的外部名称(例如),并且应该在循环中工作。如果我在 DNS 中创建两个 CNAME 条目(如下所示),并且它在循环中解析为其中一个,则可以实现这一点。
example.com
别名记录a.blob.core.windows.net
example.com
别名记录b.blob.core.windows.net
但是我无法在 Windows DNS 服务器中为单个名称创建两个 CNAME 记录。
那么这可能吗?
答案1
同一完全限定域名的多个 CNAME 记录违反了 DNS 规范。某些版本的 BIND 允许您这样做(某些版本仅在您指定该multiple-cnames yes
选项时才允许),并且会在它们之间进行循环负载平衡,但这在技术上是不合法的。
不应存在与 CNAME 同名的资源记录 (RR),而且,挑剔一点,应该包括多个相同的 CNAME。引自 RFC 1034,第 3.6.2 节:
如果节点上存在 CNAME RR,则不应存在其他数据;这确保了规范名称及其别名的数据不会不同。此规则还确保可以使用缓存的 CNAME,而无需与权威服务器核实其他 RR 类型。
处理您正在做的事情的 RFC 方法的字母是使用引用负载平衡的“A”记录的单个 CNAME。
答案2
不能。CNAME 会将一条记录变为另一条记录的另一个名称。如果一条记录可以有两个名称的 CNAME,那么它不会是其中任何一个的另一个名称,而是某个全新名称的名称,因此 CNAME 条目不合适。
不过,可能有一个好方法可以解决您的外部问题。例如,您可以拥有多个 A 记录。