Auto Scaling グループの予測スケーリングポリシーを作成する - Amazon EC2 Auto Scaling

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

Auto Scaling グループの予測スケーリングポリシーを作成する

次の手順は、 AWS Management Console または を使用して予測スケーリングポリシーを作成するのに役立ちます AWS CLI。

Auto Scaling グループが新しい場合に Amazon EC2 Auto Scaling がグループの予測を生成するには、そのグループが少なくとも 24 時間分のデータを提供する必要があります。

予測スケーリングポリシーを作成する (コンソール)

予測スケーリングポリシーを初めて作成する場合は、コンソールを使用して予測のみモードで複数の予測スケーリングポリシーを作成することをお勧めします。これにより、異なるメトリクスおよび目標値の潜在的な影響をテストできます。Auto Scaling グループごとに複数の予測スケーリングポリシーを作成できますが、アクティブなスケーリングに使用できるポリシーは 1 つだけです。

事前定義されたメトリクス (CPU、ネットワーク I/O、またはターゲットあたりの Application Load Balancer リクエスト数) を使用して予測スケーリングポリシーを作成するには、以下の手順を実行します。予測スケーリングポリシーを作成する最も簡単な方法は、事前定義されたメトリクスを使用することです。その代わりにカスタムメトリクスを使用する場合は、「コンソールで予測スケーリングポリシーを作成する (カスタムメトリクス)」を参照してください。

予測スケーリングポリシーを作成する
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. Auto Scaling グループの横にあるチェックボックスを選択します。

    ページの下部に分割されたペインが開きます。

  3. [Automatic scaling] (自動スケーリング) タブの [Scaling policies] (スケーリングポリシー) で、[Create predictive scaling policy] (予測スケーリングポリシーの作成) を選択します。

  4. ポリシーの名前を入力します。

  5. Amazon EC2 Auto Scaling にすぐにスケーリングを開始させるには、[Scale based on forecast] (予測に基づくスケーリング) をオンにします。

    ポリシーを予測のみモードにしておくには、[Scale based on forecast] (予測に基づくスケーリング) をオフのままにします。

  6. [Metrics] (メトリクス) で、オプションのリストからメトリクスを選択します。オプションには、[CPU][Network In] (ネットワーク入力)、[Network Out] (ネットワーク出力)、[Application Load Balancer request count] (Application Load Balancer リクエスト数)、および [Custom metric pair] (カスタムメトリクスペア) が含まれます。

    [Application Load Balancer request count per target] (ターゲットあたりの Application Load Balancer リクエスト数) を選択した場合、[Target group] (ターゲットグループ) のターゲットグループを選択します。[Application Load Balancer request count per target] (ターゲットあたりの Application Load Balancer リクエスト数) は、Application Load Balancer ターゲットグループを Auto Scaling グループにアタッチしている場合にのみサポートされます。

    [Custom metric pair] (カスタムメトリクスペア) を選択した場合、[Load metric] (負荷のメトリクス) と [Scaling metric] (スケーリングのメトリクス) のドロップダウンリストから個々のメトリクスを選択します。

  7. [Target utilization] (ターゲット使用率) に、Amazon EC2 Auto Scaling が維持する必要があるターゲット値を入力します。Amazon EC2 Auto Scaling は、平均使用率がターゲット使用率になるまで、または指定したインスタンスの最大数に達するまで、キャパシティーをスケールアウトします。

    スケーリングメトリクスが以下である場合..。 ターゲット使用率は以下の内容になります。
    CPU

    各インスタンスが使用する CPU の理想的な割合。

    ネットワーク入力

    各インスタンスが受信する理想的な 1 分あたりの平均バイト数。

    ネットワーク出力

    各インスタンスが送信する理想的な 1 分あたりの平均バイト数。

    ターゲットあたりの Application Load Balancer リクエスト数

    各インスタンスが受信する理想的な 1 分あたりの平均リクエスト数。

  8. (オプション) [起動前のインスタンス] で、予測によって負荷の増加が必要とされる際、どれくらい前にインスタンスを起動しておくかを選択します。

  9. (オプション) [Max capacity behavior] (最大容量の動作) で、予測されたキャパシティーが定義された最大値を超える場合に、Amazon EC2 Auto Scaling がグループの最大容量を超えてスケールアウトできるようにするかどうかを選択します。この設定をオンにすると、トラフィックが最高になると予測される期間中にスケールアウトが実行されます。

  10. (オプション) [Buffer maximum capacity above the forecasted capacity] (予測キャパシティーを超える最大キャパシティーのバッファ) で、予測キャパシティーが最大キャパシティーに近づいたか、それを超えたときに使用する追加キャパシティーを選択します。この値は予測キャパシティーに対する割合 (%) として指定されます。たとえば、バッファが 10 の場合、バッファは 10% です。従って、予測キャパシティーが 50 で最大キャパシティーが 40 の場合、有効な最大キャパシティーは 55 です。

    これを 0 に設定すると、Amazon EC2 Auto Scaling は最大キャパシティーを超えてスケールすることはできても、予測キャパシティーまでとなり、それを超えることはできません。

  11. [Create predictive scaling policy] (予測スケーリングポリシーを作成) を選択します。

