

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

# Scaling (スケーリング)
<a name="scaling"></a>

アプリケーションが処理しなければならないデータの量は、一定ではありません。業務の拡大またはまたは通常の変動が発生すると、需要は増加します。アプリケーションを自己管理する場合は、需要のピークに合わせて十分なハードウェアをプロビジョニングする必要がありますが、それにより費用が高くなります。MemoryDB を使用して、現在の需要を満たすためにスケールすることができます。支払いは使用した分のみとなります。

以下は、実行するスケーリングアクションに適したトピックの検索に役立ちます。


**MemoryDB のスケーリング**  

| Action | MemoryDB | 
| --- | --- | 
|  スケールアウト  |  [MemoryDB のオンラインリシャーディング](cluster-resharding-online.md)  | 
|  ノードタイプの変更  |  [ノードタイプの変更によるオンライン垂直スケーリング](cluster-vertical-scaling.md)  | 
|  シャード数の変更  |  [MemoryDB クラスターのスケーリング](scaling-cluster.md)  | 

# MemoryDB クラスターのスケーリング
<a name="scaling-cluster"></a>

クラスターの需要の変化に応じて MemoryDB のクラスター内のシャード数を変更することで、パフォーマンスを向上させたりコストを削減したりできます。そのために、スケーリングプロセス中でもクラスターがリクエストを処理し続けることができる、オンライン水平スケーリングの使用をお勧めします。

クラスターを再スケーリングするかどうかの判断条件には、次のようなものがあります。
+ **メモリプレッシャー:**

  クラスター内のノードがメモリプレッシャーを受けている場合、より多くのリソースがより効率よくデータを保存してリクエストを処理するようにスケールアウトできます。

  ノードがメモリプレッシャーを受けているかどうかは、FreeableMemory、SwapUsage や BytesUsedForMemoryDB といったメトリクスをモニタリングすることで判断できます。
+ **CPU やネットワークボトルネック:**

  レイテンシーやスループットがクラスターの問題となっている場合、問題解決のためにスケールアウトが必要な場合があります。

  *CPUUtilization*、*NetworkBytesIn*、*NetworkBytesOut*、*CurrConnections*、および *NewConnections* といったメトリクスをモニタリングすることで、レイテンシーとスループットのレベルを監視できます。
+ **クラスターのサイズが大きすぎます:**

  現在のクラスターの需要からすると、スケールインを行ってもパフォーマンスに影響せず、コストも削減できます。

  FreeableMemory、SwapUsage、BytesUsedForMemoryDB、CPUUtilization、NetworkBytesIn、NetworkBytesOut、CurrConnections および NewConnections といったメトリクスを使用して、安全にスケーリング可能かどうかを判断するためにクラスターの使用を監視できます。

**パフォーマンスに対するスケーリングの影響**  
オフライン処理を使用してスケーリングすると、処理の大部分でクラスターがオフラインになるため、リクエストに対応できなくなります。オンラインメソッドを使用してスケーリングすると、スケーリングは大量の演算を行うオペレーションであるため、パフォーマンスがある程度低下します。その場合でも、クラスターはスケーリングオペレーション全体を通してリクエストに対応しつづけます。エクスペリエンスがどれほど低下するかは、通常の CPU 使用率とデータによって異なります。

MemoryDB クラスターをスケーリングするには、2 つの方法として水平スケーリングと垂直スケーリングがあります。
+ 水平スケーリングでは、シャードを追加または削除することで、クラスター内のシャードの数を変更できます。オンラインのリシャーディングプロセスでは、クラスターが着信リクエストの処理を継続しながら、スケールイン/スケールアウトが可能です。
+ 垂直スケーリング - ノードタイプを変更することで、クラスターのサイズを変更します。オンラインの垂直スケーリングでは、クラスターが着信リクエストの処理を継続しながら、スケールアップ/ダウンが可能です。

スケールインまたはスケールダウンによってクラスターのサイズとメモリ容量を減らす場合は、新しい構成にデータとエンジンのオーバーヘッド用の十分なメモリがあることを確認します。

# MemoryDB のオフラインリシャーディング
<a name="cluster-resharding-offline"></a>

