我们可以为一个名称设置多个 CNAME 吗?

我们可以为一个名称设置多个 CNAME 吗?

我需要这个来实现负载平衡。例如,我有两个 Azure 存储帐户(例如ab),它们的 Blob 地址是a.blob.core.windows.netb.blob.core.windows.net。它们都存储相同的数据。现在我需要提供一个example.com指向两个存储帐户的外部名称(例如),并且应该在循环中工作。如果我在 DNS 中创建两个 CNAME 条目(如下所示),并且它在循环中解析为其中一个,则可以实现这一点。

  1. example.com别名记录a.blob.core.windows.net
  2. 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 记录。

相关内容