

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

# Memcached クラスターのオンデマンドスケーリング
<a name="Scaling-self-designed.mem-heading"></a>

ElastiCache for Memcached は、Memcached をAWSクラウドにデプロイ、運用、垂直スケーリングするフルマネージドのインメモリキャッシュサービスを提供します。

**オンデマンドの垂直スケーリング**

垂直スケーリングにより、ElastiCache for Memcached は、データベースの負荷を軽減して動的アプリケーションを高速化するために広く使用されている、高性能の分散メモリキャッシュシステムを提供します。データやオブジェクトは RAM に保存されるため、外部データソースから読み取る必要がなくなります。

垂直スケーリングは、既存のノードベースのクラスターにも新しいクラスターにも適用できます。そのため、リソース割り当てに柔軟性が生まれ、ユーザーはクラスターアーキテクチャを変更せずにワークロードの変化に効率的に適応できるようになります。このスケーリング機能では、需要の高い期間にはキャッシュ容量を増やし、需要の低い期間にはスケールダウンしてコストを最適化するため、パフォーマンスが向上します。その結果、オペレーションが簡素化され、リソース要件の変化に合わせて新しいクラスターを作成する必要がなくなり、トラフィックの変動への迅速な対応が可能になります。全体として、ノードベースの Memcached クラスターの垂直スケーリングは、コスト効率とリソース使用率の向上に役立ちます。また、ユーザーが Memcached インスタンスタイプを変更することもできます。こうしたメリットにより、キャッシュインフラストラクチャを実際のアプリケーションのニーズに合わせやすくなります。

**注記**  
ノードタイプの変更は、エンジンバージョンが 1.5 以降のノードベースの Memcached クラスターでのみ行うことができます。
垂直スケーリングを使用するには、自動検出を有効にする必要があります。

## ノードベースの Memcached クラスターのオンデマンド垂直スケーリングを設定する
<a name="Scaling.Memcached.automatically.setup.cli"></a>

`scale-config` を使用して、Memcached のオンデマンド垂直スケーリングを設定できます。scale-config には 2 つのパラメータがあります。

1. **ScaleIntervalMinutes:** Memcached アップグレードプロセス中のスケーリングバッチ間の時間 (分単位)

1. **ScalePercentage:** Memcached アップグレードプロセス中に同時にスケールするノードの割合

**CLI を使用して既存の Memcached ノードタイプを垂直スケーリングが可能なキャッシュに変換する**

既存のノードベースの Memcached クラスターを垂直スケーリングが可能なキャッシュに変換するには、CLI で `elasticache modify-cache-cluster` を使用します。

```
aws elasticache modify-cache-cluster \
    --cache-cluster-id <your-cluster-id> \
    --cache-node-type <new-node-type> \
    --scale-config <scale-config> \ 
    --apply-immediately
```

**CLI を使用して垂直スケーリングを設定する**

CLI を使用してノードベースの Memcached クラスターの垂直スケーリングを設定するには、`elasticache modify-cache-cluster` を使用し、`scale-config` とそのパラメータである `ScalePercentage` および `ScaleIntervalMinutes` を指定します。
+ **scale-interval-minutes:** スケーリングバッチ間の時間 (分単位) を定義します。この設定の範囲は 2～30 分です。値を指定しない場合、デフォルト値の 5 分が適用されます。
+ **scale-percentage:** 各バッチで同時にスケールするノードの割合を指定します。この設定の範囲は 10～100 です。この設定は除算時に切り上げられるため、例えば結果が 49.5 の場合は、50 という設定が適用されます。値を指定しない場合、デフォルト値の 20 が適用されます。

これらの設定オプションを使用すると、特定のニーズに合わせてスケーリングプロセスをファインチューニングし、クラスターの中断の最小化とスケーリング速度の最適化のバランスをとることができます。scale-config パラメータは Memcached エンジンタイプにのみ適用され、他のキャッシュエンジンでは無視されるため、他のクラスターで使用している既存の API との下位互換性が確保されます。

**API コール**

```
aws elasticache modify-cache-cluster \
    --cache-cluster-id <your-cluster-id> \
    --cache-node-type <new-node-type> \
    --scale-config '{
            "ScalePercentage": 30,
            "ScaleIntervalMinutes": 2
          }'
    --apply-immediately
```

**結果:**

クラスター ID と保留中の変更を返します。

