

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

# 自動擴展 Amazon Neptune 資料庫叢集中的複本數目
<a name="manage-console-autoscaling"></a>

您可以使用 Neptune 自動擴展，自動調整資料庫叢集中的 Neptune 複本數目，以符合您的連線能力和工作負載需求。自動調整規模可讓 Neptune 資料庫叢集處理工作負載的增加，然後，當工作負載降低時，自動擴展會移除不必要的複本，因此對於未使用的容量您無需支付費用。

您只能使用自動擴展，搭配已有一個主要寫入器執行個體和至少一個僅供讀取複本執行個體的叢集 (請參閱 [Amazon Neptune 資料庫叢集和執行個體](feature-overview-db-clusters.md))。此外，叢集中的所有僅供讀取複本執行個體都必須處於可用狀態。如果任何僅供讀取複本處於可用以外的狀態，Neptune 自動擴展不會執行任何動作，直到叢集中的每個僅供讀取複本都可用為止。

如果您需要建立新的叢集，請參閱 [建立 Neptune 叢集](get-started-create-cluster.md)。

使用 AWS CLI，您可以定義[擴展政策](#manage-console-autoscaling-define-policy)並將其套用至資料庫叢集。您也可以使用 AWS CLI 編輯或刪除自動調整規模政策。此政策會指定下列自動擴展參數：
+ 要在叢集中具有的複本數目下限和上限。
+ 複本新增擴展活動之間的`ScaleOutCooldown`間隔，以及複本刪除擴展活動之間的`ScaleInCooldown`間隔 (s)。
+ 用於縱向擴展或縮減的 CloudWatch 指標和指標觸發值。

Neptune 自動擴展動作的頻率會以下列幾種方式加以控制：
+ 最初，若要自動擴展以新增或刪除讀取器，必須違反 `CPUUtilization` 高警示至少 3 分鐘，或者必須違反低警示至少 15 分鐘。
+ 在第一次新增或刪除之後，後續 Neptune 自動擴展動作的頻率會受到自動擴展政策中 `ScaleOutCooldown` 和 `ScaleInCooldown` 設定的限制。

如果您正在使用的 CloudWatch 指標達到您在政策中指定的高閾值、如果自上次自動擴展動作後 `ScaleOutCooldown` 間隔已過了，以及如果您的資料庫叢集尚未有您設定的複本數上限，則 Neptune 自動擴展會使用與資料庫叢集的主要執行個體相同的執行個體類型建立新複本。

同樣地，如果指標達到您指定的低閾值、如果自上次自動擴展動作後 `ScaleInCooldown` 間隔已過了，以及如果資料庫叢集具有的複本數目超過您指定的複本數目下限，則 Neptune 自動擴展會刪除其中一個複本。

**注意**  
Neptune 自動擴展只會移除它建立的複本。它不會移除預先存在的複本。

使用 [neptune\$1autoscaling\$1config](parameters.md#parameters-db-cluster-parameters-neptune_autoscaling_config) 資料庫叢集參數，您也可以指定 Neptune 自動擴展建立的新僅供讀取複本的執行個體類型、這些僅供讀取複本的維護時段，以及要與每個新僅供讀取複本相關聯的標籤。您可以在 JSON 字串中提供這些組態設定，做為 `neptune_autoscaling_config` 參數的值，如下所示：

```
"{
  \"tags\": [
    { \"key\" : \"reader tag-0 key\", \"value\" : \"reader tag-0 value\" },
    { \"key\" : \"reader tag-1 key\", \"value\" : \"reader tag-1 value\" },
  ],
  \"maintenanceWindow\" : \"wed:12:03-wed:12:33\",
  \"dbInstanceClass\" : \"db.r5.xlarge\"
}"
```

請注意，JSON 字串中的引號必須全都使用反斜線字元 (`\`) 來逸出。像往常一樣，字串中的所有空格都是選用的。

三個組態設定中若有任何一個未在 `neptune_autoscaling_config` 參數中指定，其會從資料庫叢集的主要寫入器執行個體的組態中複製。

當[自動擴展](https://docs.aws.amazon.com/autoscaling/plans/userguide/)新增僅供讀取複本執行個體時，它會在資料庫執行個體 ID 前面加上 `autoscaled-reader` (例如，`autoscaled-reader-7r7t7z3lbd-20210828`)。它也會將一個標籤新增至其使用金鑰 `autoscaled-reader` 和 值 `TRUE` 建立的每個僅供讀取複本。您可以在 AWS 管理主控台中資料庫執行個體詳細資訊頁面的**標籤**索引標籤上看到此標籤。

```
 "key" : "autoscaled-reader",  "value" : "TRUE"
```

透過自動擴展建立的所有僅供讀取複本執行個體的提升層是最低的優先順序，根據預設，其為 `15`。這表示在容錯移轉期間，優先順序較高的任何複本 (例如手動建立的複本) 將會優先提升。請參閱 [Neptune 資料庫叢集的容錯能力](backup-restore-overview-fault-tolerance.md)。

Neptune 自動擴展是使用 Application Auto Scaling 搭配[目標追蹤擴展政策](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)來實作，該政策會使用 Neptune [`CPUUtilization`](cw-metrics.md#cw-metrics-available) 指標做為預先定義的指標。

## 在 Neptune 無伺服器資料庫叢集中使用自動擴展
<a name="autoscaling-with-serverless"></a>

當需求超過執行個體的容量時，Neptune Serverless 的回應速度會比 Neptune 自動擴展快得多，且其會縱向擴展執行個體而不是新增另一個執行個體。自動擴展旨在匹配工作負載相對穩定的增加或減少，而無伺服器則擅長處理需求的快速激增和抖動。

了解它們的優勢，您可以結合自動擴展和無伺服器，來建立彈性的基礎架構，其會有效地處理工作負載的變更，並在滿足需求，同時將成本降至最低。

若要允許自動擴展與無伺服器一起有效運作，請務必[設定無伺服器叢集的 `maxNCU`](neptune-serverless-capacity-scaling.md#neptune-serverless-capacity-range-max) 設定，使其足夠高到因應需求中的爆增和短暫變更。否則，暫時性變更不會觸發無伺服器擴展，這可能會導致自動擴展啟動了許多不必要的額外執行個體。如果將 `maxNCU` 設定足夠高，無伺服器擴展可以更快速且成本更低地處理這些變更。

## 如何為 Amazon Neptune 啟用自動擴展
<a name="manage-console-autoscaling-enable"></a>

只能使用 AWS CLI為 Neptune 資料庫叢集啟用自動擴展。您無法使用 AWS 管理主控台啟用自動擴展。

此外，以下 Amazon 區域不支援自動擴展：
+ 非洲 (開普敦)：`af-south-1`
+ 中東 (阿拉伯聯合大公國)：`me-central-1`
+ AWS GovCloud （美國東部）： `us-gov-east-1`
+ AWS GovCloud （美國西部）： `us-gov-west-1`

為 Neptune 資料庫叢集啟用自動擴展涉及三個步驟：

### 1. 向 Application Auto Scaling 註冊您的資料庫叢集
<a name="manage-console-autoscaling-register"></a>

為 Neptune 資料庫叢集啟用自動擴展的第一個步驟是，使用 AWS CLI 或其中一個 Application Auto Scaling SDK，向 Application Auto Scaling 註冊叢集。叢集必須已有一個主要執行個體和至少一個僅供讀取複本執行個體：

例如，若要註冊要自動擴展至 1 到 8 個其他複本的叢集，您可以使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)命令，如下所示：

```
aws application-autoscaling register-scalable-target \
  --service-namespace neptune \
  --resource-id cluster:(your DB cluster name) \
  --scalable-dimension neptune:cluster:ReadReplicaCount \
  --min-capacity 1 \
  --max-capacity 8
```

這等同於使用 [https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html) Application Auto Scaling API 操作。

該 AWS CLI `register-scalable-target` 命令會使用下列參數：
+ **`service-namespace`** – 設為 `neptune`。

  此參數等同於 Application Auto Scaling API 中的 `ServiceNamespace` 參數。
+ **`resource-id`** – 將其設定為 Neptune 資料庫叢集的資源識別符。資源類型是 `cluster`，其後跟著一個冒號 ('`:`')，然後是資料庫叢集的名稱。

  此參數等同於 Application Auto Scaling API 中的 `ResourceID` 參數。
+ **`scalable-dimension`** – 在這種情況下，可擴展維度是資料庫叢集中複本執行個體的數量，因此您會將此參數設定為 `neptune:cluster:ReadReplicaCount`。

  此參數等同於 Application Auto Scaling API 中的 `ScalableDimension` 參數。
+ **`min-capacity`** – Application Auto Scaling 要管理的讀取器資料庫複本執行個體數量下限。此值應該設定在 0 到 15 的範圍內，而且必須等於或小於針對 `max-capacity` 中 Neptune 複本數量上限指定的值。資料庫叢集中至少必須有一個讀取器，自動擴展才能運作。

  此參數等同於 Application Auto Scaling API 中的 `MinCapacity` 參數。
+ **`max-capacity`** – 資料庫叢集中讀取器資料庫複本執行個體的數量上限，包括 Application Auto Scaling 管理的預先存在執行個體和新執行個體。此值必須設定在 0 到 15 的範圍內，而且必須等於或大於針對 `min-capacity` 中 Neptune 複本數量下限指定的值。

  `max-capacity` AWS CLI 參數等同於 Application Auto Scaling API 中的 `MaxCapacity` 參數。

當您註冊資料庫叢集時，Application Auto Scaling 會建立 `AWSServiceRoleForApplicationAutoScaling_NeptuneCluster` 服務連結角色。如需詳細資訊，請參閱《Application Auto Scaling 使用者指南》**中的 [Application Auto Scaling 的服務連結角色](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html)。

### 2. 定義要與資料庫叢集搭配使用的自動擴展政策
<a name="manage-console-autoscaling-define-policy"></a>

目標追蹤擴展政策會定義為 JSON 文字物件，此物件也可以儲存在文字檔案中。對於 Neptune，此政策目前只能使用 Neptune [`CPUUtilization`](cw-metrics.md#cw-metrics-available) CloudWatch 指標，做為名為 `NeptuneReaderAverageCPUUtilization` 的預先定義指標。

以下是 Neptune 的範例目標追蹤擴展組態政策。

```
{
  "PredefinedMetricSpecification": { "PredefinedMetricType": "NeptuneReaderAverageCPUUtilization" },
  "TargetValue": 60.0,
  "ScaleOutCooldown" : 600,
  "ScaleInCooldown" : 600
}
```

這裡的 **`TargetValue`** 元素包含 CPU 使用率的百分比，超過此百分比，自動擴展會「橫向擴展」**(也就是新增更多複本)，低於此百分比，自動擴展會「縮減」**(也就是刪除複本)。在此情況下，觸發擴展的目標百分比為 `60.0`%。

**`ScaleInCooldown`** 元素指定在縮減活動完成後到另一個縮減活動開始前的時間長度 (以秒為單位)。預設為 300 秒。此處的值 600 指定在完成一個複本刪除與啟動另一個複本之間至少必須經過十分鐘。

**`ScaleOutCooldown`** 元素指定在橫向擴展活動完成後到另一個橫向擴展活動開始前的時間長度 (以秒為單位)。預設為 300 秒。此處的值 600 指定在完成一個複本新增與啟動另一個複本之間至少必須經過十分鐘。

**`DisableScaleIn`** 元素是一個布林值，如果存在並設定為 `true`，則會完全停用縮減，這表示自動擴展可能會新增複本，但永遠不會刪除任何複本。根據預設，會啟用縮減，且 `DisableScaleIn` 為 `false`。

### 
<a name="manage-console-autoscaling-apply-policy"></a>

向 Application Auto Scaling 註冊您的 Neptune 資料庫叢集，並以文字檔案定義 JSON 擴展政策之後，接著將擴展政策套用到已註冊的資料庫叢集。您可以使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)命令來執行此操作，參數如下所示：

```
aws application-autoscaling put-scaling-policy \
  --policy-name (name of the scaling policy) \
  --policy-type TargetTrackingScaling \
  --resource-id cluster:(name of your Neptune DB cluster) \
  --service-namespace neptune \
  --scalable-dimension neptune:cluster:ReadReplicaCount \
  --target-tracking-scaling-policy-configuration file://(path to the JSON configuration file)
```

在套用了自動擴展政策時，就會在資料庫叢集上啟用自動擴展。

您也可以使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)命令來更新現有的自動調整規模政策。

亦請參閱《Application Auto Scaling API 參考》**中的 [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)。

## 從 Neptune 資料庫叢集移除自動擴展
<a name="manage-console-autoscaling-delete"></a>

若要從 Neptune 資料庫叢集移除自動擴展，請使用 AWS CLI [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html) 和 [deregister-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/deregister-scalable-target.html) 命令。