ElastiCache のスケーリング - Amazon ElastiCache

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

ElastiCache のスケーリング

ElastiCache キャッシュは、ニーズに合わせてスケールできます。サーバーレスキャッシュと独自設計型クラスターには、複数の異なるスケーリングオプションが用意されています。

ElastiCache サーバーレスのスケーリング

ElastiCache サーバーレスは、ワークロードトラフィックの増減に応じて自動的に対応します。ElastiCache では、各 ElastiCache サーバーレスキャッシュの CPU、メモリ、ネットワークなどのリソースの使用率を継続的に追跡しています。これらのリソースのいずれかに制約がある場合、ElastiCache サーバーレスは新しいシャードを追加し、データを新しいシャードに再分配することでスケールアウトします。アプリケーションのダウンタイムは発生しません。キャッシュデータストレージの BytesUsedForCache メトリクスとコンピューティング使用量の ElastiCacheProcessingUnits (ECPU) メトリクスをモニタリングすることで、CloudWatch のキャッシュによって消費されているリソースをモニタリングできます。

スケーリング制限を設定してコストを管理する

キャッシュコストを抑えるために、キャッシュデータストレージとキャッシュの ECPU/秒の両方に使用量の上限を設定することができます。そうすることで、キャッシュ使用量が設定した上限を超えることがなくなります。

スケーリングの上限を設定した場合、キャッシュが上限に達すると、アプリケーションのキャッシュパフォーマンスが低下する可能性があります。キャッシュデータストレージの上限を設定し、キャッシュデータストレージが上限に達すると、ElastiCache は LRU ロジックを使用して Time-To-Live (TTL) が設定されているキャッシュ内のデータの削除を開始します。削除できるデータがない場合、追加データを書き込むリクエストにはメモリ不足(OOM) エラーメッセージが表示されます。ECPU/秒の上限を設定し、ワークロードのコンピューティング使用率がこの値を超えると、ElastiCache はリクエストのスロットリングを開始します。

BytesUsedForCache または ElastiCacheProcessingUnits に上限を設定する場合、CloudWatch アラームを上限よりも低い値に設定することを強くお勧めします。これにより、キャッシュがこの制限に近づいたときに通知を受け取ることができます。設定した上限の 75% にアラームを設定することをお勧めします。CloudWatch アラームの設定方法については、ドキュメントを参照してください。

ElastiCache サーバーレスでの事前スケーリング

ElastiCache サーバーレスの事前スケーリング

事前スケーリングは事前ウォーミングとも呼ばれ、ElastiCache キャッシュでサポートされる最小制限を設定できます。これらの最小値は、1 秒あたりの ElastiCache 処理ユニット数 (ECPU) またはデータストレージに対して設定できます。これは、予想されるスケーリングイベントに備えるうえで役立ちます。例えば、あるゲーム会社で新しいゲームのリリースから最初の 1 分以内にログイン数が 5 倍増加すると予想される場合、この大幅な使用量の急増に備えてキャッシュを準備することができます。

ElastiCache コンソール、CLI、または API を使用して、事前スケーリングを実行できます。ElastiCache サーバーレスは 60 分以内にキャッシュで使用可能な 1 秒あたりの ECPU を更新し、最小制限の更新が完了するとイベント通知を送信します。

事前スケーリングの仕組み

1 秒あたりの ECPU またはデータストレージの最小制限がコンソール、CLI、または API を介して更新されると、その新しい制限は 1 時間以内に利用可能になります。ElastiCache サーバーレスは、空のキャッシュで 30K の ECPU/秒、レプリカからの読み取り機能を使用する場合は最大 90K の ECPU/秒 をサポートします。ElastiCache Serverless for Valkey 8.0 は、2~3 分ごとにサポートされている 1 秒あたりのリクエスト (RPS) を 2 倍にし、キャッシュあたり 5M0 万 RPS を 13 分未満でゼロから達成し、ミリ秒未満の一貫した p50 読み込みレイテンシーを実現できます。今後のスケーリングイベントがこの速度を超えると予想される場合は、最小 ECPU/秒を、ピークイベントの 60 分以上前に予想されるピーク ECPU/秒に設定することをお勧めします。設定しておかないと、アプリケーションでレイテンシーが増加し、リクエストのスロットリングが発生する可能性があります。

最小制限の更新が完了すると、ElastiCache サーバーレスは新しい最小 ECPU/秒または新しい最小ストレージに基づいて計測を開始します。これは、アプリケーションがキャッシュでリクエストを実行していない場合や、データストレージの使用量が最小値を下回っている場合にも発生します。現在の設定から最小制限を低くすると、更新は即時に適用され、ElastiCache サーバーレスはすぐに新しい最小制限で計測を開始します。

注記
  • 最小使用量制限を設定すると、実際の使用量が最小使用量制限を下回っていても、その制限に対して課金されます。ECPU またはデータストレージの使用量が最小使用量制限を超えると、通常の料金が課金されます。例えば、最小使用制限を 100,000 ECPU/秒に設定すると、使用量がその最小設定を下回る場合でも、1 時間あたり 1.224 USD (us-east-1 の ECPU 料金を使用) が課金されます。

  • ElastiCache サーバーレスは、キャッシュの集約レベルでリクエストされた最小スケールをサポートします。ElastiCache サーバーレスは、スロットあたり最大 30K ECPU/秒 (READONLY 接続を使用してレプリカから読み取る場合は 90K ECPU/秒) もサポートします。ベストプラクティスとして、アプリケーションでは Valkey または Redis OSS スロット間のキー分散と、キー間のトラフィックができるだけ均等になるように設定すべきです。

コンソールと を使用したスケーリング制限の設定 AWS CLI

AWS コンソールを使用したスケーリング制限の設定

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/elasticache/ で ElastiCache コンソールを開きます。

  2. ナビゲーションペインで、変更するキャッシュで実行されるエンジンを選択します。

  3. 選択したエンジンを実行しているキャッシュが一覧表示されます。

  4. キャッシュ名の左側にあるラジオボタンを選択して、変更したいキャッシュを選択します。

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

  6. [使用量の制限] で、適切な [メモリ] 制限または [コンピュート] 制限を設定します。

  7. [プレビュー] をクリックして変更を確認し、[保存] をクリックして変更を保存します。

を使用したスケーリング制限の設定 AWS CLI

CLI を使用してスケーリング上限を変更するには、modify-serverless-cache API を使用します。

Linux

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \ --cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'

Windows

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^ --cache-usage-limits 'DataStorage={Minimum=10,Maximum=100,Unit=GB}, ECPUPerSecond={Minimum=1000,Maximum=100000}'

CLI を使用してスケーリング上限を削除する

CLI を使用してスケーリング上限を削除するには、Minimum と Maximum の制限パラメータを 0 に設定します。

Linux

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> \ --cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'

Windows

aws elasticache modify-serverless-cache --serverless-cache-name <cache name> ^ --cache-usage-limits 'DataStorage={Minimum=0,Maximum=0,Unit=GB}, ECPUPerSecond={Minimum=0,Maximum=0}'