gpt4 book ai didi

python - 使用 Route53 通过 boto 更新 DNS。我应该使用名称还是 CNAME 以及要使用的 TTL

转载 作者:太空宇宙 更新时间:2023-11-03 19:21:11 25 4
gpt4 key购买 nike

背景。我正在使用 boto、route53 和 aws 来更新私有(private) 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")

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

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

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

为什么有区别?同样,这不是针对公共(public)网站的,因此我假设存在缓存问题。

最佳答案

假设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 记录有轻微优势。假设服务器一刚刚宕机,您已切换到服务器二。对于 CNAME 记录,您使用的递归 DNS 服务器的缓存中可能没有 numbertwo.test.com,因此需要进行额外的查找。这可能需要数十毫秒,如果 master.test.com 只是一条 A 记录,则可以节省时间。

另一方面,与仅由于 master.test.com 上的 TTL 可能导致的长达 60 秒的停机时间相比,几十毫秒是微不足道的。

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

关于python - 使用 Route53 通过 boto 更新 DNS。我应该使用名称还是 CNAME 以及要使用的 TTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9706883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com