カスタムメトリクスを使用して予測スケーリングポリシーを作成するには、以下の手順を実行します。カスタムメトリクスには、CloudWatch が提供するその他メトリクス、またはユーザーが CloudWatch に発行するメトリクスを含めることができます。CPU、ネットワーク I/O、またはターゲットあたりの Application Load Balancer リクエスト数を使用するには、「コンソールで予測スケーリングポリシーを作成する (事前定義されたメトリクス)」を参照してください。

カスタムメトリクスを使用して予測スケーリングポリシーを作成するには、以下を実行する必要があります。

  • Amazon EC2 Auto Scaling が CloudWatch のメトリクスとやり取りできるようにする未処理のクエリを提供する必要があります。詳細については、「カスタムメトリクスを使用した高度な予測スケーリングポリシー」を参照してください。Amazon EC2 Auto Scaling が CloudWatch からメトリクスデータを抽出できることを確実にするため、各クエリがデータポイントを返していることを確認します。これは、CloudWatch コンソール、または CloudWatch GetMetricData API 操作を使用して確認します。

    注記

    Amazon EC2 Auto Scaling コンソールの JSON エディタには、サンプル JSON ペイロードが提供されています。これらの例では、 によって提供される他の CloudWatch メトリクス、 AWS または以前に CloudWatch に発行したメトリクスを追加するために必要なキーと値のペアのリファレンスを提供します。これらを開始点として使用してから、必要に応じてカスタマイズすることができます。

  • メトリクス計算を使用する場合は、独自のシナリオに適した JSON を手動で構築する必要があります。詳細については、「Metric Math 式を使用する」を参照してください。ポリシーでメトリクス計算を使用する前に、メトリクス数式に基づくメトリクスクエリが有効であり、単一の時系列を返すことを確認してください。これは、CloudWatch コンソール、または CloudWatch GetMetricData API 操作を使用して確認します。

誤ったデータ (間違った Auto Scaling グループ名など) を提供することによってクエリでエラーが発生した場合、予測にはデータがありません。カスタムメトリクス問題のトラブルシューティングについては、「予測スケーリングポリシーでのカスタムメトリクスに関する考慮事項」を参照してください。

