【问题标题】:Weighted round robin dns between 2 Cloudfront distributions2 个 Cloudfront 发行版之间的加权轮询 dns
【发布时间】:2015-08-13 23:12:36
【问题描述】:

我们正在尝试使用 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 存储桶中,我们为每个存储桶放置了一个带有 CF 对应域名的文件:

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

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

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

希望这已经足够清楚了。

【问题讨论】:

  • 您是否对真实流量进行测试?或者只是从单机查询?如果是后者,可能是 DNS 缓存。
  • ...特别是浏览器的 DNS 缓存。使用系统解析器的浏览器看不到 TTL,并且会无限期地保持 DNS 响应(通常直到所有浏览器窗口都关闭)。

标签: amazon-web-services amazon-s3 amazon-cloudfront amazon-route53


【解决方案1】:

不幸的是,您尝试做的事情是不可能的。 CloudFront 或任何与此相关的 HTTP 服务器只能看到 test.example.com 的主机标头。它不知道您是如何到达那里的,无论是 WRR DNS 还是主机文件,它只看到主机标头。我不确定您如何在两个 CloudFront 分配上配置相同的 CNAME,这应该是不可能的。

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

【讨论】:

  • 得到 AWS CF 支持团队的确认,谢谢@imperalix
【解决方案2】:

不要忘记所有 DNS 解析器都会缓存您的 DNS 记录。那么您的负载分担几乎没有机会反映您配置的权重。 DNS 不是为此而设计的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2016-01-09
    • 2020-02-12
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多