我将 TTL 从 24 小时更改为 5 分钟。我是否需要等待 24 小时才能更改记录?

wob*_*col 37 domain-name-system ttl rackspace

我正在从 Rackspace ta 专用服务器上的云服务器迁移我们的应用程序。

我想关闭应用程序约 5 分钟以将数据从云服务器复制到专用服务器,因此我不希望在复制数据后请求转到旧服务器。

我想将我们的 DNS 记录指向新服务器,但 TTL 设置为 24 小时。我已将其更改为 300 秒。我是否需要等待 24 小时才能更新域指向的 IP/复制数据?

Jef*_*den 58

任何拥有域记录缓存副本的人都不会在 24 小时内更新它,所以是的,如果您的意图是最多有 5 分钟的不可用窗口,您应该等到所有未完成的缓存都更新不再存在超过 5 分钟。

  • ...它持续了 24 小时`自从他们上次缓存它`。这可以是 1 到 86399 秒之间的任何值。 (23认同)
  • @Iain 我曾经为 Akamai 工作,这是一个 CDN,它大量使用短 TTL(如 60 秒)进行负载平衡。我记得我们做了一项研究,发现大多数 ISP 确实遵守我们的 TTL。 (14认同)
  • @Iain您必须假设最坏的情况,因为他们中的任何一个或全部都可以在更改之前缓存它。 (7认同)
  • @Barmar 不要假设任何事情。许多 ISP 只是简单地忽略 TTL。 (7认同)
  • 我在一家网络托管公司工作,我们的经验是低 TTL 比高 TTL 更容易被忽略。 (2认同)

Gor*_*son 39

它(可能)比这更糟糕——您必须在所有权威服务器更新后等待 24 小时。发生更新的正常方式是对主服务器上的区域进行更改,然后每个辅助服务器在下次碰巧与主服务器签入时传输新的区域数据。签入频率由区域的 SOA 记录中的刷新间隔控制。因此,在最坏的情况下,您必须等待区域的刷新间隔 + 记录的 TTL。

您可能需要等待这么长时间才能看到实际的记录更改。如果辅助节点每 6 小时刷新一次,那么 5 分钟的 TTL 不会有多大用处。因此,您可能希望在希望能够进行快速更改的时间段内减少区域的刷新间隔。

请注意,这可能不适用于您的设置。如果您有一个系统将所有权威服务器一起更新,这不是问题(而且我不熟悉 Rackspace 的 DNS 设置)。但我建议在开始 24 小时倒计时之前单独查询所有权威服务器 ( dig server.example.com @secondaryserver.example.com) 以确保它们具有新的 TTL。

  • 您似乎忽略了 DNS 通知协议,该协议告诉从服务器在主服务器更新后不久刷新。大多数 DNS 服务器都使用此功能。 (4认同)

Sve*_*ven 23

是的,你应该等待。即便如此,当然也不能保证每个人都会尊重 TTL。

  • 另一种选择是将旧服务器配置为新服务器的反向代理。然后,您可以在切换后将其保留一周左右,并在没有流量通过时将其关闭。 (8认同)
  • +1 因为不是每个人都遵守 TTL,我已经看到在更改 DNS 后一周内出现了落后者。我过去处理它的一种方法是在新站点上设置一个新的唯一名称作为别名,并使用旧站点的重定向将用户从旧域重定向到新域,例如来自 _www.mycompany .com_ -> _newsite.mycompany.com_ (6认同)

Pet*_*een 5

将各种评论和答案汇总在一起,完整的程序将类似于。

  1. 确保您可以及时更新您的权威服务器。
  2. 降低TTL。
  3. 检查所有权威服务器都有新的 ttl。
  4. 等待旧 TTL,以便(大部分)从缓存中消除旧 TTL 的缓存值(您无法保证它们将从每个缓存中消失,因为某些缓存可能会忽略标准)。
  5. 将旧服务器上的站点置于只读模式(或者如果您不能这样做,请将其替换为“我们正在维护”页面)。
  6. 执行从旧服务器到新服务器的最终复制(导致新服务器上的只读站点)。
  7. 更改 DNS 记录。
  8. 确保所有权威服务器都有新的 DNS 记录。
  9. 等待新的 ttl(如果您不关心某些用户能够为站点做出贡献而其他用户看不到这些贡献的结果,则可以跳过此步骤)。
  10. 将新服务器上的站点置于读/写模式。
  11. 在旧服务器上放置一个通知,指出它是一个过时的只读副本,并且用户可能已经破坏了 DNS。
  12. 等待记录从不合规的 DNS 缓存中删除。
  13. 停用旧服务器。


小智 5

除了其他答案之外,您还可以使用https://www.whatsmydns.net/来检查您的 DNS 记录是如何几乎实时传播的。 在此处输入图片说明