为 API Gateway API 配置针对 DNS 故障转移的自定义运行状况检查
您可以使用 Amazon Route 53 运行状况检查,来控制从主要 AWS 区域的 API Gateway API 到辅助区域的 API Gateway API 的 DNS 故障转移。这可以帮助减轻在出现区域性问题时的影响。如果您使用自定义域,则无需客户端更改 API 终端节点,即可执行故障转移。
当您为别名记录选择评估目标运行状况时,只有当 API Gateway 服务在该区域不可用时,这些记录才会失败。某些情况下,您自己的 API Gateway API 可能会在此之前遇到中断。要直接控制 DNS 故障转移,请为您的 API Gateway API 配置自定义 Route 53 运行状况检查。在本示例中,您使用 CloudWatch 警报来帮助操作员控制 DNS 故障转移。有关配置故障转移的更多示例和其他注意事项,请参阅使用 Route 53 创建灾难恢复机制
先决条件
要完成此过程,您必须创建和配置以下资源:
有关如何为域名创建 Route 53 失效转移 DNS 记录的更多信息,请参阅《Amazon Route 53 开发人员指南》中的选择路由策略。有关如何监控 CloudWatch 警报的更多信息,请参阅《Amazon Route 53 开发人员指南》中的监控 CloudWatch 警报。
步骤 1:设置资源
在此示例中,您将创建以下资源来为您的域名配置 DNS 故障转移:
-
两个 AWS 区域中的 API Gateway API
-
两个 AWS 区域中同名的 API Gateway 自定义域名
-
将您的 API Gateway API 连接到自定义域名的 API Gateway API 映射
-
域名的 Route 53 故障转移 DNS 记录
-
辅助区域的 CloudWatch 警报
-
在辅助区域进行的基于 CloudWatch 警报的 Route 53 运行状况检查
首先,确保您的主区域和辅助区域都拥有所有必需的资源。辅助区域应包含警报和运行状况检查。这样,您无需依赖主区域即可进行故障转移。有关创建这些资源的 AWS CloudFormation 模板示例,请参阅primary.yaml
和secondary.yaml
。
重要
在故障转移到辅助区域之前,请确保所有必需的资源都可用。否则,您的 API 将无法为辅助区域的流量做好准备。
步骤 2:启动到辅助区域的故障转移
在以下示例中,备用区域收到 CloudWatch 指标并启动故障转移。我们使用需要操作员干预才能启动故障转移的自定义指标。
aws cloudwatch put-metric-data \
--metric-name
Failover
\--namespace
HealthCheck
\--unit
Count
\--value
1
\--region
us-west-1
将指标数据替换为您配置的 CloudWatch 警报的相应数据。
步骤 3:测试故障转移
调用您的 API 并验证您是否收到辅助区域的响应。如果您在步骤 1 中使用了示例模板,则故障转移后,响应将从 {"message": "Hello from the primary Region!"}
更改为 {"message": "Hello from the secondary Region!"}
。
curl
https://my-api.example.com
{"message": "Hello from the secondary Region!"}
步骤 4:返回主区域
要返回主区域,请发送使运行状况检查顺利通过的 CloudWatch 指标。
aws cloudwatch put-metric-data \
--metric-name
Failover
\--namespace
HealthCheck
\--unit
Count
\--value
0
\--region
us-west-1
将指标数据替换为您配置的 CloudWatch 警报的相应数据。
调用您的 API 并验证您是否收到主区域的响应。如果您在步骤 1 中使用了示例模板,则响应将从 {"message": "Hello from the secondary Region!"}
更改为 {"message": "Hello from the primary Region!"}
。
curl
https://my-api.example.com
{"message": "Hello from the primary Region!"}
后续步骤:自定义和定期测试
此示例演示了一种配置 DNS 故障转移的方法。您可以使用各种 CloudWatch 指标或 HTTP 终端节点进行运行状况检查,以管理故障转移。定期测试您的故障转移机制,确保它们按预期运行,并且操作员熟悉您的故障转移过程。