DNS将记录切换到C名称而不影响消费者

时间:2016-12-22 06:13:36

标签: dns ttl

假设我们有一个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系统在这种情况下的表现,那将会很不错。谢谢。

1 个答案:

答案 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值,但这是完全不同的事情。