Redis クラスターAuto ElastiCache Scaling - Amazon ElastiCache フォー・レディス

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

Redis クラスターAuto ElastiCache Scaling

前提条件

ElastiCache Redis 用Auto Scaling は以下のものに限定されます。

  • Redis エンジンバージョン 6.0 以降を実行する Redis (クラスターモードが有効) クラスター

  • Redis エンジンバージョン 7.0.7 以降を実行する データ階層化 (クラスターモードが有効) クラスター

  • インスタンスサイズ - Large、XLarge、2XLarge

  • インスタンスタイプファミリー – R7g、R6g、R6gd、R5、M7g、M6g、M5、C7gn

  • Redis ElastiCache の Auto Scaling in は、グローバルデータストア、Outposts、またはLocal Zones で実行されているクラスターではサポートされていません。

Redis Auto Scaling ElastiCache によるキャパシティの自動管理

ElastiCache for Redis auto スケーリングは、 ElastiCache for Redis サービス内の必要なシャードまたはレプリカを自動的に増減する機能です。 ElastiCache for Redis は、アプリケーションの Auto Scaling サービスを活用してこの機能を提供します。詳細については、Application Auto Scaling を参照してください。自動スケーリングを使用するには、 CloudWatch 割り当てたメトリクスとターゲット値を使用するスケーリングポリシーを定義して適用します。 ElastiCache for Redis auto Scaling は、ポリシーを使用して実際のワークロードに応じてインスタンス数を増減します。

を使用して、 AWS Management Console 定義済みのメトリックスに基づいてスケーリングポリシーを適用できます。predefined metric は列挙型で定義されるため、それをコード内に名前で指定するか、 AWS Management Consoleで使用できます。カスタムのメトリクスは、 AWS Management Consoleを使用した選択には使用できません。または、 AWS CLI またはアプリケーションの Auto Scaling API を使用して、事前定義またはカスタムメトリックスに基づいてスケーリングポリシーを適用することもできます。

ElastiCache for Redis では、以下のディメンションのスケーリングをサポートしています。

  • [シャード] — 手動オンラインリシャーディングと同様に、クラスター内のシャードを自動的に追加/削除します。この場合、Redis ElastiCache の auto Scaling はユーザーに代わってスケーリングをトリガーします。

  • [レプリカ] – 手動によるレプリカの増加/減少オペレーションと同様に、クラスター内のレプリカを自動的に追加/削除します。 ElastiCache Redis の auto Scaling では、クラスター内のすべてのシャードでレプリカを均一に追加/削除します。

ElastiCache for Redis は以下のタイプの自動スケーリングポリシーをサポートしています。

次の手順は、前の図に示した Redis ElastiCache 用の auto Scaling プロセスをまとめたものです。

  1. ElastiCache for Redis レプリケーショングループ用の for Redis auto スケーリングポリシーを作成します。 ElastiCache

  2. ElastiCache Redis の場合、auto スケーリングはユーザーに代わって 2 CloudWatch つのアラームを作成します。各ペアはメトリクスの上限と下限を示します。 CloudWatch これらのアラームは、クラスターの実際の使用率が一定期間目標の使用率から逸脱したときにトリガーされます。コンソールでアラームを表示できます。

  3. 設定したメトリックス値が特定の時間にわたって目標使用率を超えた (または目標を下回った) 場合、Redis auto Scaling CloudWatch ElastiCache を呼び出してスケーリングポリシーを評価するアラームがトリガーされます。

  4. ElastiCache Redis の auto Scaling では、クラスターの容量を調整するための変更リクエストが発行されます。

  5. ElastiCache for Redis は変更リクエストを処理し、クラスターのシャード/レプリカの容量を目標の使用率に近づけるように動的に増加 (または減少) します。

