2 个 Cloudfront 分布之间的加权循环 dns

Weighted round robin dns between 2 Cloudfront distributions

我们正在尝试使用 aws 对我们的 javascript 代码进行一些渐进部署测试,但它似乎让我们失望了

我们创建了 2 个具有 CF 分布的 S3 存储桶:

a.example.net -> aaa.cloudfront.net

b.example.net -> bbb.cloudfront.net

我们在 route53 中创建了一个加权循环 DNS 条目

test.example.net -> (cname) -> aaa.cloudfront.net (5)

test.example.net -> (cname) -> bbb.cloudfront.net (95)

在S3 bucket中我们为每个bucket放了一个CF对应域名的文件:

http://test.example.net/dns-test/test.txt

我期望的是获得 95% 的时间 bbb 和 5% 的时间 d3nrwpaeicu4xy。我们实际得到的是 100% 的时间 :(

我向 route53 团队开了一张票,以检查这是否是 dns 配置的问题,但他们已经向我展示了,而且我自己也看到 dns 查询在 2 个存储桶之间分开。

希望这已经够清楚了。

很遗憾,您无法执行您的操作。 CloudFront 或与此相关的任何 HTTP 服务器,只能看到 test.example.com 的主机 header。它不知道您是如何到达那里的,无论是 WRR DNS 还是主机文件,它只看到主机 header。我不确定您如何在两个 CloudFront 发行版上配置相同的 CNAME,这应该是不可能的。

为此,您需要使用两种不同的服务,例如 S3 和 CloudFront。为 test.example.net 创建存储桶和配置 test.example.net 的 CloudFront 分配。然后您可以 WRR,因为这两种服务都将为 test.example.net

提供您的内容

不要忘记您的 DNS 记录将被所有 DNS 解析器缓存。那么您的负载分配就很少有机会反映您配置的权重。 DNS 不是为此设计的