【问题标题】:Using Route53 to update DNS with boto. Should I use A name or CNAME and what TTL to use使用 Route53 通过 boto 更新 DNS。我应该使用名称还是 CNAME 以及使用什么 TTL
【发布时间】:2012-03-31 04:51:51
【问题描述】:

背景。我正在使用 boto 和 route53 和 aws 来更新私有 IP 地址的域 subsomanin 名称。我将 redis 主服务器和从服务器分配给域,例如

master.test.com private ip 111.111.111.111
slave.test.com  private ip 222.222.222.222

如果主服务器或从服务器出现故障,我的逻辑将启动一台新机器并为该新机器分配主域或从属子域。

我需要确保 dns 在可以控制的范围内尽可能快地传播。我不是 DNS 专家。 TTL 为 60。

到目前为止,我使用的是 A 记录。在boto它看起来像这样

change = changes.add_change("CREATE","slave.test.com", "A", 60)
change.add_value("222.222.222.222")

我还可以使用私有 DNS 的 CNAME,例如

    change = changes.add_change("CREATE",slave.test.com, "CNAME", 60)
    change.add_value("ec2_internal_dns")

所以,我的问题是这样的。我设置哪一个有关系吗? cname 还是 A 记录?我假设只能设置一个。什么是最佳 ttl?我还缺少什么?

为什么不一样?同样,这不适用于公共网站,所以我假设缓存问题。

【问题讨论】:

    标签: python amazon-web-services dns


    【解决方案1】:

    假设master.test.com 集群的两个成员分别是1.1.1.11.1.1.2,并且每个成员的A 记录也设置为numberone.test.comnumbertwo.test.com。如果我理解正确,您是在问是否应该:

    1. master.test.com作为A记录指向1.1.1.1,如果第一台服务器出现故障,则将其切换为1.1.1.2
    2. master.test.com 作为 CNAME 记录指向 numberone.test.com 并在第一台服务器出现故障时将其切换为 numbertwo.test.com

    在功能上它们是等价的。请注意,master.test.com 本身的 TTL 应该很短,但 numberonenumbertwo A 记录可以有更长的 TTL,因为这些 IP 地址永远不会改变。

    就性能而言,使用 A 记录有轻微的优势。假设服务器 1 刚刚关闭,而您已切换到服务器 2。使用 CNAME 记录,您使用的递归 DNS 服务器的缓存中可能没有 numbertwo.test.com,因此需要额外查找。这可能需要几十毫秒,如果 master.test.com 只是一条 A 记录,您可以保存。

    另一方面,与仅仅因为master.test.com 上的 TTL 而导致的长达 60 秒的停机时间相比,几十毫秒的停机时间非常少。

    如果您控制系统的各个方面,包括客户端和服务器,您还可以考虑使用其他解决方案来传播有关使用哪个 redis 服务器的信息,例如使用Apache ZooKeeper 或更简单的doozerd,它声称提供服务器宕机的即时通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多