オフラインのシャード再構成の主な利点は、単にクラスターにシャードを追加または削除する以上のことが行えることです。オフラインでリシャーディングすると、クラスター内のシャード数の変更に加えて、次のことを実行できます。
+ クラスターのノードタイプを変更します。
+ 新しいエンジンバージョンに更新します。

**注記**  
オフラインリシャーディングは、データ階層化が有効になっているクラスターではサポートされません。詳細については、「」を参照してください[データ階層化](data-tiering.md)。

オフラインのシャード再構成の主な欠点は、クラスターが復元処理の開始からオフラインになり、アプリケーションのエンドポイントを更新するまで継続することです。クラスターがオフラインになる時間の長さは、クラスターのデータ量によって変わります。

**オフラインでシャード MemoryDB クラスターを再構成するには**

1. 既存の MemoryDB クラスターの手動スナップショットを作成します。詳細については、「[手動スナップショットの作成](snapshots-manual.md)」を参照してください。

1. スナップショットから復元して新しいクラスターを作成します。詳細については、「[スナップショットからの復元](snapshots-restoring.md)」を参照してください。

1. アプリケーション内のエンドポイントを、新しいクラスターのエンドポイントに更新します。詳細については、「[接続エンドポイントの検索](endpoints.md)」を参照してください。

# MemoryDB のオンラインリシャーディング
<a name="cluster-resharding-online"></a>

MemoryDB でオンラインリシャーディングを使用して、ダウンタイムなしで MemoryDB を動的にスケールできます。このアプローチでは、クラスターはスケーリングや再分散が処理中でもリクエストに対応し続けることができます。

以下を行うことができます。
+ **スケールアウト** — MemoryDB クラスターにシャードを追加して、読み取りと書き込みの容量を増やします。

  クラスターに 1 つ以上のシャードを追加する場合、新しい各シャードのノード数は既存の最小のシャードのノード数と同じになります。
+ **スケールイン**読み込みおよび書き込みキャパシティーを減らして、MemoryDB クラスターからシャードを削除することでコストを削減します。

現在、MemoryDB のオンラインリシャーディングには、次の制限が適用されます。
+ スロットまたはキースペース、および大きなアイテムには制限があります。

  シャード内のキーのいずれかに大きなアイテムが含まれる場合、スケールアウトの際にそのキーは新しいシャードに移行されません。この機能により、アンバランスなシャードになる可能性があります。

  シャード内のキーのいずれかに大きなアイテム (シリアル化後 256 MB より大きいアイテム) が含まれる場合、シャードはスケールイン時に削除されません。この機能により、一部のシャードは削除されない可能性があります。
+ スケールアウトの際、新しいシャードのノード数は、既存のシャードのノード数と等しくなります。

詳細については、「[ベストプラクティス: オンラインクラスターのサイズ変更](best-practices-online-resharding.md)」を参照してください。

 AWS マネジメントコンソール、 AWS CLI、MemoryDB API を使用して、MemoryDB クラスターを水平にスケールできます。

## オンラインリシャーディングによるシャードの追加
<a name="cluster-resharding-online-add"></a>

MemoryDB クラスターにシャードを追加するには AWS マネジメントコンソール、、 AWS CLI、または MemoryDB API を使用します。

### シャードの追加 (コンソール)
<a name="cluster-resharding-online-add-console"></a>

を使用して AWS マネジメントコンソール 、MemoryDB クラスターに 1 つ以上のシャードを追加できます。以下の手順では、このプロセスについて説明します。

****

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) で MemoryDB コンソールを開きます。

1. クラスターの一覧から、シャードを追加するクラスターの名前を選択します。

1. **[シャードとノード]** タブで、**[シャードの追加/削除]** を選択します

1. **[新しいシャード数]** に、必要なシャードの数を入力します。

1. **[確認]** を選択して変更を保存するか、**[キャンセル]** を選択して破棄します。

### シャードの追加AWS CLI
<a name="cluster-resharding-online-add-cli"></a>

以下のプロセスでは、 AWS CLIを使用してシャードを追加し、MemoryDB クラスターでシャードの再構成を行う方法について説明します。

`update-cluster` を使って以下のパラメータを使用します。