Redis Auto Scaling ElastiCache の仕組みを理解するために、UsersClusterという名前のクラスターがあると仮定します。 CloudWatch のメトリクスをモニタリングすることでUsersCluster、トラフィックがピークのときにクラスターが必要とする最大シャード数と、トラフィックが最も低いときの最小シャード数を決定します。また、UsersCluster クラスターの CPU 使用率のターゲット値を決定します。 ElastiCache for Redis auto Scaling は、ターゲットトラッキングアルゴリズムを使用して、使用率が目標値またはそれに近い値に維持されるように、UsersClusterプロビジョニングされたのシャードを必要に応じて調整します。

注記

スケーリングにはかなりの時間がかかり、シャードのバランスを取り戻すには追加のクラスターリソースが必要になります。 ElastiCache for Redis Auto Scaling は、実際のワークロードが数分間持続的に上昇 (または低下) している場合にのみリソース設定を変更します。 ElastiCache for Redis の auto Scaling ターゲットトラッキングアルゴリズムは、長期にわたってターゲットの使用率を選択した値またはそれに近い値に保つことを目指します。

Redis Auto Scaling ElastiCache に必要な IAM 権限

ElastiCache for Redis Auto Scaling は、 ElastiCache for Redis と CloudWatch、Application Auto Scaling API の組み合わせによって可能になります。クラスターは ElastiCache for Redis で作成および更新され、アラームはで作成され CloudWatch、スケーリングポリシーは Application Auto Scaling で作成されます。クラスターを作成および更新するための標準の IAM 権限に加えて、Redis Auto Scaling 設定にアクセスする ElastiCache IAM ユーザーには、動的スケーリングをサポートするサービスに対する適切な権限が必要です。IAM ユーザーには、次のポリシー例に示すアクションを使用するためのアクセス許可が必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:*", "elasticache:DescribeReplicationGroups", "elasticache:ModifyReplicationGroupShardConfiguration", "elasticache:IncreaseReplicaCount", "elasticache:DecreaseReplicaCount", "elasticache:DescribeCacheClusters", "elasticache:DescribeCacheParameters", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarmHistory", "cloudwatch:DescribeAlarms", "cloudwatch:DescribeAlarmsForMetric", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:PutMetricAlarm", "cloudwatch:DisableAlarmActions", "cloudwatch:EnableAlarmActions", "iam:CreateServiceLinkedRole", "sns:CreateTopic", "sns:Subscribe", "sns:Get*", "sns:List*" ], "Resource": "arn:aws:iam::123456789012:role/autoscaling-roles-for-cluster" } ] }

サービスリンクロール

ElastiCache for Redis auto Scaling サービスには、 CloudWatch クラスターとアラームを記述する権限と、ユーザーに代わって ElastiCache for Redis のターゲット容量を変更する権限も必要です。 ElastiCache for Redis クラスターで Auto Scaling を有効にすると、という名前のサービスにリンクされたロールが作成されます。AWSServiceRoleForApplicationAutoScaling_ElastiCacheRGこのサービスにリンクされたロールは、ポリシーのアラームを記述したり、フリートの現在の容量を監視したり、フリートの容量を変更したりするための権限を Redis auto Scaling ElastiCache に付与します。サービスにリンクされたロールは、Redis auto Scaling ElastiCache のデフォルトロールです。詳細については、『Application Auto Scaling Auto Scaling ユーザーガイド』の「Redis auto Scaling ElastiCache 用のサービスにリンクされたロール」を参照してください。

Auto Scaling のベストプラクティス

