Amazon Route 53 应用程序恢复控制器中的准备情况检查允许您检查应用程序中的资源是否准备好进行故障转移。
让我们看一个简单的案例,您有一个名为 Simple-Service 的应用程序,该应用程序当前在美国东部(弗吉尼亚北部)区域 (us-east-1) 中运行。您还在美国西部(俄勒冈)区域 (us-west-2) 中拥有该应用程序的备用副本。在此设置示例中,我们将配置就绪检查以比较这两个版本的应用程序。这让我们可以确保备用的美国西部(俄勒冈)区域准备好接收流量(如果在故障转移场景中需要)。
有关使用 AWS CLI 的更多信息,请参阅 AWS CLI 命令参考。有关 Route 53 ARC 中的 API 操作的更多信息,请参阅可与 Amazon Route 53 应用程序恢复控制器一起使用的常见操作 或参阅 Amazon Route 53 应用程序恢复控制器的恢复准备 API 参考指南。
单元代表故障边界(如可用区或区域)并被收集到恢复组中。恢复组代表您要检查故障转移准备情况的应用程序。有关就绪检查组件的更多信息,请参阅 就绪检查组件 。
--region us-west-2
Route 53 ARC 是一项全球服务,支持多个 AWS 区域中的终端节点,但您必须在大多数 Route 53 ARC CLI 命令中指定美国西部(俄勒冈)区域(即指定参数)。例如,创建恢复组、就绪检查或集群等资源。
创建集群时,Route 53 ARC 为您提供一组区域终端节点。要获取或更新路由控制状态,您必须在 CLI 命令中指定区域终端节点(AWS 区域和终端节点 URL)。
对于我们的应用程序示例,我们将首先为我们拥有资源的每个区域创建一个单元格。然后我们将创建一个恢复组,然后完成设置以进行就绪检查。
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": {} } ] }
恢复组是 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 中,您要监控的一组资源称为资源集。资源集包含所有类型相同的资源。我们将资源集中的资源相互比较,以帮助确定单元是否准备好进行故障转移。
假设我们的 Simple-Service 应用程序确实非常简单,并且只使用 DynamoDB 表。它在 us-east-1 中有一个 DynamoDB 表,在 us-west-2 中有另一个。资源集还包含一个就绪范围,用于标识每个资源所在的单元。
3a。创建一个反映我们简单服务应用程序资源的资源集。
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 来验证资源集中包含的内容。这列出了 AWS 账户的所有资源集。在这里,您可以看到我们只有上面创建的一个资源集。
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 中的简单服务应用程序进行建模。接下来,我们将设置就绪检查以监控资源是否准备好进行故障转移。
就绪检查将一组规则应用于附加到检查的资源集中的每个资源。规则特定于每种资源类型。也就是说, 、 等有不同的AWS::DynamoDB::Table
规则 AWS::EC2::Instance
。规则检查资源的各种维度,包括配置、容量(如果可用且适用)、限制(如果可用且适用)和路由配置。
要查看在就绪检查中应用于资源的规则,您可以使用 get-readiness-check-resource-status
API,如步骤 5 中所述。要查看 Route 53 ARC 中所有就绪规则的列表,请使用 list-rules
或查看Route 53 中的就绪规则描述弧。Route 53 ARC 有一套针对每种资源类型运行的特定规则;它们目前不可定制。
4a。为资源集 ImportInformationTables 创建准备情况检查。
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": {} } ] }
现在我们已经为应用程序建模并添加了就绪检查,我们已经准备好监控资源。您可以在四个级别对应用程序的就绪情况进行建模:就绪检查级别(一组资源)、单个资源级别、单元级别(可用区或区域中的所有资源)和恢复组级别(整体应用)。下面提供了用于获取每种类型的就绪状态的命令。
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" } ] }