**パラメータ**
+ `--cluster-name` – 必須。シャードの再構成オペレーションを実行するクラスター (クラスター) を指定します。
+ `--shard-configuration` – 必須。シャードの数を設定できます。
  + `ShardCount` – このプロパティを設定して、必要なシャードの数を指定します。

**Example**  
次の例では、`my-cluster` クラスター内のシャードの数を 2 に変更しています。  
Linux、macOS、Unix の場合:  

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --shard-configuration \
        ShardCount=2
```
Windows の場合:  

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --shard-configuration ^
        ShardCount=2
```

以下の JSON コードを返します。

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "updating",
        "NumberOfShards": 2,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
            "Port": 6379
        },
        "NodeType": "db.r6g.large",
        "EngineVersion": "6.2",
        "EnginePatchVersion": "6.2.6",
        "ParameterGroupName": "default.memorydb-redis6",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",
        "DataTiering": "false",
        "AutoMinorVersionUpgrade": true
    }
}
```

クラスターのステータスが*更新中*から*利用可能*に変わったら、更新されたクラスターの詳細を表示するには、次のコマンドを使用します。

Linux、macOS、Unix の場合:

```
aws memorydb describe-clusters \
    --cluster-name my-cluster
    --show-shard-details
```

Windows の場合:

```
aws memorydb describe-clusters ^
    --cluster-name my-cluster
    --show-shard-details
