假设我们有一个A REC,它指向我们LB的IP x,用于我们的一项服务。它的TTL为3600s。但是......本来应该是一个C NAME指向VIP的A REC。它已经投入生产,大约有10项服务称为新的A REC,包括约100台机器。如果删除A REC并创建一个具有相同名称的新C NAME并指向新的A REC,消费者是否会注意到此更改?呼叫者是否有可能超时?
我认为机器的数量肯定会受到影响。如果我将TTL设置为5小时会有更好的机会没有人注意到吗?
所以我的问题是,如果没有我们服务的消费者注意,如何将A REC替换为C NAME?
如果记录仅供网络内部使用而公众可以使用,这是否重要?
我问,因为我们需要尽快在数据中心之间进行负载平衡,并且我们有一些记录指向IP。
如果能够解释DNS系统在这种情况下的表现,那将会很不错。谢谢。
答案 0 :(得分:2)
假设您的名称foo.example.org
除了A
记录之外什么都没有,其中包含IPv4地址192.0.2.1
和3600秒的TTL。查找foo.example.org
的任何人都会获得A
条记录,并在它们离开前一小时记住它并向您的名称服务器询问更新的信息。
然后假设您更改内容,以便foo.example.org
的{{1}}记录指向CNAME
,而bar.example.net
记录的地址为A
192.0.2.1
。第一次查找名称foo.example.org
的任何人都会获得CNAME
,然后继续查找bar.example.net
,并从那里获取A
记录。
唯一的复杂情况是,在您更改为foo.example.org
链之前的3600秒内查找CNAME
的任何人生效后都会记住直接查找,因此在查看之前不会看到新信息TTL到期。因此,在您进行更改后长达一个小时,有些人可能仍会看到旧信息。因此,为了使更改对用户透明,请确保在进行更改后旧信息(旧IP地址)仍然可以工作至少一个完整的TTL时间。
从A
更改为CNAME
,这绝不是特别的。无论您更改什么,都会有一个完整的TTL期间,在此期间客户可以合法地获取旧信息。这就是DNS的运作方式。
当然,最重要的是,有些客户端和缓存服务器没有像他们应该那样关注TTL值,但这是完全不同的事情。