```
{
    "CacheCluster": {
        "CacheNodeType": "old_insance_type",
         ...
         ...
         "PendingModifiedValues": {
            "CacheNodeType": "new_instance_type"
         },
    }
}
```

**Memcached キャッシュの垂直スケーリング設定を一覧表示する**

Memcached キャッシュのスケーリングオプションを取得して、垂直スケーリングの現在のオプションを確認できます。

**API コール**

```
aws elasticache list-allowed-node-type-modifications --cache-cluster-id <your-cluster-id>
```

**結果: **

```
{ 
  "ScaleUpModifications": [
      "cache.x.xxxx", 
      "cache.x.xxxx"
   	  ],
   "ScaleDownModifications": [ 
      "cache.x.xxxx", 
      "cache.x.xxxx", 
      "cache.x.xxxx" 
      ] 
}
```

**を使用した Memcached の垂直スケーリングAWS マネジメントコンソール**

を使用してノードベースの Memcached クラスターを垂直方向にスケーラブルなクラスターAWS マネジメントコンソールに変換するには、次の手順に従います。

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

1. 変換する Memcached クラスターを選択します。

1. **[変更]** タブを選択します。

1. **[キャッシュ設定]** セクションに移動し、目的の **[ノードタイプ]** を選択します。

1. **[変更をプレビュー]** を選択し、変更を確認します。

1. [**Modify**] を選択します。

## Memcached の自動水平スケーリング
<a name="Scaling-self-designed.mem-heading.horizontal"></a>

ElastiCache はAWS Application Auto Scaling (AAS) サービスと統合され、Memcached クラスターの自動水平スケーリングが含まれるようになりました。AWS Application Auto Scaling サービスを使用してスケーリングポリシーを定義し、事前定義されたメトリクスまたはスケジュールに基づいて、必要に応じて Memcached クラスター内のノード数を自動的に調整できます。

**注記**  
自動水平スケーリングは現在、北京リージョンと寧夏リージョンでは利用できません。

ノードベースのクラスターの自動水平スケーリングに使用できる方法には次のものがあります。
+ **スケジュールされたスケーリング:** スケジュールに基づくスケーリングでは、予想可能な負荷の変化に対する独自のスケーリングスケジュールを設定できます。たとえば、毎週、ウェブアプリケーションへのトラフィックが水曜日に増え始め、木曜日は高いままで、金曜日に下がり始めるとします。この場合は、水曜日に容量を増やし、金曜日に減らすように自動スケーリングを設定できます。
+ **ターゲット追跡:** ターゲット追跡スケーリングポリシーで、スケーリングメトリクスを選択してターゲット値を設定します。Application Auto Scaling は、スケーリングポリシーをトリガーする CloudWatch アラームを作成および管理し、メトリクスとターゲット値に基づいてスケーリング調整値を計算します。スケーリングポリシーは、指定されたターゲット値、またはそれに近い値にメトリクスを維持するため、必要に応じてキャパシティーを追加または削除します。

**CLI を使用してノードベースの Memcached クラスターの水平スケーリングを設定する方法**

ノードベースの Memcached クラスターを水平スケーリングする場合は、ターゲット追跡ポリシー、スケジュールされたポリシー、またはその両方を使用できます。

1. **リソースをスケーラブルなターゲットとして登録する**

   AWS Application Auto Scaling で `RegisterScalableTarget` API を呼び出して、スケーラブルなディメンション のターゲットを登録します`elasticache:cache-cluster:Nodes`。

   **API: ApplicationAutoScaling.RegisterScalableTarget**

   入力:

   ```
   {
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   	"ResourceId": "cache-cluster/test-cluster-1",
   	"ServiceNamespace": "elasticache",
   	"MinCapacity": 20,  
   	"MaxCapacity": 50 
   }
   ```

1. **ターゲット追跡スケーリングポリシーを作成する**

   次に、PutScalingPolicy API を呼び出して、リソースのターゲット追跡スケーリングポリシーを作成できます。