```

以下のようなJSONレスポンスが返される：

```
{
    "Clusters": [
        {
            "Name": "my-cluster",
            "Status": "available",
            "NumberOfShards": 2,
            "Shards": [
                {
                    "Name": "0001",
                    "Status": "available",
                    "Slots": "0-8191",
                    "Nodes": [
                        {
                            "Name": "my-cluster-0001-001",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1a",
                            "CreateTime": "2021-08-21T20:22:12.405000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        },
                        {
                            "Name": "my-cluster-0001-002",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1b",
                            "CreateTime": "2021-08-21T20:22:12.405000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        }
                    ],
                    "NumberOfNodes": 2
                },
                {
                    "Name": "0002",
                    "Status": "available",
                    "Slots": "8192-16383",
                    "Nodes": [
                        {
                            "Name": "my-cluster-0002-001",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1b",
                            "CreateTime": "2021-08-22T14:26:18.693000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        },
                        {
                            "Name": "my-cluster-0002-002",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1a",
                            "CreateTime": "2021-08-22T14:26:18.765000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        }
                    ],
                    "NumberOfNodes": 2
                }
            ],
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                "Port": 6379
            },
            "NodeType": "db.r6g.large",
            "EngineVersion": "6.2",
            "EnginePatchVersion": "6.2.6",
            "ParameterGroupName": "default.memorydb-redis6",
            "ParameterGroupStatus": "in-sync",
            "SubnetGroupName": "my-sg",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "wed:03:00-wed:04:00",
            "SnapshotWindow": "04:30-05:30",
            "ACLName": "my-acl",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

詳細については、 AWS CLI 「 コマンドリファレンス」の[「update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)」を参照してください。

### シャードの追加（MemoryDB API）
<a name="cluster-resharding-online-add-api"></a>

`UpdateCluster` オペレーションを使うことで、MemoryDB API を使用して MemoryDB クラスターのシャードをオンラインで再構成できます。

`UpdateCluster` を使って以下のパラメータを使用します。

**パラメータ**
+ `ClusterName` – 必須。シャードの再構成オペレーションを実行するクラスターを指定します。
+ `ShardConfiguration` – 必須。シャードの数を設定できます。
  + `ShardCount` – このプロパティを設定して、必要なシャードの数を指定します。

詳細については、「[クラスターの更新](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)」を参照してください。

## オンラインリシャーディングによるシャードの削除
<a name="cluster-resharding-online-remove"></a>

MemoryDB クラスターからシャードを削除するには AWS マネジメントコンソール、、 AWS CLI、または MemoryDB API を使用します。

### シャードの削除 (コンソール)
<a name="cluster-resharding-online-remove-console"></a>

以下のプロセスでは、 AWS マネジメントコンソールを使用してシャードを削除し、MemoryDB クラスターでシャードの再構成を行う方法について説明します。

**重要**  
クラスターからシャードを削除する前に、MemoryDB はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、シャードは要求に応じてクラスターから削除されます。データが残りのシャードに収まらない場合、プロセスは終了し、クラスターはリクエスト前と同じシャード設定のままになります。

を使用して AWS マネジメントコンソール 、MemoryDB クラスターから 1 つ以上のシャードを削除できます。クラスター内のシャードをすべて削除することはできません。代わりに、クラスターを削除する必要があります。詳細については、「[ステップ 5: クラスターを削除する](getting-started.md#clusters.delete)」を参照してください。次の手順では、1 つ以上のシャードを削除する手順を説明します。

****

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) で MemoryDB コンソールを開きます。

1. クラスターの一覧から、シャードを削除するクラスターの名前を選択します。

1. **[シャードとノード]** タブで、**[シャードの追加/削除]** を選択します

1. **[新しいシャード数]** に、必要なシャードの数を入力します (最低 1 つ)。

1. **[確認]** を選択して変更を保存するか、**[キャンセル]** を選択して破棄します。

### シャードの削除AWS CLI
<a name="cluster-resharding-online-remove-cli"></a>

以下のプロセスでは、 AWS CLIを使用してシャードを削除し、MemoryDB クラスターでシャードの再構成を行う方法について説明します。

**重要**  
クラスターからシャードを削除する前に、MemoryDB はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定されたシャードはリクエストに応じてクラスターから削除され、キースペースは残りのシャードにマッピングされます。データが残りのシャードに収まらない場合、プロセスは終了し、クラスターはリクエスト前と同じシャード設定のままになります。

を使用して AWS CLI 、MemoryDB クラスターから 1 つ以上のシャードを削除できます。クラスター内のシャードをすべて削除することはできません。代わりに、クラスターを削除する必要があります。詳細については、「[ステップ 5: クラスターを削除する](getting-started.md#clusters.delete)」を参照してください。

`update-cluster` を使って以下のパラメータを使用します。

**パラメータ**
+ `--cluster-name` – 必須。シャードの再構成オペレーションを実行するクラスター (クラスター) を指定します。
+ `--shard-configuration` – 必須。`ShardCount` プロパティを使用してシャードの数を設定できます。

  `ShardCount` – このプロパティを設定して、必要なシャードの数を指定します。

**Example**  
次の例では、`my-cluster` クラスター内のシャードの数を 2 に変更しています。  
Linux、macOS、Unix の場合:  

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --shard-configuration \
        ShardCount=2
```
Windows の場合:  

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --shard-configuration ^
        ShardCount=2
```

以下の JSON コードを返します。

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "updating",
        "NumberOfShards": 2,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
            "Port": 6379
        },
        "NodeType": "db.r6g.large",
        "EngineVersion": "6.2",
        "EnginePatchVersion": "6.2.6",
        "ParameterGroupName": "default.memorydb-redis6",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",
        "DataTiering": "false",
        "AutoMinorVersionUpgrade": true
    }
}
```

クラスターのステータスが*更新中*から*利用可能*に変わったら、更新されたクラスターの詳細を表示するには、次のコマンドを使用します。

Linux、macOS、Unix の場合:

```
aws memorydb describe-clusters \
    --cluster-name my-cluster
    --show-shard-details
```

Windows の場合:

```
aws memorydb describe-clusters ^
    --cluster-name my-cluster
    --show-shard-details
```

以下のようなJSONレスポンスが返される：

```
{
    "Clusters": [
        {
            "Name": "my-cluster",
            "Status": "available",
            "NumberOfShards": 2,
            "Shards": [
                {
                    "Name": "0001",
                    "Status": "available",
                    "Slots": "0-8191",
                    "Nodes": [
                        {
                            "Name": "my-cluster-0001-001",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1a",
                            "CreateTime": "2021-08-21T20:22:12.405000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        },
                        {
                            "Name": "my-cluster-0001-002",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1b",
                            "CreateTime": "2021-08-21T20:22:12.405000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        }
                    ],
                    "NumberOfNodes": 2
                },
                {
                    "Name": "0002",
                    "Status": "available",
                    "Slots": "8192-16383",
                    "Nodes": [
                        {
                            "Name": "my-cluster-0002-001",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1b",
                            "CreateTime": "2021-08-22T14:26:18.693000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        },
                        {
                            "Name": "my-cluster-0002-002",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1a",
                            "CreateTime": "2021-08-22T14:26:18.765000-07:00",
                            "Endpoint": {
                                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        }
                    ],
                    "NumberOfNodes": 2
                }
            ],
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                "Port": 6379
            },
            "NodeType": "db.r6g.large",
            "EngineVersion": "6.2",
            "EnginePatchVersion": "6.2.6",
            "ParameterGroupName": "default.memorydb-redis6",
            "ParameterGroupStatus": "in-sync",
            "SubnetGroupName": "my-sg",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "wed:03:00-wed:04:00",
            "SnapshotWindow": "04:30-05:30",
            "ACLName": "my-acl",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

詳細については、 AWS CLI 「 コマンドリファレンス」の[「update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)」を参照してください。

### シャードの削除（MemoryDB API）
<a name="cluster-resharding-online-remove-api"></a>

`UpdateCluster` オペレーションを使うことで、MemoryDB API を使用して MemoryDB クラスターのシャードをオンラインで再構成できます。

以下のプロセスでは、MemoryDB API を使用してシャードを削除し、 MemoryDBクラスターでシャードの再構成を行う方法について説明します。

**重要**  
クラスターからシャードを削除する前に、MemoryDB はすべてのデータが残りのシャードに収まるようにします。データが収まる場合、指定されたシャードはリクエストに応じてクラスターから削除され、キースペースは残りのシャードにマッピングされます。データが残りのシャードに収まらない場合、プロセスは終了し、クラスターはリクエスト前と同じシャード設定のままになります。

MemoryDB API を使用して、MemoryDB クラスターから 1 つ以上のシャードを削除できます。クラスター内のシャードをすべて削除することはできません。代わりに、クラスターを削除する必要があります。詳細については、「[ステップ 5: クラスターを削除する](getting-started.md#clusters.delete)」を参照してください。

`UpdateCluster` を使って以下のパラメータを使用します。

**パラメータ**
+ `ClusterName` – 必須。シャードの再構成オペレーションを実行するクラスター (クラスター) を指定します。
+ `ShardConfiguration` – 必須。`ShardCount` プロパティを使用してシャードの数を設定できます。

  `ShardCount` – このプロパティを設定して、必要なシャードの数を指定します。

# ノードタイプの変更によるオンライン垂直スケーリング
<a name="cluster-vertical-scaling"></a>

MemoryDB でオンラインの垂直スケーリングを使用すると、最小限のダウンタイムでクラスターを動的にスケーリングできます。これにより、クラスターはスケーリング中であってもリクエストを処理できます。

**注記**  
データ階層化を使用するクラスター (r6gd ノードタイプを使用するクラスターなど) と、データ階層化を使用しないクラスター (r6g ノードタイプを使用するクラスターなど) 間のスケーリングはサポートされていません。詳細については、「[データ階層化](data-tiering.md)」を参照してください。

以下を行うことができます。
+ **スケールアップ** – より大きいノードタイプを使用するように Redis クラスターのノードタイプを調整して、読み取りおよび書き込み容量を増やします。

  MemoryDB は、オンラインのままリクエストを処理しながら、クラスターのサイズを動的に変更します。
+ [**スケールダウン**] – より小さいノードを使用するようにノードタイプを調整することで、読み取りおよび書き込み容量を減らします。スケールダウンする 同様に、MemoryDB は、オンラインのままリクエストを処理しながら、クラスターのサイズを動的に変更します。この場合、ノードのサイズを小さくすることでコストを削減します。

**注記**  
スケールアップおよびスケールダウンプロセスは、新しく選択されたノードタイプでクラスターを作成し、新しいノードを以前のノードと同期させることに依存します。スケールアップ/ダウンフローをスムーズにするには、以下の手順を実行します。  
垂直スケーリングプロセスは、完全にオンラインのままになるように設計されており、古いノードと新しいノードとの間でデータを同期させることに依存します。データトラフィックが最小になると予想される時間帯にスケールアップ/ダウンを開始することをお勧めします。
可能であれば、ステージング環境でのスケーリング中にアプリケーションの動作をテストします。

# オンラインスケールアップ
<a name="cluster-vertical-scaling-scaling-up"></a>

**Topics**
+ [MemoryDB クラスターのスケールアップ (コンソール)](#cluster-vertical-scaling-console)
+ [MemoryDB クラスターのスケールアップ (AWS CLI)](#scaling.scaleUp.cli)
+ [MemoryDB クラスターのスケールアップ (MemoryDB API)](#verticalscaling.scaleup.api)

## MemoryDB クラスターのスケールアップ (コンソール)
<a name="cluster-vertical-scaling-console"></a>

以下の手順では、 AWS マネジメントコンソールを使用して MemoryDBクラスターをスケールアップする方法について説明しています。このプロセス中、MemoryDB クラスターは最小限のダウンタイムでリクエストを処理し続けます。

**クラスターをスケールアップするには (コンソール)**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) で MemoryDB コンソールを開きます。

1. クラスターのリストから、クラスターを選択します。

1. **アクション** を選択してから、**変更** を選択します。

1. **[クラスターの変更]** ダイアログで以下を行います。

   1. **Node type** リストから、スケーリングするノードタイプを選択します。スケールアップするには、既存のノードよりも大きいノードタイプを選択します。

1. **変更の保存** をクリックします。

   クラスターのステータスが*修正中*に変わります。ステータスが 使用可能** に変わると、変更は完了し、新しいクラスターの使用を開始できます。

## MemoryDB クラスターのスケールアップ (AWS CLI)
<a name="scaling.scaleUp.cli"></a>

以下の手順では、 AWS CLIを使用して MemoryDBクラスターをスケールアップする方法について説明しています。このプロセス中、MemoryDB クラスターは最小限のダウンタイムでリクエストを処理し続けます。

**MemoryDB クラスターをスケールアップするには (AWS CLI)**

1. 次のパラメータを指定して `list-allowed-node-type-updates` コマンドを実行して AWS CLI 、スケールアップできるノードタイプを決定します。

   Linux、macOS、Unix の場合:

   ```
   aws memorydb list-allowed-node-type-updates \
   	    --cluster-name my-cluster-name
   ```

   Windows の場合:

   ```
   aws memorydb list-allowed-node-type-updates ^
   	    --cluster-name my-cluster-name
   ```

   上のコマンドによる出力は以下のような JSON 形式になります。

   ```
   {
   	    "ScaleUpNodeTypes": [
   	        "db.r6g.2xlarge", 
   	        "db.r6g.large"	        
   	    ],
   	    "ScaleDownNodeTypes": [
   	        "db.r6g.large"	        
   	    ], 
   }
   ```

   詳細については、「AWS CLI リファレンス」の「[リストで許可されるノードタイプの更新](https://docs.aws.amazon.com/cli/latest/reference/memorydb/list-allowed-node-type-updates.html)」を参照してください。

1. コマンドと以下のパラメータを使用して AWS CLI `update-cluster`、新しいより大きなノードタイプにスケールアップするようにクラスターを変更します。
   + `--cluster-name` – スケールアップするクラスターの名前。
   + `--node-type` – クラスターのスケーリング後の新しいノードタイプ。この値は、ステップ 1 で `list-allowed-node-type-updates` コマンドによって返されるノードタイプのいずれかであることが必要です。

   Linux、macOS、Unix の場合:

   ```
   aws memorydb update-cluster  \
   	--cluster-name my-cluster \
   	--node-type db.r6g.2xlarge
   ```

   Windows の場合:

   ```
   aws memorydb update-cluster ^
   	    --cluster-name my-cluster ^
   	    --node-type db.r6g.2xlarge ^
   ```

   詳細については、「[update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)」を参照してください。

## MemoryDB クラスターのスケールアップ (MemoryDB API)
<a name="verticalscaling.scaleup.api"></a>

以下のプロセスでは、MemoryDB API を使用して、キャッシュクラスターをその現在のノードタイプから新しいより大きいノードタイプにスケーリングします。このプロセスでは、MemoryDB は DNS エントリを更新し、新しいノードを参照します。クラスターがオンラインのままで受信リクエストを処理している間に、自動フェイルオーバー対応クラスターをスケーリングできます。

より大きいノードタイプへのスケールアップにかかる時間はノードタイプと現在のクラスターのデータ量によって異なります。

**MemoryDB クラスターをスケールアップするには (MemoryDB API)**

1. 以下のパラメータを指定して MemoryDB API `ListAllowedNodeTypeUpdates` アクションを使用することで、スケールアップできるノードタイプを調べます。
   + `ClusterName` - クラスターの名前。すべてのクラスターではなく特定のクラスターの定義を表示するには、このパラメータを使用します。

   ```
   https://memory-db.us-east-1.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeUpdates
   	   &ClusterName=MyCluster
   	   &Version=2021-01-01
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20210802T192317Z
   	   &X-Amz-Credential=<credential>
   ```

   詳細については、「*MemoryDB API リファレンス*」の「[ListAllowedNodeTypeUpdates](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_ListAllowedNodeTypeUpdates.html)」を参照してください。

1. 以下のパラメータを指定して `UpdateCluster`MemoryDB API アクションを使用することで、現在のクラスターを新しいノードタイプにスケールアップします。
   + `ClusterName` - クラスターの名前。
   + `NodeType` – このクラスターの新しいより大きいノードタイプ。この値は、手順 1 で `ListAllowedNodeTypeUpdates` アクションによって返されるインスタンスタイプのいずれかであることが必要です。

   ```
   https://memory-db.us-east-1.amazonaws.com/
   	   ?Action=UpdateCluster	  
   	   &NodeType=db.r6g.2xlarge
   	   &ClusterName=myCluster
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20210801T220302Z
   	   &Version=2021-01-01
   	   &X-Amz-Algorithm=Amazon4-HMAC-SHA256
   	   &X-Amz-Date=20210801T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20210801T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```

   詳細については、「[クラスターの更新](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)」を参照してください。

# オンラインスケールダウン
<a name="cluster-vertical-scaling-scaling-down"></a>

**Topics**
+ [MemoryDB クラスターのスケールダウン (コンソール)](#cluster-vertical-scaling-down-console)
+ [MemoryDB クラスターのスケールダウン (AWS CLI)](#scaling.scaledown.cli)
+ [MemoryDB クラスターのスケールダウン (MemoryDB API)](#scaling.vertical.scaledown.api)

## MemoryDB クラスターのスケールダウン (コンソール)
<a name="cluster-vertical-scaling-down-console"></a>

以下の手順では、 AWS マネジメントコンソールを使用して MemoryDB クラスターをスケールダウンする方法について説明しています。このプロセス中、MemoryDB クラスターは最小限のダウンタイムでリクエストを処理し続けます。

**MemoryDB クラスターをスケールダウンするには (コンソール)**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/memorydb/](https://console.aws.amazon.com/memorydb/) で MemoryDB コンソールを開きます。

1. クラスターのリストから、希望するクラスターを選択します。

1. **アクション** を選択してから、**変更** を選択します。

1. **[クラスターの変更]** ダイアログで以下を行います。

   1. **Node type** リストから、スケーリングするノードタイプを選択します。スケールダウンするには、既存のノードより小さいノードタイプを選択します。すべてのノードタイプがスケールダウンできるわけではないことに注意してください。

1. **変更の保存**をクリックします。

   クラスターのステータスが*修正中*に変わります。ステータスが 使用可能** に変わると、変更は完了し、新しいクラスターの使用を開始できます。

## MemoryDB クラスターのスケールダウン (AWS CLI)
<a name="scaling.scaledown.cli"></a>

以下の手順では、 AWS CLIを使用して MemoryDB クラスターをスケールダウンする方法について説明しています。このプロセス中、MemoryDB クラスターは最小限のダウンタイムでリクエストを処理し続けます。

**MemoryDB クラスターをスケールダウンするには (AWS CLI)**

1. 次のパラメータを指定して `list-allowed-node-type-updates` コマンドを実行して AWS CLI 、スケールダウンできるノードタイプを決定します。

   Linux、macOS、Unix の場合:

   ```
   aws memorydb list-allowed-node-type-updates \
   	    --cluster-name my-cluster-name
   ```

   Windows の場合:

   ```
   aws memorydb list-allowed-node-type-updates ^
   	    --cluster-name my-cluster-name
   ```

   上のコマンドによる出力は以下のような JSON 形式になります。

   ```
   {
   	    "ScaleUpNodeTypes": [
   	        "db.r6g.2xlarge", 
   	        "db.r6g.large"	        
   	    ],
   	    "ScaleDownNodeTypes": [
   	        "db.r6g.large"	        
   	    ], 
   }
   ```

   詳細については、「[リスト許可ノードタイプ更新](https://docs.aws.amazon.com/cli/latest/reference/memorydb/list-allowed-node-type-updates.html)」を参照してください。

1. 以下のパラメータを指定して `update-cluster` コマンドを使用することで、クラスターを変更して、新しいより小さなノードタイプにスケールダウンします。
   + `--cluster-name` – スケールダウンするクラスターの名前。
   + `--node-type` – クラスターのスケーリング後の新しいノードタイプ。この値は、ステップ 1 で `list-allowed-node-type-updates` コマンドによって返されるノードタイプのいずれかであることが必要です。

   Linux、macOS、Unix の場合:

   ```
   aws memorydb update-cluster  \
   	    --cluster-name my-cluster \
   	    --node-type db.r6g.large
   ```

   Windows の場合:

   ```
   aws memorydb update-cluster ^
   	    --cluster-name my-cluster ^
   	    --node-type db.r6g.large
   ```

   詳細については、「[update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)」を参照してください。

## MemoryDB クラスターのスケールダウン (MemoryDB API)
<a name="scaling.vertical.scaledown.api"></a>

以下のプロセスでは、MemoryDB API を使用して、クラスターを現在のノードタイプから新しいより小さなノードタイプにスケーリングします。このプロセス中、MemoryDB クラスターは最小限のダウンタイムでリクエストを処理し続けます。

より小さいノードタイプへのスケールダウンにかかる時間はノードタイプと現在のクラスターのデータ量によって異なります。

**スケールダウン (MemoryDB API)**

1. 以下のパラメータを指定した ‭[‬‬ListAllowedNodeTypeUpdates‭‬‬](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_ListAllowedNodeTypeUpdates.html) APIを使用して、どのノードタイプにスケールダウンできるか決定します。‬‬‬‬‬
   + `ClusterName` - クラスターの名前。すべてのクラスターではなく特定のクラスターの定義を表示するには、このパラメータを使用します。

   ```
   https://memory-db.us-east-1.amazonaws.com/
   	   ?Action=ListAllowedNodeTypeUpdates
   	   &ClusterName=MyCluster
   	   &Version=2021-01-01
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20210802T192317Z
   	   &X-Amz-Credential=<credential>
   ```

1. 以下のパラメータを指定した ‭[UpdateCluster‭](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html) APIを使用して、現在のクラスターを新しいノードタイプにスケールダウンします。‬‬‬‬‬‬
   + `ClusterName` - クラスターの名前。
   + `NodeType` – このクラスターの新しいより小さいノードタイプ。この値は、手順 1 で `ListAllowedNodeTypeUpdates` アクションによって返されるインスタンスタイプのいずれかであることが必要です。

   ```
   https://memory-db.us-east-1.amazonaws.com/
   	   ?Action=UpdateCluster	   
   	   &NodeType=db.r6g.2xlarge
   	   &ClusterName=myReplGroup
   	   &SignatureVersion=4
   	   &SignatureMethod=HmacSHA256
   	   &Timestamp=20210801T220302Z
   	   &Version=2021-01-01
   	   &X-Amz-Algorithm=Amazon4-HMAC-SHA256
   	   &X-Amz-Date=20210801T220302Z
   	   &X-Amz-SignedHeaders=Host
   	   &X-Amz-Expires=20210801T220302Z
   	   &X-Amz-Credential=<credential>
   	   &X-Amz-Signature=<signature>
   ```