スケーリングポリシーの定義
ターゲット追跡スケーリングポリシー設定は、メトリクスとターゲット値が定義されている JSON ブロックで表されます。JSON ブロックとしてスケーリングポリシー設定をテキストファイルに保存できます。このテキストファイルは、AWS CLI または アプリケーションの Auto Scaling API を呼び出す際に使用します。ポリシー設定構文の詳細については、Application Auto Scaling API リファレンスの「TargetTrackingScalingPolicyConfiguration」を参照してください。
ターゲット追跡スケーリングポリシー設定を定義するには、次のオプションを使用できます。
事前定義メトリクスの使用
定義済みのメトリクスを使用することにより、ElastiCache Auto Scaling のターゲット追跡で動作する Valkey と Redis OSS に対応した ElastiCache クラスターのターゲット追跡スケーリングポリシーを迅速に定義できます。
現在、ElastiCache は、NodeGroup Auto Scaling で次の定義済みメトリクスをサポートしています。
-
ElastiCachePrimaryEngineCPUUtilization — クラスター内のすべてのプライマリノードでの CloudWatch の
EngineCPUUtilizationメトリクスの平均値。 -
ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage — クラスター内のすべてのプライマリノードでの CloudWatch の
DatabaseMemoryUsageCountedForEvictPercentageメトリクスの平均値。 -
ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage — クラスター内のすべてのプライマリノードでの CloudWatch の
ElastiCacheDatabaseCapacityUsageCountedForEvictPercentageメトリクスの平均値。
EngineCPUUtilization と DatabaseMemoryUsageCountedForEvictPercentage、および DatabaseCapacityUsageCountedForEvictPercentage メトリクスの詳細については、「CloudWatch メトリクスの使用状況のモニタリング」を参照してください。スケーリングポリシーで事前定義メトリクスを使用するには、スケーリングポリシーのターゲット追跡構成を作成します。この設定は、事前定義メトリクスの PredefinedMetricSpecification と、そのメトリクスのターゲット値の TargetValue が含まれている必要があります。
次の例では、Valkey と Redis OSS に対応した ElastiCache クラスターのターゲット追跡スケーリングの一般的なポリシー設定について説明します。この設定では、ElastiCachePrimaryEngineCPUUtilization 事前定義メトリクスを使用して、クラスターの全プライマリノードでの平均 CPU 使用率 40% に基づいてクラスターが調整されます。
{ "TargetValue": 40.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization" } }
カスタムメトリクスの使用
カスタムメトリクスを使用することで、カスタム要件を満たすターゲット追跡スケーリングポリシーを定義できます。スケーリングに比例して変化する ElastiCache メトリクスに基づいて、カスタムメトリクスを定義することができます。ElastiCache のすべてのメトリクスがターゲット追跡に使用できるわけではありません。メトリクスは、有効な使用率メトリクスで、インスタンスの使用頻度を示す必要があります。クラスター内のシャードの数に比例してメトリクスの値を増減する必要があります。この比例的な増加または減少は、比例的にスケールアウトするため、またはシャードの数にメトリクスデータを使用するために必要です。
次の例では、スケーリングポリシーのターゲット追跡設定について説明します。この設定では、カスタムメトリクスにより、my-db-cluster という名前のクラスター内のすべてのシャードでの平均 CPU 使用率 50% に基づいて、ElastiCache for Redis OSS クラスターが調整されます。
{ "TargetValue": 50, "CustomizedMetricSpecification": { "MetricName": "EngineCPUUtilization", "Namespace": "AWS/ElastiCache", "Dimensions": [ { "Name": "ReplicationGroup","Value": "my-db-cluster" }, { "Name": "Role","Value": "PRIMARY" } ], "Statistic": "Average", "Unit": "Percent" } }
クールダウン期間の使用
ScaleOutCooldown の値を秒単位で指定して、クラスターをスケールアウトするためのクールダウン期間を追加することができます。同様に、ScaleInCooldown の値を秒単位で追加して、クラスターをスケールインするためのクールダウン期間を追加することができます。詳細については、アプリケーション Auto Scaling API リファレンスの「TargetTrackingScalingPolicyConfiguration」を参照してください。
次の例では、スケーリングポリシーのターゲット追跡設定について説明します。この設定では、ElastiCachePrimaryEngineCPUUtilization 事前定義メトリクスを使用して、ElastiCache for Redis OSS クラスターのすべてのプライマリノードでの平均 CPU 使用率 40% に基づいてそのクラスターが調整されます。この構成では、10 分間のスケールインのクールダウン期間と 5 分間のスケールアウトのクールダウン期間が提供されます。
{ "TargetValue": 40.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ElastiCachePrimaryEngineCPUUtilization" }, "ScaleInCooldown": 600, "ScaleOutCooldown": 300 }