本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置路由控制组件
第一步是创建集群。集ARC群是由五个终端节点组成的集合,五个不同的终端节点各一个 AWS 区域。ARC基础架构支持这些端点协同工作,从而保证故障转移操作的高可用性和顺序一致性。
1. 创建集群
1a. 创建集群。
aws route53-recovery-control-config --region us-west-2 create-cluster --cluster-name NewCluster
{ "Cluster": { "ClusterArn": "arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh", "Name": "NewCluster", "Status": "PENDING" } }
首次创建ARC资源时,在创建集群PENDING
时,其状态为。您可以通过调用 describe-cluster
查看其进度。
1b. 描述集群。
aws route53-recovery-control-config --region us-west-2 \ describe-cluster --cluster-arn arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh
{ "Cluster":{ "ClusterArn": "arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh", "ClusterEndpoints":[ {"Endpoint": "https://host-aaaaaa.us-east-1.example.com", "Region":"us-east-1"}, {"Endpoint": "https://host-bbbbbb.ap-southeast-2.example.com", "Region":"ap-southeast-2"}, {"Endpoint": "https://host-cccccc.eu-west-1.example.com", "Region":"eu-west-1"}, {"Endpoint": "https://host-dddddd.us-west-2.example.com", "Region":"us-west-2"}, {"Endpoint": "https://host-eeeeee.ap-northeast-1.example.com", "Region":"ap-northeast-1"} ] "Name": "NewCluster", "Status": "DEPLOYED" } }
当状态为时DEPLOYED,ARC已成功创建具有一组终端节点供您与之交互的集群。您可以通过调用 list-clusters
列出所有集群。
1c. 列出您的集群。
aws route53-recovery-control-config --region us-west-2 list-clusters
{ "Clusters": [ { "ClusterArn": "arn:aws:route53-recovery-control::111122223333:cluster/1234abcd-abcd-1234-abcd-1234abcdefgh", "ClusterEndpoints":[ {"Endpoint": "https://host-aaaaaa.us-east-1.example.com", "Region":"us-east-1"}, {"Endpoint": "https://host-bbbbbb.ap-southeast-2.example.com", "Region":"ap-southeast-2"}, {"Endpoint": "https://host-cccccc.eu-west-1.example.com", "Region":"eu-west-1"}, {"Endpoint": "https://host-dddddd.us-west-2.example.com", "Region":"us-west-2"}, {"Endpoint": "https://host-eeeeee.ap-northeast-1.example.com", "Region":"ap-northeast-1"} ], "Name": "AnotherCluster", "Status": "DEPLOYED" }, { "ClusterArn": "arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh", "ClusterEndpoints": [ {"Endpoint": "https://host-ffffff.us-east-1.example.com", "Region":"us-east-1"}, {"Endpoint": "https://host-gggggg.ap-southeast-2.example.com", "Region":"ap-southeast-2"}, {"Endpoint": "https://host-hhhhhh.eu-west-1.example.com", "Region":"eu-west-1"}, {"Endpoint": "https://host-iiiiii.us-west-2.example.com", "Region":"us-west-2"}, {"Endpoint": "https://host-jjjjjj.ap-northeast-1.example.com", "Region":"ap-northeast-1"} ], "Name": "NewCluster", "Status": "DEPLOYED" } ] }
2. 创建控制面板
控制面板是用于组织ARC路由控制的逻辑分组。创建集群时,ARC会自动为你提供一个被调用的控制面板DefaultControlPanel
。您可以立即使用该控制面板。
一个控制面板只能存在于一个集群中。如果要将控制面板移到另一个集群,则必须将其删除,然后在第二个集群中创建它。您可以通过调用 list-control-panels
查看账户中的所有控制面板。要仅查看特定集群中的控制面板,请添加 --cluster-arn
字段。
2a. 列出控制面板。
aws route53-recovery-control-config --region us-west-2 \ list-control-panels --cluster-arn arn:aws:route53-recovery-control::111122223333:cluster/eba23304-1a51-4674-ae32-b4cf06070bdd
{ "ControlPanels": [ { "ControlPanelArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/1234567dddddd1234567dddddd1234567", "ClusterArn": "arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh", "DefaultControlPanel": true, "Name": "DefaultControlPanel", "RoutingControlCount": 0, "Status": "DEPLOYED" } ] }
也可以选择通过调用 create-control-panel
创建自己的控制面板。
2b. 创建控制面板。
aws route53-recovery-control-config --region us-west-2 create-control-panel \ --control-panel-name NewControlPanel2 \ --cluster-arn arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh
{ "ControlPanel": { "ControlPanelArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456", "ClusterArn": "arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh", "DefaultControlPanel": false, "Name": "NewControlPanel2", "RoutingControlCount": 0, "Status": "PENDING" } }
首次创建ARC资源时,其状态为创建PENDING
时。您可以通过调用 describe-control-panel
查看进度。
2c. 描述控制面板。
aws route53-recovery-control-config --region us-west-2 describe-control-panel \ --control-panel-arn arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456
{ "ControlPanel": { "ControlPanelArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456", "ClusterArn": "arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh", "DefaultControlPanel": true, "Name": "DefaultControlPanel", "RoutingControlCount": 0, "Status": "DEPLOYED" } }
3. 创建路由控制
现在您已设置集群并查看控制面板,接着可以开始创建路由控制。创建路由控制时,您必须至少指定您希望路由控制所在集群的 Amazon 资源名称 (ARN)。您也可以为路由控件指定控制面板的。ARN您还需要指定控制面板所在的集群。
如果您未指定控制面板,路由控制将添加到自动创建的控制面板 DefaultControlPanel
。
通过调用 create-routing-control
创建路由控制。
3a. 创建路由控制。
aws route53-recovery-control-config --region us-west-2 create-routing-control \ --routing-control-name NewRc1 \ --cluster-arn arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh
{ "RoutingControl": { "ControlPanelArn": " arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456", "Name": "NewRc1", "RoutingControlArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456/routingcontrol/abcdefg1234567", "Status": "PENDING" } }
路由控制遵循与其他ARC资源相同的创建模式,因此您可以通过调用描述操作来跟踪它们的进度。
3b. 描述路由控制。
aws route53-recovery-control-config --region us-west-2 describe-routing-control \ --routing-control-arn arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456/routingcontrol/abcdefg1234567
{ "RoutingControl": { "ControlPanelArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456", "Name": "NewRc1", "RoutingControlArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456/routingcontrol/abcdefg1234567", "Status": "DEPLOYED" } }
您可以通过调用 list-routing-controls
列出控制面板中的路由控制。控制面板ARN是必需的。
3c. 列出路由控制。
aws route53-recovery-control-config --region us-west-2 list-routing-controls \ --control-panel-arn arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456
{ "RoutingControls": [ { "ControlPanelArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456", "Name": "Rc1", "RoutingControlArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456/routingcontrol/abcdefg1234567", "Status": "DEPLOYED" }, { "ControlPanelArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456", "Name": "Rc2", "RoutingControlArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456/routingcontrol/hijklmnop987654321", "Status": "DEPLOYED" } ] }
在使用路由控制状态的以下示例中,我们假设您有本节中列出的两个路由控制(Rc1 和 Rc2)。在本例中,每个路由控制代表部署了应用程序的一个可用区。
4. 创建安全规则
同时使用多个路由控制时,您可能会决定在启用和禁用它们时采取一些保障措施,以避免意想不到的后果,例如关闭两个路由控制和停止所有流量。要创建这些安全措施,您需要创建路由控制安全规则。
安全规则有两种类型:断言规则和门控规则。如需了解有关安全规则的详情,请参阅为路径控制创建安全规则 。
以下调用提供了创建断言规则的示例,该规则可确保在任何给定时间至少将两个路由控制之一设置为 On
。要创建规则,请运行使用 assertion-rule
参数的 create-safety-rule
。
有关断言规则API操作的详细信息,请参阅 AssertionRuleAmazon 应用程序恢复控制器的路由控制API参考指南。
4a. 创建断言规则。
aws route53-recovery-control-config --region us-west-2 create-safety-rule \ --assertion-rule '{"Name": "TestAssertionRule", "ControlPanelArn": "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx", "WaitPeriodMs": 5000, "AssertedControls": ["arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/def123def123def" "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/ghi456ghi456ghi"], "RuleConfig": {"Threshold": 1, "Type": "ATLEAST", "Inverted": false}}'
{ "Rule": { "ASSERTION": { "Arn": "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/safetyrule/333333444444", "AssertedControls": [ "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/def123def123def" "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/ghi456ghi456ghi"], "ControlPanelArn": "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx", "Name": "TestAssertionRule", "RuleConfig": { "Inverted": false, "Threshold": 1, "Type": "ATLEAST" }, "Status": "PENDING", "WaitPeriodMs": 5000 } } }
以下调用提供了创建门控规则的示例,该规则为控制面板中的一组目标路由控制提供了整体的“开启/关闭”或“门控”开关。这样便可以禁止更新目标路由控制,例如,自动化机制无法进行未授权更新。在本例中,门控开关是通过 GatingControls
参数指定的路由控制,受到控制或“门控”的两个路由控制通过 TargetControls
参数指定。
注意
在创建门控规则之前,必须创建门控路由控件(其中不包括DNS故障转移记录)和目标路由控件(使用DNS故障转移记录进行配置)。
要创建规则,请运行使用 gating-rule
参数的 create-safety-rule
。
有关断言规则API操作的详细信息,请参阅 GatingRuleAmazon 应用程序恢复控制器的路由控制API参考指南。
4b. 创建门控规则。
aws route53-recovery-control-config --region us-west-2 create-safety-rule \ --gating-rule '{"Name": "TestGatingRule", "ControlPanelArn": "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx", "WaitPeriodMs": 5000, "GatingControls": ["arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/def123def123def"] "TargetControls": ["arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/ghi456ghi456ghi", "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/lmn789lmn789lmn"], "RuleConfig": {"Threshold": 0, "Type": "OR", "Inverted": false}}'
{ "Rule": { "GATING": { "Arn": "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/safetyrule/444444444444", "GatingControls": [ "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/def123def123def" ], "TargetControls": [ "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/ghi456ghi456ghi" "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx/routingcontrol/lmn789lmn789lmn" ], "ControlPanelArn": "arn:aws:route53-recovery-control::888888888888:controlpanel/zzz123yyy456xxx789zzz123yyy456xxx", "Name": "TestGatingRule", "RuleConfig": { "Inverted": false, "Threshold": 0, "Type": "OR" }, "Status": "PENDING", "WaitPeriodMs": 5000 } } }
与其他路由控制资源一样,您可以在安全规则传播到数据平面后对其进行描述、列出或删除。
设置一个或多个安全规则后,您可以继续与集群交互,以设置或检索路由控制的状态。如果某项 set-routing-control-state
操作违反了您创建的规则,您将收到类似下方的异常:
Cannot modify control state for [0123456bbbbbbb0123456bbbbbb01234560123 abcdefg1234567]
due to failed rule evaluation 0123456bbbbbbb0123456bbbbbb0123456333333444444
第一个标识符是与路由控件ARN连接在一起的控制面板。ARN第二个标识符是与安全规则ARN连接在一起的控制面板。ARN
5. 创建运行状况检查
要使用路由控制对流量进行故障转移,您可以在 Amazon Route 53 中创建运行状况检查,然后将运行状况检查与您的DNS记录相关联。要对流量进行故障切换,ARC路由控制会将运行状况检查设置为失败,这样 Route 53 就会重新路由流量。(运行状况检查对应用程序的运行状况无效;它只是用作重新路由流量的方法。)
举个例子,假设您有两个单元(区域或可用区)。您可以将一个单元配置为应用程序的主单元,将另一个配置为辅助单元,以便进行故障切换。
要为失效转移设置运行状况检查,您可以执行以下操作,例如:
使用ARCCLI为每个信元创建路由控件。
使用 Route 53 CLI 在 Route 53 中为每个路由控制创建ARC运行状况检查。
使用 Route 53 CLI 在 Route 53 中创建两条故障转移DNS记录,并将运行状况检查与每条记录关联起来。
5a. 为每个单元格创建路由控制。
aws route53-recovery-control-config --region us-west-2 create-routing-control \ --routing-control-name RoutingControlCell1 \ --cluster-arn arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh
aws route53-recovery-control-config --region us-west-2 create-routing-control \ --routing-control-name RoutingControlCell2 \ --cluster-arn arn:aws:route53-recovery-control::111122223333:cluster/5678abcd-abcd-5678-abcd-5678abcdefgh
5b. 为每个路由控制创建运行状况检查。
注意
您可以使用 Amazon Route 53 创建运行ARC状况检查CLI。
aws route53 create-health-check --caller-reference RoutingControlCell1 \ --health-check-config \ Type=RECOVERY_CONTROL,RoutingControlArn=arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456/routingcontrol/abcdefg1234567
{ "Location": "https://route53.amazonaws.com/2015-01-01/healthcheck/11111aaaa-bbbb-cccc-dddd-ffffff22222", "HealthCheck": { "Id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "CallerReference": "RoutingControlCell1", "HealthCheckConfig": { "Type": "RECOVERY_CONTROL", "Inverted": false, "Disabled": false, "RoutingControlArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456/routingcontrol/abcdefg1234567" }, "HealthCheckVersion": 1 } }
aws route53 create-health-check --caller-reference RoutingControlCell2 \ --health-check-config \ Type=RECOVERY_CONTROL,RoutingControlArn=arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456/routingcontrol/abcdefg1234567
{ "Location": "https://route53.amazonaws.com/2015-01-01/healthcheck/11111aaaa-bbbb-cccc-dddd-ffffff22222", "HealthCheck": { "Id": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "CallerReference": "RoutingControlCell2", "HealthCheckConfig": { "Type": "RECOVERY_CONTROL", "Inverted": false, "Disabled": false, "RoutingControlArn": "arn:aws:route53-recovery-control::111122223333:controlpanel/0123456bbbbbbb0123456bbbbbb0123456/routingcontrol/abcdefg1234567" }, "HealthCheckVersion": 1 } }
5c. 创建两DNS条故障转移记录,并将运行状况检查与每条记录关联起来。
您可以使用 Route 53 在 DNS Route 53 中创建故障转移记录CLI。要创建记录,请按照《Amazon Route 53 AWS CLI 命令参考》中该change-resource-record-sets命令的说明进行操作。在记录中,指定每个像元的DNS值以及 Route 53 为运行状况检查创建的相应HealthCheckID
值(请参阅 6b)。
对于主单元格:
{ "Name": "myapp.yourdomain.com", "Type": "CNAME", "SetIdentifier": "primary", "Failover": "PRIMARY", "TTL": 0, "ResourceRecords": [ { "Value": "cell1.yourdomain.com" } ], "HealthCheckId": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
对于辅助单元格:
{ "Name": "myapp.yourdomain.com", "Type": "CNAME", "SetIdentifier": "secondary", "Failover": "SECONDARY", "TTL": 0, "ResourceRecords": [ { "Value": "cell2.yourdomain.com" } ], "HealthCheckId": "yyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" }
现在,要从主单元故障转移到辅助单元格,可以按照步骤 4b 中的CLI示例将状态更新RoutingControlCell1
RoutingControlCell2
到OFF
ON
和到。