Amazon Route 53 DNS 的最佳实践 - Amazon Route 53
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Route 53 DNS 的最佳实践

使用 Amazon Route 53 DNS 服务时,请遵循以下最佳实践来获得最佳结果。

使用数据层面功能进行 DNS 故障转移和应用恢复

Route 53 的数据层面(包括运行状况检查和 Amazon Route 53 Application Recovery Controller 路由控制)在全球范围内分布,旨在于存在严重事件时依然能够实现 100% 的可用性和功能性。它们彼此集成,不依赖于控制面板的功能。虽然这些服务(包括其控制台)的控制面板通常非常可靠,但它们的设计方式更集中,且会优先考虑持久性和一致性,而不是高可用性。对于灾难恢复期间的失效转移等方案,我们建议您使用 Route 53 运行状况检查和 Route 53 ARC 路由控制之类的功能,这些功能将依赖数据面板功能来更新 DNS。有关更多信息,请参阅控制和数据层面概念博客:使用 Amazon Route 53 创建灾难恢复机制

为 DNS 记录选择 TTL 值

DNS TTL 是数字值(以秒为单位),DNS 解析器用于决定在不对 Route 53 进行另一次查询的情况下,记录可以缓存的时长。必须为所有 DNS 记录指定 TTL。TTL 值的推荐范围为 60 到 172,800 秒。

选择 TTL 就是在延迟和可靠性以及对变化的响应能力之间进行权衡。如果记录中的 TTL 较短,DNS 解析器将更快地注意到记录的更新,因为其必须更频繁地进行查询。这会增加查询量(和成本)。随着 TTL 不断延长,DNS 解析器会更频繁地应答缓存中的查询,这样的操作通常更快、更便宜,且在某些情况下更可靠,因为它避免了在互联网上开展的查询。没有所谓正确的选择,但您可以考虑是响应性还是可靠性对您而言更重要。

设置 TTL 值时要考虑的事项包括:

  • 将 DNS 记录 TTL 设置为您可以等待更改生效的时间长度。对于委派(NS 记录集)或其他很少更改的记录(例如 MX 记录)而言,情况尤其如此。对于这些记录,建议使用更长的 TTL。1 小时(3600 秒)和 1 天(86,400 秒)之间的值是较为常见的选择。

  • 对于需要作为快速故障转移机制的一部分进行更改的记录(尤其是运行状况检查的记录),更适合选择较低的 TTL。对于这种情况,将 TTL 设置为 60 秒或 120 秒是常见的选择。

  • 如果您需要更改关键 DNS 条目,我们建议您临时缩短 TTL。如果需要,您随后可以快速进行更改、观察和回滚。在更改完成并按预期工作后,您可以增加 TTL。

有关更多信息,请参阅 TTL(秒)

CNAME 记录

DNS CNAME 记录是一种将一个域名指向另一个域名的方法。如果 DNS 解析器解析了 domain-1.example.com 并找到指向 domain-2.example.com 的别名记录,则 DNS 解析器必须继续解析 domain-2.example.com,然后才能响应。这些记录适用于许多情况,例如当网站拥有多个域名时确保一致性。

但是,DNS 解析器必须进行更多查询才能应答别名记录,这会增加延迟和成本。在可能的情况下,使用 Route 53 别名记录是一种速度更快、价格更低的替代方案。别名记录允许 Route 53 对 Amazon 资源(例如负载均衡器)和同一托管区域内的其他域直接做出响应。

有关更多信息,请参阅将 Internet 流量路由到您的 Amazon 资源

高级 DNS 路由
  • 使用地理位置、地理邻近或基于延迟的路由时,请始终设置默认值,除非您希望某些客户端接收没有应答的响应。

  • 为了尽量减少应用程序延迟,请使用基于延迟的路由。这种类型的路由数据可能会经常更改。

  • 要确保路由稳定性和可预测性,请使用地理位置或地理邻近路由。

有关更多信息,请参阅 地理位置路由邻近地理路由基于延迟的路由

DNS 更改传播

当您使用 Route 53 控制台或 API 创建或更新记录或托管区域时,更改需要一段时间才能在互联网上反映出来。这被称为更改传播。尽管在全球范围内的传播通常不到一分钟,但偶尔会出现延迟,例如由于同步到一个位置的问题,或者在极少数情况下由于中央控制面板内出现问题。如果您正在构建自动配置工作流程,并且必须等待变更传播完成后再继续下一个工作流程步骤,请使用 GetChangeAPI 验证您的 DNS 更改是否已生效(Status =INSYNC)。

DNS 委派

当您在 DNS 中委派多个级别的子域时,始终从父区域委派非常重要。例如,如果您正在委派 www.dept.example.com,则应该从 dept.example.com 区域执行,而不是从 example.com 区域执行。从祖父区域到区域的委派可能根本无法正常工作,也可能仅以不一致的方式工作。有关更多信息,请参阅路由子域的流量

DNS 响应的大小

避免创建大型单个响应。如果响应大于 512 字节,则许多 DNS 解析器必须通过 TCP 而不是 UDP 重试,这会降低可靠性并导致响应速度变慢。我们建议使用多值应答路由,它将选择 8 个运行正常的随机 IP 来将响应保持在 512 字节边界内。

有关更多信息,请参阅 多值应答路由DNS 回包大小测试服务器