予測スケーリングポリシーを作成する
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. Auto Scaling グループの横にあるチェックボックスを選択します。

    ページの下部に分割されたペインが開きます。

  3. [Automatic scaling] (自動スケーリング) タブの [Scaling policies] (スケーリングポリシー) で、[Create predictive scaling policy] (予測スケーリングポリシーの作成) を選択します。

  4. ポリシーの名前を入力します。

  5. Amazon EC2 Auto Scaling にすぐにスケーリングを開始させるには、[Scale based on forecast] (予測に基づくスケーリング) をオンにします。

    ポリシーを予測のみモードにしておくには、[Scale based on forecast] (予測に基づくスケーリング) をオフのままにします。

  6. [Metrics] (メトリクス) では、[Custom metric pair] (カスタムメトリクスのペア) を選択します。

    1. [Load metric] (ロードメトリクス) では、[Custom CloudWatch metric] (カスタム CloudWatch メトリクス) を選択してカスタムメトリクスを使用します。ポリシーのロードメトリクス定義が含まれる JSON ペイロードを構築し、それを JSON エディタボックスに貼り付けて、ボックス内にすでに入力されているペイロードを置き換えます。

    2. [Scaling metric] (スケーリングメトリクス) では、[Custom CloudWatch metric] (カスタム CloudWatch メトリクス) を選択してカスタムメトリクスを使用します。ポリシーのスケーリングメトリクス定義が含まれる JSON ペイロードを構築し、それを JSON エディタボックスに貼り付けて、ボックス内にすでに入力されているペイロードを置き換えます。

    3. (オプション) カスタム容量メトリクスを追加するには、[Add custom capacity metric] (カスタム容量メトリクスを追加する) のチェックボックスをオンにします。ポリシーの容量メトリクス定義が含まれる JSON ペイロードを構築し、それを JSON エディタボックスに貼り付けて、ボックス内にすでに入力されているペイロードを置き換えます。

      このオプションを有効にする必要があるのは、容量メトリクスデータが複数の Auto Scaling グループにまたがる場合に容量の新しい時系列を作成するためのみです。この場合は、メトリクス計算を使用してデータを単一の時系列に集計する必要があります。

  7. [Target utilization] (ターゲット使用率) に、Amazon EC2 Auto Scaling が維持する必要があるターゲット値を入力します。Amazon EC2 Auto Scaling は、平均使用率がターゲット使用率になるまで、または指定したインスタンスの最大数に達するまで、キャパシティーをスケールアウトします。

  8. (オプション) [起動前のインスタンス] で、予測によって負荷の増加が必要とされる際、どれくらい前にインスタンスを起動しておくかを選択します。

  9. (オプション) [Max capacity behavior] (最大容量の動作) で、予測されたキャパシティーが定義された最大値を超える場合に、Amazon EC2 Auto Scaling がグループの最大容量を超えてスケールアウトできるようにするかどうかを選択します。この設定をオンにすると、トラフィックが最高になると予測される期間中にスケールアウトが実行されます。

  10. (オプション) [Buffer maximum capacity above the forecasted capacity] (予測キャパシティーを超える最大キャパシティーのバッファ) で、予測キャパシティーが最大キャパシティーに近づいたか、それを超えたときに使用する追加キャパシティーを選択します。この値は予測キャパシティーに対する割合 (%) として指定されます。たとえば、バッファが 10 の場合、バッファは 10% です。従って、予測キャパシティーが 50 で最大キャパシティーが 40 の場合、有効な最大キャパシティーは 55 です。

    これを 0 に設定すると、Amazon EC2 Auto Scaling は最大キャパシティーを超えてスケールすることはできても、予測キャパシティーまでとなり、それを超えることはできません。

  11. [Create predictive scaling policy] (予測スケーリングポリシーを作成) を選択します。

予測スケーリングポリシーの作成 (AWS CLI)

AWS CLI 次のように を使用して、Auto Scaling グループの予測スケーリングポリシーを設定します。各ユーザー入力プレースホルダーを独自の情報に置き換えます。

指定できる CloudWatch メトリクスの詳細については、「Amazon EC2 Auto Scaling API リファレンス」の「PredictiveScalingMetricSpecification」を参照してください。

例 1: 予測を作成するが、スケーリングしない予測スケーリングポリシー

