使用 Route 53 ARC 准备情况检查 API 操作的示例 Amazon CLI - Amazon Route 53 应用程序恢复控制器
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Route 53 ARC 准备情况检查 API 操作的示例 Amazon CLI

本节介绍简单的应用程序示例,使用 Amazon Route 53 应用程序恢复控制器中的准备情况检查功能使用 API 操作。 Amazon Command Line Interface 这些示例旨在帮助您基本了解如何使用 CLI 使用就绪检查功能。

在 Route 53 ARC 审计中检查应用程序副本中是否存在资源不匹配的准备情况。要为应用程序设置就绪性检查,您必须在 Route 53 ARC 单元中设置或建模应用程序资源,使其与您为应用程序创建的副本保持一致。然后,您可以设置就绪性检查来审计这些副本,以帮助您确保备用应用程序副本及其资源持续与生产副本相匹配

我们来看一个简单的案例。您有一个名为 Simple-Service 的应用程序目前在美国东部(弗吉尼亚州北部)区域 (us-east-1) 运行。您还在美国西部(俄勒冈州)区域 (us-west-2) 有一个应用程序备用副本。在本例中,我们将配置就绪检查,以比较应用程序的这两个版本。这样,我们就可以确保美国西部(俄勒冈州)区域的备用副本在失效转移场景中能够准备好接收流量。

有关使用的更多信息 Amazon CLI,请参阅《Amazon CLI 命令参考》。有关就绪 API 操作的列表和指向更多信息的链接,请参阅 准备情况检查 API 操作

Route 53 ARC 中的单元格代表故障边界(如可用区或区域),并集合到恢复组中。恢复组代表您要检查失效转移就绪情况的应用程序。有关就绪检查组成部分的更多信息,请参阅就绪检查组件

注意

Route 53 ARC 是一项全球服务,支持多个终端节点, Amazon Web Services 区域 但您必须在大多数 Route 53 ARC CLI 命令中指定美国西部(俄勒冈--region us-west-2)区域(即指定参数)。例如,创建诸如恢复组或准备情况检查之类的资源。

在我们的应用程序示例中,首先要为拥有资源的每个区域创建一个单元格。然后,创建一个恢复组,接着完成就绪检查的设置。

1. 创建单元格

1a. 创建 us-east-1 单元格。

aws route53-recovery-readiness --region us-west-2 create-cell \ --cell-name east-cell
{ "CellArn": "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell", "CellName": "east-cell", "Cells": [], "ParentReadinessScopes": [], "Tags": {} }

1b. 创建 us-west-1 单元格。

aws route53-recovery-readiness --region us-west-2 create-cell \ --cell-name west-cell
{ "CellArn": "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell", "CellName": "west-cell", "Cells": [], "ParentReadinessScopes": [], "Tags": {} }

1c. 现在,我们有了两个单元格。您可以通过调用 list-cells API 来验证它们是否存在。

aws route53-recovery-readiness --region us-west-2 list-cells
{ "Cells": [ { "CellArn": "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell", "CellName": "east-cell", "Cells": [], "ParentReadinessScopes": [], "Tags": {} }, { "CellArn": "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell", "CellName": "west-cell" "Cells": [], "ParentReadinessScopes": [], "Tags": {} } ] }

2. 创建恢复组

恢复组是 Route 53 ARC 中恢复就绪的顶级资源。恢复组代表整个应用程序。在该步骤中,我们将创建一个恢复组,对整个应用程序进行建模,然后添加我们创建的两个单元格。

2a. 创建恢复组。

aws route53-recovery-readiness --region us-west-2 create-recovery-group \ --recovery-group-name simple-service-recovery-group \ --cells "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell"\ "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell"
{ "Cells": [], "RecoveryGroupArn": "arn:aws:route53-recovery-readiness::111122223333:recovery-group/simple-service-recovery-group", "RecoveryGroupName": "simple-service-recovery-group", "Tags": {} }

2b. (可选)您可以通过调用 list-recovery-groups API 来验证恢复组是否已正确创建。

