运行状况检查与 DNS 故障转移
设置端点、计算型和 CloudWatch 警报运行状况检查,让 Route 53 自动将流量从不健康端点转移出去。
运行状况检查与 DNS 故障转移 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
什么是 Route 53 运行状况检查?
Route 53 运行状况检查会持续监控端点的运行状况,包括 Web 服务器、负载均衡器,以及任何可通过互联网访问的 HTTP/HTTPS/TCP 端点。根据运行状况检查结果,Route 53 可以自动更新 DNS 路由,避免将流量发送到运行状况不佳的资源。
运行状况检查按每项检查每月计费。Route 53 的全球运行状况检查器位于多个 Region 中,会同时探测您的端点,从而为运行状况检查本身提供冗余。只有当达到阈值数量的检查器都确认端点失败时,该端点才会被视为运行状况不佳。
端点运行状况检查
端点运行状况检查会使用您选择的协议(HTTP、HTTPS 或 TCP)、端口以及可选路径,监控特定 IP 地址或域名。对于 HTTP/HTTPS 检查,Route 53 会验证端点是否在超时时间内返回 2xx 或 3xx HTTP 状态码。对于 HTTPS 检查,还可以选择验证 TLS 证书。
主要配置选项包括:请求间隔(10 秒或 30 秒——10 秒可以更快地检测到故障,但成本更高)、失败阈值(标记为运行状况不佳前允许连续失败 1–10 次),以及字符串匹配(可选择验证响应正文是否包含特定字符串)。
# Create an HTTP health check
aws route53 create-health-check \
--caller-reference hc-2026-06-20 \
--health-check-config '{
"Type": "HTTP",
"IPAddress": "54.100.1.1",
"Port": 80,
"ResourcePath": "/health",
"FailureThreshold": 3,
"RequestInterval": 30
}'计算型运行状况检查
计算型运行状况检查使用布尔逻辑(AND、OR、NOT)组合多个子运行状况检查的结果。您可以据此根据多个信号定义应用程序级别的运行状况,而无需创建复杂的路由链。
例如:只有 API 服务器检查和数据库检查都通过时,Web 应用程序才处于正常状态。请创建一个 Type 为 AND 的计算型运行状况检查,并引用这两个端点检查。如果任一检查失败,计算型运行状况检查也会失败,Route 53 随后会从响应中移除关联的 DNS 记录。
# Create a calculated health check (AND of two child checks)
aws route53 create-health-check \
--caller-reference hc-calc-2026 \
--health-check-config '{
"Type": "CALCULATED",
"ChildHealthChecks": [
"hc-api-id",
"hc-db-id"
],
"HealthThreshold": 2
}'CloudWatch 告警运行状况检查
CloudWatch 告警运行状况检查会将 Route 53 运行状况检查连接到 CloudWatch 告警的状态。如果告警处于 ALARM 状态,则运行状况检查会被标记为运行状况不佳;如果处于 OK 或 INSUFFICIENT_DATA 状态,则会被标记为运行状况良好。
对于位于 VPC 内部的端点(Route 53 的外部运行状况检查器无法访问这些端点),这种模式非常有用。您无需探测私有端点,而是为其创建 CloudWatch 指标和告警,然后根据告警状态确定 Route 53 运行状况检查的结果。此外,还可以根据错误率或队列深度等业务指标执行运行状况检查。
# Create a health check based on a CloudWatch alarm
aws route53 create-health-check \
--caller-reference hc-cw-2026 \
--health-check-config '{
"Type": "CLOUDWATCH_METRIC",
"AlarmIdentifier": {
"Region": "us-east-1",
"Name": "HighErrorRate-Alarm"
},
"InsufficientDataHealthStatus": "Healthy"
}'私有端点运行状况检查
Route 53 运行状况检查器是由 AWS 管理、位于 VPC 外部的服务器,它们通过公共互联网访问端点。标准端点运行状况检查无法访问私有子网中的资源。对于私有端点,请采用以下方法之一:
- 从 VPC 内部发布自定义 CloudWatch 指标(例如来自应用程序的成功/失败信号),创建告警,并使用 CloudWatch 告警运行状况检查
- 使用 CloudWatch 复合告警,汇总 VPC 内部 ELB、RDS 或应用程序的指标
对于私有子网中的数据库、内部负载均衡器和后端服务,这种模式至关重要。
运行状况检查状态与监控
您可以在 Route 53 控制台的 Health Checks 下查看运行状况检查状态,也可以通过 API 查询该状态。Route 53 会将运行状况检查指标发布到 CloudWatch 的 AWS/Route53 命名空间,其中包括 HealthCheckStatus(1 = 运行状况良好,0 = 运行状况不佳)和 HealthCheckPercentageHealthy(报告端点运行状况良好的 Route 53 检查器所占的百分比)。
请针对 HealthCheckStatus 设置 CloudWatch 告警,以便在端点状态变为不健康时接收 SNS 通知,让您能够在值班团队发现 DNS 故障转移已经发生之前及时了解情况。
# Get health check status
aws route53 get-health-check-status \
--health-check-id a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
--query 'CheckerIpRanges'使用故障转移路由实现 DNS 故障转移
当 Route 53 检测到 Primary 记录的运行状况检查失败时,它会从 DNS 响应中移除 Primary,并返回 Secondary 的地址。这称为 DNS 故障转移。切换会在评估周期(运行状况检查器失败次数 × 请求间隔)加上记录 TTL 的时间内完成。
例如:请求间隔 = 30 秒,失败阈值 = 3,TTL = 60 秒。最坏情况下的故障转移时间约为 3 × 30 + 60 = 150 秒。设置较低的 TTL(例如 10 秒)和更快的运行状况检查间隔(10 秒),可以将时间缩短为 3 × 10 + 10 = 40 秒。
加权记录和延迟记录的运行状况检查
运行状况检查不仅可以关联到 Failover 记录,也可以关联到 Weighted 记录和 Latency 记录。当 Weighted 记录的运行状况检查失败时,Route 53 会将该记录的流量权重按比例重新分配给运行状况良好的加权记录。当 Latency 记录的运行状况检查失败时,Route 53 会将查询路由到下一个延迟最低且运行状况良好的记录。
这样一来,Weighted 和 Latency 路由策略无需显式的 Failover 记录,也能应对端点故障。一个常见的 SAA-C03 模式是:跨 Region 使用带运行状况检查的 Latency 路由,同时实现性能优化和自动灾难恢复。
结合运行状况检查的多 Region 主动-主动架构
使用 Route 53 构建具有弹性的多 Region 主动-主动架构:
- 为每个 Region(us-east-1、eu-west-1、ap-southeast-1)创建 Latency 记录,并为每条记录配置运行状况检查
- 当所有 Region 的运行状况都良好时,将用户路由到延迟最低的 Region
- 如果某个 Region 的运行状况检查失败(应用程序停止运行或无响应),Route 53 会自动将其从 DNS 响应中移除,并将查询路由到下一个最合适且运行状况良好的 Region
- 当发生故障的 Region 恢复后,运行状况检查通过,Route 53 会将其重新加入轮换
这样无需手动干预,即可实现具有性能优化的全球自动故障转移。
Route 53 运行状况检查器的 IP 范围
Route 53 运行状况检查器来自 AWS IP 范围 JSON 文件中 ROUTE53_HEALTHCHECKS 部分所列的一组已发布 IP 范围。如果您的端点受到防火墙或安全组保护,并且入站访问受到限制,则必须允许来自这些 IP 范围的流量,运行状况检查才能成功。
另一种方法是使用面向公共网络的端点,将请求代理到私有后端(例如 ALB),并通过该端点执行运行状况检查。ALB 的安全组只需允许 Route 53 IP 范围,而后端的安全组只允许 ALB 安全组,从而保持纵深防御策略。
# Fetch Route 53 health checker IP ranges
curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | \
python3 -c "
import json,sys
data=json.load(sys.stdin)
ranges=[p['ip_prefix'] for p in data['prefixes'] if p['service']=='ROUTE53_HEALTHCHECKS']
print('\n'.join(ranges))
"运行状况检查最佳实践
Route 53 运行状况检查的最佳实践:
- 创建专用的 /health 端点,检查所有关键依赖项(数据库连接、缓存可达性),并且只有在全部正常运行时才返回 200
- 对于关键的生产端点,使用 10 秒的请求间隔,以更快地检测故障
- 在 CloudWatch 中监控
HealthCheckPercentageHealthy——部分故障(只有部分 Route 53 检查器失败)可能表示区域网络问题或间歇性问题 - 对于 VPC 私有资源,根据应用程序指标使用 CloudWatch 告警运行状况检查
- 在生产环境依赖故障转移之前,先在非生产环境中进行测试
快速检查
请测试您对本课 AWS 解决方案架构师(SAA-C03)相关概念的理解。
课程回顾
在本课中,您学习了:端点运行状况检查器从外部 Route 53 检查器探测 HTTP/HTTPS/TCP,CloudWatch 告警运行状况检查支持监控私有 VPC 资源,以及计算型运行状况检查使用布尔逻辑组合多个信号。DNS 故障转移速度取决于运行状况检查间隔、失败阈值和 TTL。接下来,我们将探讨 CloudFront 分配和源站。
常见问题解答
「运行状况检查与 DNS 故障转移」课时是免费的吗?
是的 — 「运行状况检查与 DNS 故障转移」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「运行状况检查与 DNS 故障转移」这节课中我会学到什么?
设置端点、计算型和 CloudWatch 警报运行状况检查,让 Route 53 自动将流量从不健康端点转移出去。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「运行状况检查与 DNS 故障转移」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 托管区域与 DNS 记录类型
- 路由策略:简单、加权与延迟
- 故障转移与地理位置路由
- 运行状况检查与 DNS 故障转移