DNS 作为在服务器之间切换的机制有多可靠?使用低 TTL,测试似乎很棒,但我想知道这对于公共生产系统有多可靠?
我对这种策略的担忧是我不确定 DNS 记录缓存是否可以被 DNS 代理覆盖,并且一些提供商可能会使用它来节省流量。如果我们使用与其他系统的集成(例如移动网络服务)会怎样?
虽然我了解符合 RFC 的 DNS 是如何工作的,但我实际上并不确定投诉网络的一般情况。(并且 DNS rr 也适用于分发,但这专门用于切换)。
对于大多数观众来说,它“足够可靠”。
是的,如果您将其设置得太低,递归 DNS 解析器确实允许管理不服从您的 TTL(例如cache-min-ttl)。此外,还有一些软件堆栈会在其默认配置中永久缓存记录(Java < 1.6)。
即使在切换很久之后,您也应该始终为旧主机的一些剩余流量做好准备。不过,根据我的经验,它们大多是写得很糟糕的爬虫。如果您想 100% 确定不会丢失任何流量,请将旧主机的所有流量代理到新主机。Nginx/Apache 可以很容易地做到这一点。
您可以查询递归服务器以获取它将缓存记录的剩余 TTL。重复输入,您会看到 TTL 随时间减少:
dig @208.67.222.222 stackoverflow.com
记录过期后,它应该从您在区域中配置的 TTL 开始。
这样,您至少可以针对公共解析器对其进行测试,以查看它是否遵守您的 TTL。