aws route53-recovery-readiness --region us-west-2 list-recovery-groups
{ "RecoveryGroups": [ { "Cells": [ "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell", "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ], "RecoveryGroupArn": "arn:aws:route53-recovery-readiness::111122223333:recovery-group/simple-service-recovery-group", "RecoveryGroupName": "simple-service-recovery-group", "Tags": {} } ] }

现在我们已经有了应用程序模型,接着添加要监控的资源。在 Route 53 ARC 中,您要监控的一组资源称为资源集。资源集包含全部属于相同类型的资源。我们对资源集中的资源进行相互比较,以帮助确定单元格是否准备好进行失效转移。

3. 创建资源集

假设我们的 Simple-Service 应用程序非常简单,只使用 DynamoDB 表。它在 us-east-1 中有一张 DynamoDB 表,在 us-west-2 中也有一张。资源集还包含就绪范围,用于标识每个资源包含在哪个单元格中。

3a. 创建反映 Simple-Service 应用程序资源的资源集。

aws route53-recovery-readiness --region us-west-2 create-resource-set \ --resource-set-name ImportantInformationTables \ --resource-set-type AWS::DynamoDB::Table \ --resources ResourceArn="arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2",ReadinessScopes="arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ResourceArn="arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast1",ReadinessScopes="arn:aws:route53-recovery-readiness::111122223333:cell/east-cell"
{ "ResourceSetArn": "arn:aws:route53-recovery-readiness::111122223333:resource-set/sample-resource-set", "ResourceSetName": "ImportantInformationTables", "Resources": [ { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2" }, { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast1" } ], "Tags": {} }

3b. (可选)您可以通过调用 list-resource-sets API 来验证资源集中包含的资源。这列出了 Amazon 账户的所有资源集。在这里,您可以看到我们只有上面创建的一个资源集。

aws route53-recovery-readiness --region us-west-2 list-resource-sets
{ "ResourceSets": [ { "ResourceSetArn": "arn:aws:route53-recovery-readiness::111122223333:resource-set/ImportantInformationTables", "ResourceSetName": "ImportantInformationTables", "Resources": [ { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2" }, { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/east-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast1" } ], "Tags": {} } ] }{ "ResourceSets": [ { "ResourceSetArn": "arn:aws:route53-recovery-readiness::111122223333:resource-set/ImportantInformationTables", "ResourceSetName": "ImportantInformationTables", "Resources": [ { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::111122223333:cell/west-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2" }, { "ReadinessScopes": [ "arn:aws:route53-recovery-readiness::&ExampleAWSAccountNo1;:cell/east-cell" ], "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast1" } ], "Tags": {} } ] }

现在,我们已经创建了单元格、恢复组和资源集,以便在 Route 53 ARC 中对 Simple-Service 应用程序进行建模。接下来,我们将设置就绪检查,以监控资源是否准备好进行失效转移。

4. 创建就绪检查

就绪检查将一组规则应用于附加到检查的资源集中的每个资源。规则特定于每种资源类型。也就是说,AWS::DynamoDB::TableAWS::EC2::Instance 等有不同的规则。规则会从各个维度检查资源,包括配置、容量(如果可用而且适用)、限制(如果可用而且适用)和路由配置。

注意

要查看就绪检查中应用于资源的规则,可以使用 get-readiness-check-resource-status API,如步骤 5 中所述。要查看 Route 53 ARC 中所有就绪规则的列表,请使用 list-rules 或参阅Route 53 ARC 中的就绪规则描述。Route 53 ARC 有一组针对每种资源类型运行的特定规则;这些规则目前不能自定义。

4a. 为资源集 ImportantInformationTables 创建就绪检查。

aws route53-recovery-readiness --region us-west-2 create-readiness-check \ --readiness-check-name ImportantInformationTableCheck --resource-set-name ImportantInformationTables
{ "ReadinessCheckArn": "arn:aws:route53-recovery-readiness::111122223333:readiness-check/ImportantInformationTableCheck", "ReadinessCheckName": "ImportantInformationTableCheck", "ResourceSet": "ImportantInformationTables", "Tags": {} }

4b. (可选)要验证是否已成功创建就绪检查,请运行 list-readiness-checks API。该 API 显示账户中的所有就绪检查。

aws route53-recovery-readiness --region us-west-2 list-readiness-checks
{ "ReadinessChecks": [ { "ReadinessCheckArn": "arn:aws:route53-recovery-readiness::111122223333:readiness-check/ImportantInformationTableCheck", "ReadinessCheckName": "ImportantInformationTableCheck", "ResourceSet": "ImportantInformationTables", "Tags": {} } ] }

5. 监控就绪检查

现在,我们已经对应用程序进行了建模并添加了就绪检查,接下来可以监控资源了。您可以在四个级别上对应用程序的就绪情况进行建模:就绪检查级别(一组资源)、单个资源级别、单元格级别(可用区或区域中的所有资源)和恢复组级别(整个应用程序)。下面提供了获取上述每种类型的就绪状态的命令。

5a. 查看就绪检查的状态。

aws route53-recovery-readiness --region us-west-2 get-readiness-check-status\ --readiness-check-name ImportantInformationTableCheck
{ "Readiness": "READY", "Resources": [ { "LastCheckedTimestamp": "2021-01-07T00:53:39Z", "Readiness": "READY", "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2" }, { "LastCheckedTimestamp": "2021-01-07T00:53:39Z", "Readiness": "READY", "ResourceArn": "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsEast2" ] }

5b. 查看就绪检查中单个资源的详细就绪状态,包括检查的每条规则的状态。

aws route53-recovery-readiness --region us-west-2 get-readiness-check-resource-status \ --readiness-check-name ImportantInformationTableCheck \ --resource-identifier "arn:aws:dynamodb:us-west-2:111122223333:table/TableInUsWest2"
{"Readiness": "READY", "Rules": [ { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoTableStatus" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoCapacity" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoPeakRcuWcu" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoGSIsPeakRcuWcu" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoGSIsConfig" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoGSIsStatus" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoGSIsCapacity" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoReplicationLatency" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoAutoScalingConfiguration" }, { "LastCheckedTimestamp": "2021-01-07T00:55:41Z", "Messages": [], "Readiness": "READY", "RuleId": "DynamoLimits" } ] }

5c. 查看单元格的总体就绪情况。

aws route53-recovery-readiness --region us-west-2 get-cell-readiness-summary \ --cell-name west-cell
{ "Readiness": "READY", "ReadinessChecks": [ { "Readiness": "READY", "ReadinessCheckName": "ImportantTableCheck" } ] }

5d. 最后,查看恢复组级别上应用程序的顶级就绪情况。

aws route53-recovery-readiness --region us-west-2 get-recovery-group-readiness-summary \ --recovery-group-name simple-service-recovery-group
{ "Readiness": "READY", "ReadinessChecks": [ { "Readiness": "READY", "ReadinessCheckName": "ImportantTableCheck" } ] }