Memcached クラスターのオンデマンドスケーリング - Amazon ElastiCache

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

Memcached クラスターのオンデマンドスケーリング

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

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

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

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

注記
  • ノードタイプの変更は、エンジンバージョンが 1.5 以降のノードベースの Memcached クラスターでのみ行うことができます。

  • 垂直スケーリングを使用するには、自動検出を有効にする必要があります。

ノードベースの Memcached クラスターのオンデマンド垂直スケーリングを設定する

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

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

  2. 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/ で ElastiCache コンソールを開きます。

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

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

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

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

  6. [Modify] を選択します。

Memcached の自動水平スケーリング

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 }
  2. ターゲット追跡スケーリングポリシーを作成する

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

  3. 事前定義メトリクス

    以下は、クラスター 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" } ] }
  4. カスタムメトリクス

    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" }
  5. スケジュールに基づくアクション

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

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

    --scheduleat コマンドは、指定された将来の日時に 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 がテーブルの MinCapacityMaxCapacity を更新し、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", }
  6. スケーリングアクティビティを表示する

    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" } ] }
  7. スケーリングポリシーを編集/削除する

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

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

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

    API: ApplicationAutoScaling.DeregisterScalableTarget

    入力:

    { "ResourceId": "elasticache/cache-cluster/test-cluster-1", "ServiceNamespace": "elasticache", "ScalableDimension": "elasticache:cache-cluster:Nodes" }
  9. スケーリングポリシーのクリーンアップ

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

    複数のスケーリングポリシーを作成できます。自動スケーリングターゲット追跡の動作に関する主な注意点を以下に示します。

    • それぞれが異なるメトリクスを使用していれば、スケーラブルなターゲットに対して複数のターゲットの追跡スケーリングポリシーを設定できます。

    • 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/ で ElastiCache コンソールを開きます。

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

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

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

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

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