1. **事前定義メトリクス**

   以下は、クラスター test-cluster-1 に対して 50 に設定されている事前定義メトリクス ` ElastiCacheCPUUtilization` を使用して、キャッシュノードのディメンションに沿ってスケールするポリシーです。スケールインのためにノードを削除する際には、最後の n 個のノードが削除されます。

   API: ApplicationAutoScaling.PutScalingPolicy

   入力:

   ```
   {
   	"PolicyName": "cpu50-target-tracking-scaling-policy",
   	"PolicyType": "TargetTrackingScaling",
   	"TargetTrackingScalingPolicyConfiguration": {
   		"TargetValue": 50,
   		"PredefinedMetricSpecification": {
   			"PredefinedMetricType": "ElastiCacheCPUUtilization"
   			},
   		"ScaleOutCooldown": 600,
   		"ScaleInCooldown": 600
   			},
   	"ServiceNamespace": "elasticache",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   	"ResourceId": "cache-cluster/test-cluster-1"
   }
   ```

   出力:

   ```
   {
   	"PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/elasticache/cache-cluster/test-cluster-1:policyName/cpu50-target-tracking-scaling-policy",
   	"Alarms": [
   		{
   		"AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca",
   		"AlarmName": "TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca"
   		},
   		{
   		"AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d",
   		"AlarmName": "TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d"
   		}
   	]
   }
   ```

1. **カスタムメトリクス**

   Cloudwatch メトリクスに基づくカスタムパーセンテージを使用して、ディメンションにスケーリングポリシーを設定することもできます。

   入力:

   ```
   {
   	"PolicyName": "cpu50-target-tracking-scaling-policy",
   	"PolicyType": "TargetTrackingScaling",
   	"TargetTrackingScalingPolicyConfiguration": {
   		"CustomizedMetricSpecification": { 
   			"Dimensions": [ 
   				{ 
   				"Name": "MyMetricDimension",
   				"Value": "DimensionValue"
   				}
   				],
   			"MetricName": "MyCustomMetric",
   			"Namespace": "MyNamespace",
   			"Statistic": "Average",
   			"Unit": "Percent"
   			},
   		"TargetValue": 40,
   		"ScaleOutCooldown": 600,
   		"ScaleInCooldown": 600
   		},
   	"ServiceNamespace": "elasticache",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   	"ResourceId": "cache-cluster/test-cluster-1"
   }
   ```

1. **スケジュールに基づくアクション**

   特定のイベントのためにスケールアウトし、イベントの後にスケールインする必要がある場合は、`PutScheduledAction` API を呼び出してスケジュールされたアクションを 2 つ作成できます。

   **ポリシー 1: スケールアウト**

   `--schedule` の `at` コマンドは、指定された将来の日時に 1 回実行されるアクションをスケジュールします。この schedule フィールドは、rate (分、時間、日など) と cron (cron 式の場合) もサポートしています。

   指定された日時がくると、Application Auto Scaling が `MinCapacity` および `MaxCapacity` の値を更新します。Application Auto Scaling は MinCapacity までスケールアウトして、キャッシュノード数を 70 に設定します。

   **API: ApplicationAutoScaling.PutScheduledAction**

   入力:

   ```
   {
   	"ResourceId": "elasticache:ache-cluster:test-cluster-1",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   		"ScalableTargetAction": { 
   			"MaxCapacity": 100,
   			"MinCapacity": 70
   			},
   	"Schedule": "at(2020-05-20T17:05:00)",
   	"ScheduledActionName": "ScalingOutScheduledAction",
   	"ServiceNamespace": "elasticache",
   }
   ```

   **ポリシー 2: スケールイン**

   指定された日時がくると、Application Auto Scaling がテーブルの `MinCapacity` と `MaxCapacity` を更新し、`MaxCapacity` までスケールインしてキャッシュノード数を 60 に戻します。

   **API: ApplicationAutoScaling.PutScheduledAction**

   入力:

   ```
   {
   	"ResourceId": "elasticache:cache-cluster:test-cluster-1",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes",
   	"ScalableTargetAction": { 
   		"MaxCapacity": 60,
   		"MinCapacity": 40
   		},
   	"Schedule": "at(2020-05-21T17:05:00)",
   	"ScheduledActionName": "ScalingInScheduledAction",
   	"ServiceNamespace": "elasticache",
   }
   ```