Auto Scaling に登録する前に、以下のことをお勧めします。

  1. 追跡メトリクスを 1 つだけ使用 — クラスターに CPU 負荷の高いワークロードまたはデータ集約型のワークロードがあるかどうかを識別し、対応する定義済みメトリックを使用してスケーリングポリシーを定義します。

    • エンジン CPU: ElastiCachePrimaryEngineCPUUtilization (シャードディメンション) または ElastiCacheReplicaEngineCPUUtilization (レプリカディメンション)

    • データベースの使用状況: ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage このスケーリングポリシーは、クラスターで maxmemory-policy が noeviction に設定されている場合に最適です。

    クラスターのディメンションごとに複数のポリシーを使用することは避けることをお勧めします。 ElastiCache Redis の場合、Auto Scaling は、スケールアウトの準備ができているターゲット追跡ポリシーがある場合はスケーラブルターゲットをスケールアウトしますが、すべてのターゲット追跡ポリシー (スケールイン部分が有効になっている) がスケールインできる状態になった場合にのみスケールインします。複数のポリシーによって、スケーラブルなターゲットが同時にスケールアウトまたはスケールインするように指示される場合、Auto Scaling は、スケールインとスケールアウトの両方で最大の容量を提供するポリシーに基づいてスケールします。

  2. ターゲット追跡のカスタマイズされたメトリクス — Target Tracking 用にカスタマイズされたメトリクスを使用する場合は注意が必要です。Auto Scaling は、ポリシー用に選択されたメトリクスの変更に比例してスケールアウトするのに最適です。スケーリングアクションに比例して変更されないメトリクスがポリシーの作成に使用されると、可用性やコストに影響する可能性のあるスケールアウトまたはスケールインアクションが継続する可能性があります。

    データ階層化クラスター (r6gd ファミリーのインスタンスタイプ) では、スケーリングにメモリベースのメトリクスを使用しないでください。

  3. スケジュールに基づくスケーリング — ワークロードが確定的 (特定の時点で高/低に達する) であることが判明した場合は、スケジュールされたスケーリングを使用し、必要に応じてターゲット容量を設定することをお勧めします。ターゲット追跡は、非決定的なワークロードや、必要なターゲットメトリクスでクラスターを操作する場合に最適です。これにより、より多くのリソースが必要な場合はスケールアウトし、必要な場合はスケールインします。

  4. スケールインを無効化する — ターゲット追跡での Auto Scaling は、ワークロードが徐々に増減するクラスターに最適です。メトリクスのスパイク/ディップが連続するスケールアウト/イン振動を引き起こす可能性があるためです。このような振動を避けるために、スケールインを無効にして開始し、後でいつでも必要に応じて手動でスケールインすることができます。

  5. アプリケーションをテスト — 可用性の問題を回避するために、スケーリングポリシーを作成しながら、クラスターに必要な最小/最大シャード/レプリカの絶対値を決定するために、最小/最大ワークロードを推定してアプリケーションをテストすることをお勧めします。Auto Scaling は Max にスケールアウトし、ターゲットに設定された最小しきい値にスケールインできます。

  6. 目標値の定義 — 4 CloudWatch 週間にわたるクラスター使用率に対応するメトリクスを分析して、目標値のしきい値を決定できます。選択する値が不明な場合は、サポートされる最小定義メトリクス値から開始することをお勧めします。

  7. AutoScaling On Target Tracking は、シャード/レプリカのディメンションにわたってワークロードが均一に分散されているクラスターに最適です。不均一な分布を持つと、次のことが可能になります。

    • いくつかのホットシャード/レプリカでワークロードの急増/減少が原因で、必要のない場合のスケーリング。

    • ホットシャード/レプリカがあるにもかかわらず、全体的な平均ターゲットに近いために必要なときにスケーリングされません。

注記

ElastiCache クラスターをスケールアウトすると、既存のノード (ランダムに選択) の 1 つにロードされた関数が新しいノードに自動的に複製されます。クラスターに Redis 7.0 以上があり、アプリケーションで Redis 関数を使用している場合は、スケールアウトする前に、クラスターがシャードにより異なる関数定義にならないように、すべての関数をすべてのシャードに読み込むことをお勧めします。

に登録したら AutoScaling、次の点に注意してください。

  • Auto Scaling でサポートされる設定には制限があるため、Auto Scaling に登録されているレプリケーショングループの設定を変更しないことをお勧めします。次に例を示します。

    • インスタンスタイプをサポートされていないタイプに手動で変更します。

    • レプリケーショングループをグローバルデータストアに関連付けます。

    • ReservedMemoryPercent パラメータの変更。

    • ポリシーの作成時に設定された Min/Max 容量を超えるシャード/レプリカを手動で増減します。