大多数网络服务依赖于 DNS 将名称解析为 IP 地址及其他信息。 提供高可用且可扩展的递归 DNS解析、,以及具有健康检查功能和各种路由能力的权威 DNS 托管区。使用 Amazon Route53,您可以以高效和可靠的方式扩展网络服务,利用 Amazon Web Services(AWS)的全球基础设施。
自2006年推出首个服务 Amazon Simple Queue Service (SQS) 以来,我们已经推出了数百种服务,而它们的共同点在于都需要使用 DNS。多年来,我们在管理高可扩展性和高可靠性网络服务的 DNS方面积累了许多最佳实践。这些最佳实践结合了我们在文档、博客、视频和演示中发布的内容,以及我们使用 Route 53 进行 DNS 管理的大量经验。
域名系统(DNS)是互联网的“电话簿”。应用程序、浏览器和用户通过域名(如 amazon.co.uk 或 amazon.com)在线访问信息。Web浏览器通过互联网协议(IP)地址进行交互,而 DNS 则将域名转换为 IP 地址,使浏览器能够加载互联网资源并使应用程序彼此通信。
较为复杂,涉及多个名称服务器,如 RFC 1035所描述。为了使域名易于访问和管理,DNS 管理员通常将域名结构划分为多个较小的名称,称为子域。以下图示展示了 DNS 树状结构:

当一个浏览器或应用程序尝试连接到一个域名时,背后会发生多个步骤,使网站或应用能够连接到服务器。下面的图示概述了 DNS 查询过程中所经历的步骤:

将 sub.example.com 记录放在两个托管区中会造成模糊性。当 DNS 解析器解析如 api.sub.example.com的记录时,解析器会根据其缓存的 NS(名称服务器)记录的状态,直接查询 sub.example.com 名称服务器或查询 example.com名称服务器:
为确保一致性,请在 sub.example.com 区域中创建所有 sub.example.com 记录,并在 example.com 托管区中创建 NS记录,将责任委派给 sub.example.com 托管区,然后从 example.com 区域删除所有 sub.example.com记录。这样可以确保解析器始终从 sub.example.com 托管区获取答案,并始终解决 DNS 查询的含糊性。
DNS 使用缓存来提高性能并减少递归树上每个部分的负载。为了使 DNS管理员能够管理该缓存,每条记录都有一个时间到期值(TTL)以及在权威启动(SOA)记录中指定的 TTL,用于负面答案(如 NXDOMAIN等)的缓存。并非所有解析器或客户端都可能遵循 TTL,大多数会遵循,因此选择适合您工作负载的 TTL 值非常重要。我们建议将负缓存TTL设置为 900秒,这是在 Route 53 中创建托管区时的默认值。
为单独记录选择 TTL 是一个权衡决策,涉及多个因素。首要考虑因素是您更改的频率。对于 NS 记录,这些记录不经常更改,因此您可以保持较长的 TTL,例如默认的 172,800 秒(2 天),以减少来自客户端的查询成本并提高性能。其他指向生产端点的记录,您可能希望保持在 60 秒到 300 秒(5分钟)之间。TTL越低,您可以将客户端快速重定向到不同的端点。但这会导致解析器生成更多查询,从而可能导致客户端访问应用程序的延迟增加。值得注意的是,客户端通常仅在初始化会话时执行 DNS 请求。因此,如果您有一个长期存在的 TCP 会话处于活动状态或具有扩展的超时期,即使您更新了 DNS 记录、故障转移或加权处理并且 TTL已过期,您可能也不会看到该客户端迁移到不同的端点。
借助 Amazon Route 53,您可以以可扩展和可靠的方式注册、托管和解析您的域名。本文回顾了您可以使用的最佳实践,从而进一步提高您在 Route53 上的体验。请审查您现有的域名,如还未迁移至 Route 53,请考虑进行迁移,并采纳这里描述的最佳实践。
 Scott 是 AWS 的高级解决方案架构师,专注于网络领域,帮助客户设计坚韧且经济高效的网络架构。业余时间,Scott喜欢编程以解决独特问题。闲暇时,他常常在拉斯维加斯外的沙漠中越野或偶尔参加扑克比赛。
 Renato 是位于爱尔兰的高级技术客户经理,精通 Route 53。他拥有 AWS 网络专职认证,并与全球不同客户在大规模 Route 53 和可恢复性场景中工作。在业余时间,Renato 喜欢与孩子们玩 Uno、观看电影或弹奏贝斯吉他。
Leave a Reply