1. **スケーリングアクティビティを表示する**

   `DescribeScalingActivities` API を使用してスケーリングアクティビティを表示できます。

   **API: ApplicationAutoScaling.DescribeScalingActivities**

   出力:

   ```
   {
   	"ScalingActivities": [
   		{
   		"ScalableDimension": "elasticache:elasticache:DesiredCount",
   		"Description": "Setting desired count to 30.",
   		"ResourceId": "elasticache/cache-cluster/test-cluster-1",
   		"ActivityId": "4d759079-a31f-4d0c-8468-504c56e2eecf",
   		"StartTime": 1462574194.658,
   		"elasticacheNamespace": "elasticache",
   		"EndTime": 1462574276.686,
   		"Cause": "monitor alarm TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca in state ALARM triggered policy cpu50-target-tracking-scaling-policy",
   		"StatusMessage": "Failed to set desired count to 30",
   		"StatusCode": "Failed"
   		},
   		{
   		"ScalableDimension": "elasticache:elasticache:DesiredCount",
   		"Description": "Setting desired count to 25.",
   		"ResourceId": "elasticache/cache-cluster/test-cluster-1",
   		"ActivityId": "90aff0eb-dd6a-443c-889b-b809e78061c1",
   		"StartTime": 1462574254.223,
   		"elasticacheNamespace": "elasticache",
   		"EndTime": 1462574333.492,
   		"Cause": "monitor alarm TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca in state ALARM triggered policy cpu50-target-tracking-scaling-policy",
   		"StatusMessage": "Successfully set desired count to 25. Change successfully fulfilled by elasticache.",
   		"StatusCode": "Successful"
   		}
   	]
   }
   ```

1. **スケーリングポリシーを編集/削除する**

   `PutScalingPolicy` API を再度呼び出すか、`DeleteScalingPolicy` または `DeleteScheduled` アクションを呼び出すことで、ポリシーを編集または削除できます。

1. **スケーラブルなターゲットの登録を解除する**

   `DeregisterScalableTarget` API を使用してスケーラブルなターゲットの登録を解除できます。スケーラブルなターゲットの登録を解除すると、スケーリングポリシーとそのターゲットに関連付けられているスケジュールされたアクションが削除されます。

   **API: ApplicationAutoScaling.DeregisterScalableTarget**

   入力:

   ```
   {
   	"ResourceId": "elasticache/cache-cluster/test-cluster-1",
   	"ServiceNamespace": "elasticache",
   	"ScalableDimension": "elasticache:cache-cluster:Nodes"
   }
   ```

1. **スケーリングポリシーのクリーンアップ**

1. **複数のスケーリングポリシー**

   複数のスケーリングポリシーを作成できます。[自動スケーリングターゲット追跡](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)の動作に関する主な注意点を以下に示します。
   + それぞれが異なるメトリクスを使用していれば、スケーラブルなターゲットに対して複数のターゲットの追跡スケーリングポリシーを設定できます。
   + Application Auto Scaling の目的は常に可用性を優先することであるため、その動作は、スケールアウトまたはスケールインに対するターゲット追跡ポリシーの準備が整っているかどうかに応じて異なります。ターゲット追跡ポリシーのいずれかでスケールアウトする準備ができると、スケーラブルなターゲットがスケールアウトされますが、すべてのターゲット追跡ポリシー (スケールイン部分が有効) でスケールインする準備ができている場合のみスケールインされます。
   + 複数のポリシーが、スケーラブルターゲットに対してスケールアウトまたはスケールインする指示を同時に出す場合、Application Auto Scaling はスケールインとスケールアウトのどちらについても、最大の容量を提供するポリシーに基づいてスケールします。これにより、複数のシナリオに対応する柔軟性が高まり、アプリケーションワークロードを処理するのに十分な容量が常に確保されます。
**注記**  
AWS Application Auto Scaling はスケーリングポリシーをキューに入れません。Application Auto Scaling は、最初のスケーリングが完了するまで待ち、クールダウンした後、上記のアルゴリズムを繰り返します。

**を介してノードベースの Memcached クラスターを自動的に水平方向にスケーリングするAWS マネジメントコンソール**

を使用して既存のノードベースの Memcached クラスターAWS マネジメントコンソールを水平方向にスケーラブルなクラスターに変換するには、次の手順に従います。

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

1. 変換する Memcached キャッシュを選択します。

1. **[自動スケーリング]** タブに移動します。

1. **[動的なスケーリングを追加]** または **[スケジュールされたスケーリングを追加]** を選択して、適用するスケーリングポリシーを選択します。

1. 必要に応じて、選択したポリシーの詳細を入力します。

1. [**Create (作成)**] をクリックします。