라우팅 제어 구성 요소 설정 - Amazon Application Recovery Controller(ARC)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

라우팅 제어 구성 요소 설정

첫 번째 단계는 클러스터 생성입니다. ARC 클러스터는 5개의 엔드포인트 세트로, 각각 5개의 서로 다른 AWS 리전에 하나씩 있습니다. ARC 인프라는 이러한 엔드포인트가 협력해 작동하여 장애 조치 작업의 고가용성 및 순차적 일관성을 보장할 수 있도록 지원합니다.

1. 클러스터 생성

1a. 클러스터를 생성합니다. network-type은 선택 사항이며 IPV4 또는 DUALSTACK일 수 있습니다. 기본값은 IPV4입니다.

aws route53-recovery-control-config create-cluster --cluster-name test --network-type DUALSTACK
"Cluster": { "ClusterArn": "arn:aws:route53-recovery-control::123456789123:cluster/12341234-1234-1234-1234-123412341234", "Name": "test", "Status": "PENDING", "Owner": "123456789123", "NetworkType": "DUALSTACK" }

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::123456789123:cluster/12341234-1234-1234-1234-123412341234", "Name": "test", "Status": "DEPLOYED", "Owner": "123456789123", "NetworkType": "DUALSTACK" }

“배포됨” 상태가 되면 ARC는 사용자가 상호 작용할 수 있는 엔드포인트 세트를 포함하는 클러스터를 성공적으로 생성한 것입니다. list-clusters를 호출하여 모든 클러스터를 나열할 수 있습니다.

1c. 클러스터를 나열합니다.

aws route53-recovery-control-config --region us-west-2 list-clusters
"Cluster": { "ClusterArn": "arn:aws:route53-recovery-control::123456789123:cluster/12341234-1234-1234-1234-123412341234", "Name": "test", "Status": "DEPLOYED", "Owner": "123456789123", "NetworkType": "DUALSTACK" }

1d. 클러스터의 네트워크 유형을 업데이트합니다. 옵션은 IPV4 또는 DUALSTACK입니다.

aws route53-recovery-control-config update-cluster \ --cluster-arn arn:aws:route53-recovery-control::123456789123:cluster/12341234-1234-1234-1234-123412341234 \ --network-type DUALSTACK
"Cluster": { "ClusterArn": "arn:aws:route53-recovery-control::123456789123:cluster/12341234-1234-1234-1234-123412341234", "Name": "test", "Status": "PENDING", "Owner": "123456789123", "NetworkType": "DUALSTACK" }

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으로 설정되도록 하는 어설션 규칙을 만드는 예를 제공합니다. 규칙을 만들려면 create-safety-ruleassertion-rule 파라미터와 함께 실행합니다.

어설션 규칙 API 작업에 대한 자세한 내용은 Amazon Application Recovery Controller용 라우팅 제어 API 참조 안내서의 AssertionRule 항목을 참조하세요.

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 장애 조치 레코드로 구성하는 대상 라우팅 제어를 생성해야 합니다.

규칙을 만들려면 create-safety-rulegating-rule 파라미터와 함께 실행합니다.

어설션 규칙 API 작업에 대한 자세한 내용은 Amazon Application Recovery Controller용 라우팅 제어 API 참조 안내서의 GatingRule 항목을 참조하세요.

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가 트래픽을 다시 라우팅하도록 합니다. (상태 확인은 애플리케이션의 상태를 검증하지 않으며 트래픽을 다시 라우팅하는 방법으로만 사용됩니다.)

예를 들어 두 개의 셀(리전 또는 가용 영역)이 있다고 가정해 보겠습니다. 하나는 애플리케이션의 기본 셀로 구성하고 다른 하나는 장애 조치할 보조 셀로 구성합니다.

장애 조치를 위한 상태 확인을 설정하려면 예를 들어, 다음을 수행할 수 있습니다.

  1. ARC CLI를 사용하여 각 셀에 대한 라우팅 제어를 생성합니다.

  2. Route 53 CLI를 사용하여 Route 53에서 각 라우팅 제어에 대한 ARC 상태 확인을 생성합니다.

  3. 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 CLI를 사용하여 ARC 상태 확인을 생성합니다.

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 CLI를 사용하여 Route 53에서 장애 조치 DNS 레코드를 생성합니다. 레코드를 생성하려면 change-resource-record-sets 명령에 대한 Amazon Route 53 AWS CLI Command 참조의 지침을 따릅니다. 레코드에서 각 셀의 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 상태를 OFFRoutingControlCell2 상태를 ON으로 업데이트할 수 있습니다.