ステップスケーリングポリシーを使用して、スポットフリートをスケーリングします。 - Amazon Elastic Compute Cloud

ステップスケーリングポリシーを使用して、スポットフリートをスケーリングします。

ステップスケーリングポリシーでは、CloudWatch アラームを指定してスケーリングプロセスをトリガーします。例えば、CPU 利用率が一定のレベルに達したときにスケールアウトする場合、Amazon EC2 によって提供される CPUUtilization メトリクスを使用してアラームを作成します。

ステップスケーリングポリシーを作成したら、次のいずれかのスケーリング調整タイプを指定する必要があります。

  • [追加] - 指定した数の容量ユニットまたは指定した割合の現在の容量で、スポットフリートのターゲット容量を増やします。

  • [削除] - 指定した数の容量ユニットまたは指定した割合の現在の容量で、スポットフリートのターゲット容量を減らします。

  • [設定] - 指定した数の容量ユニットに、スポットフリートのターゲット容量を設定します。

アラームがトリガーされると、自動スケーリングプロセスは、取得済み容量およびスケーリングポリシーを使用して新しいターゲット容量を計算し、必要に応じてターゲット容量を更新します。例えば、ターゲット容量と取得済み容量がそれぞれ 10 で、スケーリングポリシーが 1 を加算するとします。アラームがトリガーされると、自動スケーリングプロセスは 10 に 1 を加えて 11 を得るため、スポットフリートは 1 インスタンスを起動します。

ターゲット容量が減ったためにスポットフリートがインスタンスを終了する場合、インスタンスはスポットインスタンスの中断通知を受け取ります。

制限

スポットフリートリクエストには、タイプが maintain のリクエストが必要です。自動スケーリングはタイプ request のリクエストまたはスポットブロックではサポートされていません。

前提条件
  • アプリケーションにとってどの CloudWatch メトリクスが重要化を検討します。AWS または独自のカスタムメトリクスが提供するメトリクスに基づいて、CloudWatch アラームを作成できます。

  • スケーリングポリシーで使用する AWS メトリクスについて、メトリクスを提供するサービスがデフォルトで有効にならない場合、CloudWatch メトリクスの収集を有効にします。

CloudWatch アラームを作成するには
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインで、[Alarms] を選択します。

  3. [アラームの作成] を選択します。

  4. [Specify metric and conditions (メトリクスと条件を指定)] ページで、[メトリクスの選択] を選択します。

  5. [EC2 スポット]、[フリートリクエストのメトリクス] の順に選択し、メトリクス (CPUUtilization など) を選択して [メトリクスの選択] を選択します。

    [Specify metric and conditions (メトリクスと条件の指定)] ページに、選択したメトリクスに関するグラフや他の情報が表示されます。

  6. [期間] でアラームの評価期間 (1 分など) を選択します。アラームを評価する場合、各期間は 1 つのデータポイントに集約されます。

    注記

    期間が短いほど、作成されるアラームの感度が高くなります。

  7. [条件] で、しきい値条件を定義してアラームを定義します。例えば、メトリクスの値が 80% 以上になるたびにアラームをトリガーするように、しきい値を定義できます。

  8. [Additional configuration (追加設定)] の [Datapoints to alarm (アラームするデータポイント)] で、アラームをトリガーするために ALARM 状態になる必要があるデータポイント (評価期間) の数を指定します (3 個の評価期間のうち 1 個または 2 個の評価期間など)。これでアラームが作成されます。このアラームは、指定した数の期間で連続してしきい値を超過すると、ALARM 状態に移行します。詳細については、Amazon CloudWatch ユーザーガイドアラームを評価するを参照してください。

  9. [Missing data treatment (不足しているデータの扱い)] で、いずれかのオプションを選択します (または、デフォルトの [Treat missing data as missing (不足しているデータを不足として扱う)] のままにします)。詳細については、Amazon CloudWatch ユーザーガイドの「CloudWatch アラームが欠落データを処理する方法の設定」を参照してください。

  10. [Next] を選択します。

  11. (オプション) スケーリングイベントの通知を受け取る場合は、[通知] で、通知を受け取るために使用する Amazon SNS トピックを選択または作成できます。それ以外の場合は、通知を削除し、必要に応じて後で追加できます。

  12. [Next] を選択します。

  13. [Add a description (説明の追加)] にアラームの名前と説明を入力し、[次へ] を選択します。

  14. [アラームの作成] を選択します。

スポットフリートのステップスケーリングポリシーを設定するには (コンソール)
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

  3. スポットフリートリクエストを選択し、[Auto Scaling] を選択します。

  4. 自動スケーリングが設定されていない場合は、[Configure] を選択します。

  5. スポットフリートの最小容量および最大容量を設定するには、[Scale capacity between] を使用します。スケーリングポリシーにより、最小容量未満に、または最大容量を超えてフリートがスケールされることはありません。

  6. [スケーリングポリシー][ポリシータイプ][ステップスケーリングポリシー] を選択します。

  7. 初期状態では、[スケーリングポリシー] には ScaleUp と ScaleDown という名前のポリシーが含まれています。これらのポリシーは、完了するか、[Remove policy] を選択して削除できます。[Add policy] を選択することもできます。

  8. ポリシーを定義するには、以下の作業を行います。

    1. [Policy Name] にこのポリシーの名前を入力します。

    2. [ポリシートリガー] で、既存のアラームを選択するか、[アラームを作成] を選択して Amazon CloudWatch コンソールを開き、アラームを作成します。

    3. [容量の変更] では、スケーリングする量と、ステップ調整の下限と上限を指定します。特定の数のインスタンスまたは既存のグループサイズに対する割合を追加または削除したり、フリートを正確なサイズに設定したりできます。

      例えば、フリートのキャパシティを 30% 増やすステップスケーリングポリシーを作成するには、Add を選択し、次のフィールドに 30 を入力後 percent を選択します。デフォルトでは、[ポリシーを追加] の下限はアラームしきい値であり、上限は正 (+) の無限大です。デフォルトでは、[ポリシーを削除] の上限はアラームしきい値であり、下限は負 (-) の無限大です。

    4. (オプション) 別のステップを追加するには、[ステップを追加] を選択します。

    5. [クールダウン期間] には、新しい値 (秒単位) を指定するか、デフォルトのままにします。

  9. [Save] を選択します。

AWS CLI を使用して、スポットフリートのステップスケーリングポリシーを設定するには
  1. register-scalable-target コマンドを使用して、スケーラブルなターゲットとしてスポットフリートリクエストを登録します。

  2. put-scaling-policy コマンドを使用して、スケーリングポリシーを作成します。

  3. put-metric-alarm コマンドを使用してスケーリングポリシーをトリガーするアラームを作成します。https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html