[AWS] 7. AWS Route 53,DNS(Domain Name System),路由策略
发布: (2026年1月15日 GMT+8 11:21)
13 min read
原文: Dev.to
Source: Dev.to
什么是 DNS?
- 域名系统 – 将人类友好的主机名转换为机器 IP 地址。
www.google.com → 172.217.18.36 - 互联网的骨干。
- 使用 层次化命名结构(例如
.com、example.com、www.example.com、api.example.com)。 - 域名注册商 – 销售域名的服务(例如 Amazon Route 53、GoDaddy)。
- DNS 记录 – A、AAAA、CNAME、NS,…
- 区域文件 – 包含域的 DNS 记录。
- 名称服务器 – 解析 DNS 查询(权威或非权威)。
- 顶级域 (TLD) –
.com、.us、.in、.gov、.org,… - 二级域 (SLD) –
amazon.com、google.com,…
Amazon Route 53 概述
- 高度可用、可扩展、全托管、权威的 DNS 服务。
- 权威 — 您(客户)可以更新 DNS 记录。
- 同时充当 域名注册商。
- 可以 检查 您资源的 健康状态。
- 唯一的 AWS 服务 提供 100 % 可用性 SLA。
- “53” 这一名称来源于传统的 DNS 端口(53/TCP)。
为域名路由流量
Each DNS record contains:
| 字段 | 描述 |
|---|---|
| 域名/子域名 | e.g., example.com |
| 记录类型 | e.g., A, AAAA, CNAME |
| 值 | e.g., 12.34.56.78 |
| 路由策略 | How Route 53 responds to queries |
| TTL | Time‑to‑live (how long the record is cached by resolvers) |
Route 53 支持的 DNS 记录类型
| 类别 | 记录类型 |
|---|---|
| 必知 | A, AAAA, CNAME, NS |
| 高级 | CAA, DS, MX, NAPTR, PTR, SOA, TXT, SPF, SRV |
- A – 将主机名映射到 IPv4 地址。
- AAAA – 将主机名映射到 IPv6 地址。
- CNAME – 将主机名映射到另一个主机名。
- 目标必须拥有
A或AAAA记录。 - 不能在区域根(zone apex)使用(例如,您不能为
example.com创建 CNAME,但可以为www.example.com创建)。
- 目标必须拥有
名称服务器 (NS) 记录
- 为托管区域定义权威名称服务器。
托管区域
| 类型 | 描述 | 示例 |
|---|---|---|
| 公共托管区域 | 在互联网上路由流量的记录(公共域名)。 | application1.mypublicdomain.com |
| 私有托管区域 | 在 一个或多个 VPC 内路由流量的记录(私有域名)。 | application1.company.internal |
- 费用: 每个托管区域每月 $0.50。
TTL(Time‑to‑Live)
| TTL 设置 | 影响 |
|---|---|
| 高 TTL(例如,24 h) | 对 Route 53 的查询次数更少,但记录可能会更长时间保持过时。 |
| 低 TTL(例如,60 s) | 查询次数更多(成本更高),但更改传播更快。 |
注意: 除 Alias 记录外,TTL 对每个 DNS 记录都是必需的。
CNAME 与 Alias 记录
| 功能 | CNAME | Alias |
|---|---|---|
| 指向 | 任意主机名 | AWS 资源(ELB、CloudFront 等) |
| 根域名(区域顶点)支持 | ❌ 不允许 | ✅ 允许 |
| 费用 | 标准 DNS 查询费用 | 免费(无额外费用) |
| 健康检查 | 无原生健康检查 | 集成健康检查 |
| TTL | 用户自定义 | 未设置(由 Route 53 管理) |
| 记录类型 | CNAME | 内部存储为 A/AAAA(针对该 AWS 资源) |
| 支持的资源 | 任意主机名 | ELB、CloudFront、API Gateway、Elastic Beanstalk、S3 静态网站、VPC 接口端点、Global Accelerator、同一区域内的另一个 Route 53 记录 |
| 不可别名 | — | EC2 公共 DNS 名称(例如 ec2-xx-xx-xx-xx.compute-1.amazonaws.com) |
示例 – 将 AWS 负载均衡器映射到友好名称:
myapp.mydomain.com → lb-1234.us-east-2.elb.amazonaws.com (Alias)
路由策略(Route 53 对 DNS 查询的响应方式)
重要提示: DNS 路由 并不等同 于负载均衡器执行的流量路由。DNS 只返回 IP 地址或别名;随后客户端会联系返回的终端节点。
| 策略 | 描述 | 关键点 |
|---|---|---|
| Simple | 返回单个值(如果存在多个则随机返回其中一个)。 | 无健康检查;使用别名时只能指向一个 AWS 资源。 |
| Weighted | 根据分配的权重分配流量。 | 所有记录必须共享相同的名称和类型;可以进行健康检查;权重为 0 时会禁用该记录。 |
| Latency‑based | 返回对请求者延迟最低的终端节点。 | 使用客户端位置与 AWS 区域之间的延迟测量;可以进行健康检查(故障转移)。 |
| Failover (Active‑Passive) | 将流量路由到主资源;如果主资源故障则切换到次要资源。 | 需要健康检查。 |
| Geolocation | 根据请求者的地理位置返回不同的记录。 | 适用于合规性或区域内容分发。 |
| Geoproximity (Traffic Flow) | 基于地理距离进行路由,可选偏置。 | 通过 Route 53 Traffic Flow 配置。 |
| Multi‑Value Answer | 返回最多八条健康记录,客户端自行选择。 | 内置健康检查,无需单独的健康检查。 |
健康检查
- 目的: 监控端点(应用程序、服务器、AWS 资源)的健康状态,并实现自动 DNS 故障转移。
- 健康检查类型:
- 端点健康检查 – HTTP、HTTPS 或 TCP 探测。
- 计算健康检查 – 合并多个健康检查的结果。
- 基于 CloudWatch 的健康检查 – 使用 CloudWatch 警报(例如 DynamoDB 限流、RDS 警报、自定义指标)。
核心设置
| 设置 | 默认 / 常见值 |
|---|---|
| 健康/不健康阈值 | 3 |
| 间隔 | 30 秒(在更高成本下可降低至 10 秒) |
| 支持的协议 | HTTP、HTTPS、TCP |
| 成功标准 | ≥ 18 % 的全局健康检查器报告 healthy,端点才被视为健康。 |
| 视为健康的状态码 | 2xx 和 3xx 响应。 |
| 基于内容的检查 | 可选 – 根据响应前 5 120 字节内的文本进行通过/失败判定。 |
| 全局健康检查器 | 大约 15 个分布在全球的地点。 |
健康检查集成
- 健康检查可以通过 加权、基于延迟、故障转移 和 多值答案 策略附加到记录。
- HTTP 健康检查仅适用于 公共 资源。
- 私有资源 可以通过 计算 或 基于 CloudWatch 的 健康检查进行监控。
提示: 确保防火墙或安全组允许来自 Route 53 健康检查 IP 范围的入站流量。
快速参考速查表
| 概念 | 关键要点 |
|---|---|
| DNS | 将名称 → IP;层级结构(TLD → SLD → 子域)。 |
| Route 53 | 托管的权威 DNS,具备健康检查和 100 % SLA。 |
| Record Types | A/AAAA(IP),CNAME(主机名),NS(名称服务器),以及许多高级类型。 |
| Alias Record | AWS 特有的 “CNAME‑like” 记录,可在区域根使用;免费,具健康检查。 |
| TTL | 控制缓存时长;TTL 低 = 变更快,TTL 高 = 查询次数少。 |
| Routing Policies | Simple、Weighted、Latency、Failover、Geolocation、Geoproximity、Multi‑Value。 |
| Health Checks | 监控端点;触发故障转移;可基于端点、计算或 CloudWatch。 |
| Hosted Zones | 公共(Internet) vs 私有(VPC)——每个区域 $0.50/月。 |
健康检查器
- 将多个健康检查的结果合并为单个健康检查。
- 逻辑运算符:OR、AND、NOT。
- **最大子项数:**256 个子健康检查。
- **通过标准:**指定父级被视为健康所需通过的子检查数量。
- **典型用例:**在不导致 所有 健康检查失败的情况下对网站进行维护。
**注意:**Route 53 健康检查器在 VPC 之外 运行,因此它们 无法访问私有端点(私有 VPC 资源或本地服务器)。
若要监控私有资源,您可以:
- 创建一个 CloudWatch 指标,反映私有端点的健康状态。
- 为该指标附加一个 CloudWatch 警报。
- 创建一个监控该警报本身的 Route 53 健康检查。
故障转移(主动‑被动)
标准的 Route 53 故障转移路由,其中一个资源为主(主动),另一个为备用(被动)。
地理位置路由
- 目的: 根据用户位置路由流量(不同于基于延迟的路由)。
- 位置粒度: 洲、国家、美国州(当区域重叠时,最精确的匹配获胜)。
- 默认记录: 始终创建“Default”记录,以捕获不匹配任何位置规则的请求。
- 使用场景:
- 网站本地化
- 按地区限制内容
- 跨地区负载均衡
- 健康检查: 可以关联健康检查,以确保只有健康的端点接收流量。
地理邻近路由
- 目标: 根据 地理偏好 将流量向资源倾斜或远离。
- 支持的资源:
- AWS 资源 – 指定 AWS 区域。
- 非‑AWS 资源 – 指定纬度和经度。
- 实现方式: 需要 Route 53 流量流 (高级)。
- 偏好值:
- 正向偏好 (1 – 99): 扩大地理区域 → 更多流量指向该资源。
- 负向偏好 (‑1 – ‑99): 缩小区域 → 更少流量指向该资源。
基于 IP 的路由(CIDR 映射)
- 工作原理: 根据客户端的 IP 地址进行流量路由。
- 配置方式: 提供一组 CIDR 块,并将每个块映射到特定的端点/位置(用户 IP 到端点的映射)。
- 使用场景:
- 通过将用户发送到最近的端点来优化性能。
- 降低网络成本。
- 示例:将特定 ISP 的用户定向到专用端点。
Multi‑Value Answer Routing
- When to use: 您有 多个资源 可以满足同一请求。
- Behavior: Route 53 返回 每个查询最多 8 条健康记录。
- Health checks: 可以附加;仅返回健康的记录。
- Important: 这 不是 弹性负载均衡器 (ELB) 的替代方案。
域名注册 vs. DNS 服务
| 概念 | 描述 |
|---|---|
| 域名注册商 | 您 购买 域名的实体(例如 GoDaddy、Amazon Registrar)。通常会提供基础的 DNS 服务。 |
| DNS 服务 | 托管并 解析 您的 DNS 记录的系统(例如 Route 53)。您可以使用与注册商 不同 的 DNS 服务。 |
典型工作流程:
- 购买 域名,可在任何注册商(包括第三方注册商)处购买。
- 在 Route 53 中 创建托管区域。
- 在注册商处 更新 NS 记录,指向 Route 53 的名称服务器。
关键要点: 域名注册商 ≠ DNS 服务。 虽然许多注册商会捆绑 DNS,但您可以自由选择任何您喜欢的 DNS 提供商。
Route 53 Resolver(混合 DNS)
默认情况下,Resolver 会自动响应以下 DNS 查询:
- EC2 实例的本地域名。
- 私有托管区域中的记录。
- 公共名称服务器中的记录。
可连接的网络类型
- VPC(包括对等 VPC)。
- 本地网络(通过 AWS Direct Connect 或 AWS VPN)。
端点
| 端点类型 | 功能 |
|---|---|
| 入站端点 | 允许 您本地的 DNS 解析器 为 AWS 资源(例如 EC2 实例)以及私有托管区域记录解析域名。 |
| 出站端点 | 使 Route 53 Resolver 能够将来自 VPC 的 DNS 查询转发到 您本地的 DNS 解析器。 |
这些端点使您能够构建 混合 DNS 架构,在 AWS 与外部网络之间无缝解析名称。