为 DNS 故障转移配置自定义运行状况检查 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

为 DNS 故障转移配置自定义运行状况检查

您可以使用 Amazon Route 53 运行状况检查,来控制从主要 Amazon Web Services 区域的 API Gateway API 到辅助区域的 API Gateway API 的 DNS 故障转移。这可以帮助减轻在出现区域性问题时的影响。如果您使用自定义域,则无需客户端更改 API 终端节点,即可执行故障转移。

当您为别名记录选择评估目标运行状况时,只有当 API Gateway 服务在该区域不可用时,这些记录才会失败。某些情况下,您自己的 API Gateway API 可能会在此之前遇到中断。要直接控制 DNS 故障转移,请为您的 API Gateway API 配置自定义 Route 53 运行状况检查。在本示例中,您使用 CloudWatch 警报来帮助操作员控制 DNS 故障转移。有关配置故障转移的更多示例和其他注意事项,请参阅使用 Route 53 创建灾难恢复机制使用 Amazon Lambda 和 CloudWatch 对 VPC 中的私有资源执行 Route 53 运行状况检查

先决条件

要完成此过程,您必须创建和配置以下资源:

有关如何为域名创建 Route 53 失效转移 DNS 记录的更多信息,请参阅《Amazon Route 53 开发人员指南》中的选择路由策略。有关如何监控 CloudWatch 警报的更多信息,请参阅《Amazon Route 53 开发人员指南》中的监控 CloudWatch 警报

步骤 1:设置资源

在此示例中,您将创建以下资源来为您的域名配置 DNS 故障转移:

  • 两个 Amazon Web Services 区域中的 API Gateway API

  • 两个 Amazon Web Services 区域中同名的 API Gateway 自定义域名

  • 将您的 API Gateway API 连接到自定义域名的 API Gateway API 映射

  • 域名的 Route 53 故障转移 DNS 记录

  • 辅助区域的 CloudWatch 警报

  • 在辅助区域进行的基于 CloudWatch 警报的 Route 53 运行状况检查

首先,确保您的主区域和辅助区域都拥有所有必需的资源。辅助区域应包含警报和运行状况检查。这样,您无需依赖主区域即可进行故障转移。有关创建这些资源的 Amazon CloudFormation 模板示例,请参阅primary.yamlsecondary.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 终端节点进行运行状况检查,以管理故障转移。定期测试您的故障转移机制,确保它们按预期运行,并且操作员熟悉您的故障转移过程。