是否可以将我的域的 TTL 设置为非常低的值(几分钟),以便如果我的主主机长时间停机,我可以更新主主机中的 DNS 记录以指向我的辅助主机的 IP,从而在 DNS 传播完成后将新访问者定向到我的辅助主机的服务器?或者这根本不可能,甚至可能很愚蠢?我只是试图找出一种廉价的方法来防止停机。
如果可能的话,TTL 多低才算太低?
答案1
低 TTL 只能起到有限的作用,因为有些 DNS 解析器不接受低于某些完全任意级别的 TTL。即使您将 TTL 设置为 5 分钟,更改仍可能需要长达 48 小时才能从互联网上的 DNS 缓存中完全清除。使这个问题更加严重的是,恶意软件作者使用这种技巧来更改其命令和控制服务器的保存位置(这称为“快速通量 DNS”关联),因此针对此问题的对策是不遵守低于某个级别的 TTL。
这是可能的,并且按照标准它应该是完全可行的,但它并不可靠。
答案2
如果您的主机非常不可靠,以至于您正试图找到绕过它们的方法,我建议您寻找新的主机。话虽如此,您可以使用较低的 TTL 来使更改更快地完成,但正如已经提到的,有许多解析器会施加最低 TTL,并且如果低于其内部最低值,则会覆盖您设置的 TTL。
低 TTL 的另一个问题是,如果您的所有 DNS 服务器都发生故障(或者解析器无论如何都无法访问其中至少一个),则较低的 TTL 将导致您的网站比正常情况下更快地消失。它还会比较高的 TTL 引发更多的查询,在某些情况下,由于必须不断刷新 DNS 信息,您的网站会感觉比正常情况下慢。可以通过将 TTL 设置为高于您网站的平均会话长度来缓解这种情况。
20-30 分钟的 TTL 并不是不合理的,但在生产环境中,我不会少于一小时,除非计划进行某些已知的待定更改,而这需要暂时降低值。
答案3
[我正在删除提到的某些商业服务] 的客户采用了您描述的确切故障转移方案。
不同之处在于系统是完全自动化的。它会监控您的服务器并即时修改 DNS 记录。它的反应速度比管理员获取页面、爬下床、放上咖啡壶并手动更改记录要快得多。它还不受“刚醒来,手忙脚乱地修改记录”的影响 :D
在现实生活中的观察中,当前客户端的行为是它们确实会很快淹没实时服务器。
尽管可能会存在一些干扰,但如果唯一的其他选择是完全关闭,那么对于绝大多数客户来说,这是一个相当不错的选择。
上述 48 小时对于预期用途而言并不存在。这是 DNS 传播时间,与在注册商级别更改注册的名称服务器有关。这与在未更改的名称服务器上更改记录不同。