

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Neptune DB クラスター内のレプリカの数の Auto-scaling
<a name="manage-console-autoscaling"></a>

Neptune 自動スケーリングを使用すると、DB クラスター内の Neptune レプリカの数を自動的に調整して、接続およびワークロードの要件を満たすことができます。自動スケーリングを使用すると、Neptune DB クラスターでワークロードの増加を処理できます。その後、ワークロードが減少すると、自動スケーリングによって不要なレプリカが削除されるため、未使用の容量に対して料金が発生することはありません。

auto-scaling は、すでに 1 つのプライマリライターインスタンスと少なくとも 1 つのリードレプリカインスタンスを持つ Neptune DB クラスターでのみ使用できます ([Amazon Neptune DB クラスターとインスタンス](feature-overview-db-clusters.md) を参照)。また、クラスター内のすべての read-replica インスタンスが使用可能な状態である必要があります。read-replica が使用可能以外の状態にある場合、クラスター内のすべての read-replica が使用可能になるまで、Neptune 自動スケーリングは何もしません。

新しいクラスターを作成する必要がある場合は、[Neptune クラスターを作成する](get-started-create-cluster.md) を参照してください。

AWS CLI を使用して、[スケーリングポリシー](#manage-console-autoscaling-define-policy)を定義して DB クラスターに適用します。AWS CLI を使用して、自動スケーリングポリシーを編集または削除することもできます。ポリシーでは、次の自動スケーリングパラメータを指定します。
+ クラスター内に存在するレプリカの最小数と最大数。
+ レプリカ追加スケーリングアクティビティ間の `ScaleOutCooldown` 間隔、およびレプリカ削除スケーリングアクティビティ間の `ScaleInCooldown` 間隔。
+ CloudWatch メトリクスとスケールアップまたはスケールダウンのメトリクストリガー値。

Neptune 自動スケーリングアクションの頻度は、いくつかの方法で抑えられます。
+ 最初に、自動スケーリングでリーダーを追加または削除するには、`CPUUtilization` 高アラームを少なくとも 3 分間超えるか、低アラームを少なくとも 15 分間超える必要があります。
+ その最初の追加または削除の後、その後の Neptune 自動スケーリングアクションの頻度は、自動スケーリングポリシーの `ScaleOutCooldown` および `ScaleInCooldown` 設定によって制限されます。

使用している CloudWatch メトリクスがポリシーで指定したしきい値に達し、前回の自動スケーリングアクションから `ScaleOutCooldown` 感覚が経過していて、DB クラスターに設定したレプリカの最大数にまだ達していない場合、Neptune 自動スケーリングは DB クラスターのプライマリインスタンスと同じインスタンスタイプを使用して新しいレプリカを作成します。

同様に、メトリクスが指定した下限しきい値に達し、前回の自動スケーリングアクションから `ScaleInCooldown` 間隔が経過し、DB クラスターに指定した最小レプリカ数を超えるレプリカがある場合、Neptune 自動スケーリングはレプリカの 1 つを削除します。

**注記**  
Neptune auto-scaling では、自身が作成したレプリカのみ削除されます。既存のレプリカは削除されません。

[neptune\$1autoscaling\$1config](parameters.md#parameters-db-cluster-parameters-neptune_autoscaling_config) DB クラスターパラメータを使用して、Neptune auto-scaling が作成する新しい read-replica のインスタンスタイプ、それらの read-replica のメンテナンスウィンドウ、および各新しい read-replica に関連付けるタグを指定することもできます。これらの構成設定は、`neptune_autoscaling_config` パラメータの JSON 文字列の値として次のように指定します。

```
"{
  \"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` パラメータで指定されていない 3 つの構成設定のいずれかは、DB クラスターのプライマリライターインスタンスの設定からコピーされます。

[自動スケーリング](https://docs.aws.amazon.com/autoscaling/plans/userguide/)が新しいリードレプリカインスタンスを追加する際、DB インスタンス ID の接頭句に `autoscaled-reader` (例えば、`autoscaled-reader-7r7t7z3lbd-20210828`) を付けます。また、作成するすべてのリードレプリカに、キー `autoscaled-reader` と `TRUE` の値でタグを追加します。このタグは AWS マネジメントコンソール の DB インスタンスの詳細ページの **[Tags]** (タグ) タブで確認できます。

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

auto-scaling によって作成されたすべての read-replica インスタンスのプロモーション層は、`15` デフォルトでは優先順位が最も低くなります。つまり、フェイルオーバー時には、手動で作成されたものなど、優先順位の高いレプリカが最初に昇格されます。「[Neptune DB クラスターの耐障害性](backup-restore-overview-fault-tolerance.md)」を参照してください。

Neptune auto-scaling は、定義済みメトリクスとして Neptune [`CPUUtilization`](cw-metrics.md#cw-metrics-available) CloudWatch メトリクスを使う[ターゲット追跡スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)とともに Application Auto Scaling を使用して実装されています。

## Neptune サーバーレス DB クラスターでの自動スケーリングの使用
<a name="autoscaling-with-serverless"></a>

Neptune サーバーレスは、需要がインスタンスの容量を超えたとき、Neptune 自動スケーリングよりもはるかに迅速に対応し、別のインスタンスを追加する代わりにインスタンスをスケールアップします。自動スケーリングが比較的安定したワークロードの増減に対応するように設計されているのに対して、サーバーレスは需要の急激な増加や変動への対応に優れています。

両者の長所を理解すれば、自動スケーリングとサーバーレスを組み合わせて、ワークロードの変化を効率的に処理し、コストを最小限に抑えながら需要を満たす柔軟なインフラストラクチャを構築できます。

自動スケーリングをサーバーレスと効果的に連携させるには、需要の急増や短期的な変化に対応できるように、[サーバーレスクラスターの `maxNCU` 設定を十分に高く設定する](neptune-serverless-capacity-scaling.md#neptune-serverless-capacity-range-max)ことが重要です。そうしないと、一時的な変更によってサーバーレススケーリングがトリガーされず、自動スケーリングによって不要な追加インスタンスが大量に発生する可能性があります。`maxNCU` を十分に高く設定すると、サーバーレススケーリングはそれらの変更をより迅速かつ低コストで処理できます。

## Amazon Neptune auto-scaling を有効にする方法
<a name="manage-console-autoscaling-enable"></a>

自動スケーリングは、AWS CLI を使用する Neptune DB クラスターでのみ有効にできます。AWS マネジメントコンソール を使用して自動スケーリングを有効にすることはできません。

また、自動スケーリングは、次の Amazon リージョンではサポートされていません。
+ アフリカ (ケープタウン): `af-south-1`
+ 中東 (アラブ首長国連邦): `me-central-1` 
+ AWS GovCloud (米国東部): `us-gov-east-1`
+ AWS GovCloud (米国西部): `us-gov-west-1`

Neptune DB クラスターauto-scaling を有効にするには、次の 3 つのステップが必要です。

### 1. Application Auto Scaling を使用して DB クラスターを登録する
<a name="manage-console-autoscaling-register"></a>

Neptune DB クラスターに対して auto-scaling を有効にする最初のステップは、Application Auto Scaling を使用して、クラスターをApplication Auto Scaling に登録することです。このとき、AWS CLI または Application Auto Scaling SDK の 1 つを使用します。クラスターには、すでに 1 つのプライマリインスタンスと少なくとも 1 つの read-replica インスタンスが必要です。

たとえば、クラスタを 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 DB クラスターのリソース識別子に設定します。リソースタイプは `cluster` で、コロン ('`:`') が、それから DB クラスターの名前が続きます。

  このパラメータは、Application Auto Scaling API にある `ResourceID` パラメータと同じです。
+ **`scalable-dimension`** — この場合のスケーラブルディメンションは、DB クラスター内のレプリカインスタンスの数であるため、このパラメータを `neptune:cluster:ReadReplicaCount` に設定します。

  このパラメータは、Application Auto Scaling API にある `ScalableDimension` パラメータと同じです。
+ ** `min-capacity`** –アプリケーションの Auto Scaling で管理するリーダー DB レプリカの最小数。この値は 0 から 15 までの範囲に設定される必要があり、`max-capacity` の Neptune レプリカの最大数として指定された値以下である必要があります。自動スケーリングが機能するには、DB クラスターに少なくとも 1 つのリーダーが必要です。

  このパラメータは、Application Auto Scaling API にある `MinCapacity` パラメータと同じです。
+ **`max-capacity`** — アプリケーションの自動スケーリングによって管理される既存のインスタンスと新しいインスタンスを含めて、DB クラスター内のリーダー DB レプリカインスタンスの最大数。この値は 0 から 15 までの範囲に設定される必要があり、`min-capacity` の Neptune レプリカの最小数として指定された値以上である必要があります。

  `max-capacity` AWS CLI パラメータは、Application Auto Scaling API にある `MaxCapacity` パラメータと同じです。

DB クラスターを登録すると、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. DB クラスターで使用するAuto Scaling ポリシーを定義します。
<a name="manage-console-autoscaling-define-policy"></a>

ターゲット追跡スケーリングポリシーは、テキストファイルに保存できる JSON テキストオブジェクトとして定義されます。Neptune の場合、現在、このポリシーは `NeptuneReaderAverageCPUUtilization` という名の定義済みのメトリクスとして Neptune [`CPUUtilization`](cw-metrics.md#cw-metrics-available) CloudWatch メトリクスのみ使用できます。

次に、Neptune のターゲット追跡スケーリング設定ポリシーの例を示します。

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

ここで **`TargetValue`** 要素には CPU 使用率のパーセンテージが含まれており、これを超えると自動スケーリングが*スケールアウト* (つまりレプリカを追加) し、これより低いと*スケールイン* (つまりレプリカを削除) します。この場合、スケーリングをトリガーする目標パーセンテージは `60.0`% です。

**`ScaleInCooldown`** 要素はスケールインアクティビティが完了してから別のスケールインが開始されるまでの時間 (秒単位) を指定します。デフォルトは 300 秒です。ここで、値 600 は、あるレプリカの削除が完了してから別のレプリカの開始までの間に 10 分以上経過する必要があることを指定します。

**`ScaleOutCooldown`** 要素はスケールアウトアクティビティが完了してから別のスケールアウトが開始されるまでの時間 (秒単位) を指定します。デフォルトは 300 秒です。ここで、値 600 は、あるレプリカの追加が完了してから別のレプリカの開始までの間に 10 分以上経過する必要があることを指定します。

-**`DisableScaleIn`** 要素はブール値であり、存在しており `true` に設定いれば、スケールインを完全に無効にします。つまり、auto-scaling ではレプリカが追加される可能性がありますが、レプリカは削除されません。デフォルトでは、スケールインは有効になっており、`DisableScaleIn` は `false` です。

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

Neptune DB クラスターを アプリケーションの Auto Scaling に登録し、テキストファイルに JSON スケーリングポリシーを定義した後、登録された DB クラスターにスケーリングポリシーを適用します。そのためには、以下のパラメータを指定して 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)
```

auto-scaling ポリシーを適用すると、DB クラスターで auto-scaling が有効になります。

また、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) コマンドを使用して、既存の auto-scaling ポリシーを更新することもできます。

*Application Auto Scaling API リファレンス*の[PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)もご覧ください。

## Neptune DB クラスターから auto-scaling を削除する
<a name="manage-console-autoscaling-delete"></a>

Neptune DB クラスターから auto-scaling を削除するには、AWS CLI [削除スケーリングポリシー](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html)および[登録解除スケーラブルターゲット](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/deregister-scalable-target.html)コマンドを使用します。