次のポリシー例では、予測スケーリングに CPU 使用率メトリクスを使用し、ターゲット使用率が 40 である完全なポリシー設定を示しています。使用するモードを明示的に指定しない限り、デフォルトで ForecastOnly モードが使用されます。この設定を config.json という名前のファイルに保存してください。

{ "MetricSpecifications": [ { "TargetValue": 40, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } ] }

コマンドラインからこのポリシーを作成するには、以下の例にあるように、設定ファイルが指定された put-scaling-policy コマンドを実行します。

aws autoscaling put-scaling-policy --policy-name cpu40-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

成功した場合、このコマンドはポリシーの Amazon リソースネーム (ARN) を返します。

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/cpu40-predictive-scaling-policy", "Alarms": [] }

例 2: 予測とスケーリングを行う予測スケーリングポリシー

Amazon EC2 Auto Scaling の予測およびスケーリングを許可するポリシーには、Mode プロパティを ForecastAndScale の値で追加します。次の例は、Application Load Balancer リクエスト数メトリクスを使用するポリシー設定を示しています。ターゲット使用率は 1000 で、予測スケーリングは ForecastAndScale モードに設定されています。

{ "MetricSpecifications": [ { "TargetValue": 1000, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ALBRequestCount", "ResourceLabel": "app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff" } } ], "Mode": "ForecastAndScale" }

このポリシーを作成するには、次の例に示すように、設定ファイルを指定して put-scaling-policy コマンドを実行します。

aws autoscaling put-scaling-policy --policy-name alb1000-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

成功した場合、このコマンドはポリシーの Amazon リソースネーム (ARN) を返します。

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:19556d63-7914-4997-8c81-d27ca5241386:autoScalingGroupName/my-asg:policyName/alb1000-predictive-scaling-policy", "Alarms": [] }

例 3: 最大キャパシティーを超えてスケーリングできる予測スケーリングポリシー

次の例は、通常よりも高い負荷を処理する必要がある場合に、グループの最大サイズ制限を超えてスケーリングできるポリシーを作成する方法を示しています。デフォルトでは、Amazon EC2 Auto Scaling は、定義した最大キャパシティーを超えて EC2 のキャパシティーをスケーリングしません。しかし、パフォーマンスや可用性の問題を回避するために、キャパシティーを少し増やしてスケーリングすると便利な場合があります。

キャパシティーがグループの最大サイズに達している、または非常に近いと予測されるときに、Amazon EC2 Auto Scaling が追加のキャパシティーをプロビジョニングする余地を提供するには、次の例に示すように、MaxCapacityBreachBehavior および MaxCapacityBuffer プロパティを指定します。MaxCapacityBreachBehavior に値 IncreaseMaxCapacity を指定する必要があります。グループに含めることができるインスタンスの最大数は、MaxCapacityBuffer の値によって異なります。

{ "MetricSpecifications": [ { "TargetValue": 70, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } ], "MaxCapacityBreachBehavior": "IncreaseMaxCapacity", "MaxCapacityBuffer": 10 }

この例では、10% のバッファ ("MaxCapacityBuffer": 10) を使用するようにポリシーが設定されています。したがって、予測キャパシティーが 50、最大キャパシティーが 40 の場合、有効な最大キャパシティーは 55 です。キャパシティーを最大キャパシティーを超えてスケーリングし、予測キャパシティーに等しくするが、予測キャパシティーを超えないようにするポリシーでは、バッファは 0 です ("MaxCapacityBuffer": 0)。

このポリシーを作成するには、次の例に示すように、設定ファイルを指定して put-scaling-policy コマンドを実行します。

aws autoscaling put-scaling-policy --policy-name cpu70-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

成功した場合、このコマンドはポリシーの Amazon リソースネーム (ARN) を返します。

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:d02ef525-8651-4314-bf14-888331ebd04f:autoScalingGroupName/my-asg:policyName/cpu70-predictive-scaling-policy", "Alarms": [] }