

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定路由控制元件
<a name="getting-started-cli-routing-config"></a>

我們的第一步是建立叢集。ARC 叢集是一組五個端點，每五個端點各一個 AWS 區域。ARC 基礎設施支援這些端點協同運作，以確保容錯移轉操作的高可用性和循序一致性。

## 1. 建立 叢集
<a name="getting-started-cli-routing.cluster"></a>

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"
}
```

當狀態為 DEPLOYED 時，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. 建立控制面板
<a name="getting-started-cli-routing.panel"></a>

控制面板是用於組織 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. 建立路由控制
<a name="getting-started-cli-routing.control"></a>

現在您已設定叢集並查看控制面板，您可以開始建立路由控制。建立路由控制時，您必須至少指定要路由控制所在的叢集的 Amazon Resource Name (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. 建立安全規則
<a name="getting-started-cli-routing.safety"></a>

當您同時使用多個路由控制時，您可以決定在啟用和停用它們時要採取一些保護措施，以避免意外的後果，例如關閉兩個路由控制並停止所有流量流程。若要建立這些保護措施，您可以建立路由控制安全規則。

安全規則有兩種類型：聲明規則和閘道規則。若要進一步了解安全規則，請參閱 [建立路由控制的安全規則](routing-control.safety-rules.md)。

以下呼叫提供建立宣告規則的範例，以確保`On`在任何指定時間，兩個路由控制中至少有一個設定為 。若要建立規則，您可以使用 `assertion-rule` 參數執行 `create-safety-rule` 。

如需聲明規則 API 操作的詳細資訊，請參閱《Amazon Application Recovery Controller 的路由控制 API 參考指南》中的 [AssertionRule](https://docs.aws.amazon.com/recovery-cluster/latest/api/safetyrule.html#safetyrule-model-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` 參數指定的兩個路由控制或 "gated"。

**注意**  
建立閘道規則之前，您必須建立閘道路由控制，其中不包含 DNS 容錯移轉記錄，以及使用 DNS 容錯移轉記錄設定的目標路由控制。

若要建立規則，您可以使用 `gating-rule` 參數執行 `create-safety-rule` 。

如需聲明規則 API 操作的詳細資訊，請參閱《Amazon Application Recovery Controller 的路由控制 API 參考指南》中的 [GatingRule](https://docs.aws.amazon.com/recovery-cluster/latest/api/safetyrule.html#safetyrule-model-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. 建立運作狀態檢查
<a name="getting-started-cli-routing.healthcheck"></a>

若要使用路由控制容錯移轉流量，您可以在 Amazon Route 53 中建立運作狀態檢查，然後將運作狀態檢查與您的 DNS 記錄建立關聯。若要容錯移轉流量，ARC 路由控制會將運作狀態檢查設定為失敗，以便 Route 53 重新路由流量。（運作狀態檢查對您的應用程式的運作狀態無效；它只是用作重新路由流量的方法。)

例如，假設您有兩個儲存格 （區域或可用區域）。您可以將一個 設定為應用程式的主要儲存格，另一個設定為次要儲存格，以容錯移轉至 。

若要設定容錯移轉的運作狀態檢查，您可以執行下列動作，例如：

1. 使用 ARC CLI 為每個儲存格建立路由控制。

1. 使用 Route 53 CLI 為每個路由控制在 Route 53 中建立 ARC 運作狀態檢查。

1. 使用 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](https://docs.aws.amazon.com/cli/latest/reference/route53/change-resource-record-sets.html) 命令的 Amazon Route 53 AWS CLI Command Reference 中的指示。在記錄中，指定每個儲存格的 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`為 `OFF`，並將 更新`RoutingControlCell2`為 `ON`。