ステップ 5: サービスの Auto Scaling を使用するようにサービスを設定する - Amazon Elastic Container Service

ステップ 5: サービスの Auto Scaling を使用するようにサービスを設定する

オプションで、Auto Scaling を使用して CloudWatch アラームに応じて Amazon ECS サービスの必要タスク数をスケールアップ/ダウンするように、Amazon ECS サービスを設定できます。

Amazon ECS サービスの Auto Scaling は、以下のタイプのスケーリングポリシーをサポートします。

  • ターゲット追跡スケーリングポリシー (推奨)—特定のメトリクスのターゲット値に基づいて、サービスが実行するタスク数を増減させます。これはサーモスタットが家の温度を維持する方法に似ています。温度を選択すれば、後はサーモスタットがすべてを実行します。

  • ステップスケーリングポリシー— アラーム超過のサイズに応じて変動する一連のスケーリング調整値 (ステップ調整値) に基づいて、サービスが実行するタスク数を増減させます。

詳細については、「サービスの Auto Scaling」を参照してください。

基本的な サービスの Auto Scaling パラメータを設定するには

  1. まだ実行していない場合は、「ステップ 1: 基本的なサービスパラメータの設定」の基本的なサービス設定手順に従います。

  2. [Auto Scaling を設定] ページで、[Service Auto Scaling の設定を変更することで、サービスの必要数を調整する] を選択します。

  3. [Minimum number of tasks (タスクの最小数)] に、サービスの Auto Scaling で使用するタスクの下限数を入力します。サービスの必要数は、この数を下回ると自動的に調整されません。

  4. [タスクの必要数] には、前に入力した値があらかじめ入力されています。この時点でサービスの必要数を変更できますが、この値は、このページで指定した最小数と最大数の間にあることが必要です。

  5. [Maximum number of tasks (タスクの最大数)] に、サービスの Auto Scaling で使用されるタスクの上限数を入力します。サービスの必要数は、この数を上回ると自動的に調整されません。

  6. [IAM role for Service Auto Scaling (サービスの自動スケーリング用の IAM ロール)] で、ecsAutoscaleRole を選択します。このロールが存在しない場合は、[新しいロールの作成] を選択して、コンソールで作成します。

  7. 次の手順は、サービス用のターゲットの追跡またはステップスケーリングポリシーを作成するためのステップです。目的のスケーリングポリシータイプを選択します。

ここでの手順は、ターゲットの追跡スケーリングポリシーと、サービスのスケーリングアクティビティのトリガーに使用できる CloudWatch アラームを作成するために役立ちます。

サービスのターゲットの追跡スケーリングポリシーを設定するには

  1. [スケーリングポリシータイプ] で [ターゲットの追跡] を選択します。

  2. [ポリシー名] に、ポリシーのわかりやすい名前を入力します。

  3. [ECS service metric (ECS サービスメトリクス)] で、追跡するメトリクスを選択します。以下のメトリクスが利用可能です。

    • ECSServiceAverageCPUUtilization—サービスの CPU 平均使用率。

    • ECSServiceAverageMemoryUtilization—サービスのメモリ平均使用率。

    • ALBRequestCountPerTarget—Application Load Balancer ターゲットグループ内のターゲットごとに完了したリクエストの数。

  4. [ターゲット値] に、ポリシーが維持するメトリクス値を入力します。たとえば、ALBRequestCountPerTarget にはターゲット値 1000 を使用し、ECSServiceAverageCPUUtilization にはターゲット値 75 (%) を使用します。

  5. [スケールアウトのクールダウン期間] に、スケールアウトアクティビティが完了してから別のスケールアウトアクティビティが開始されるまでの時間 (秒) を入力します。スケールアウトのクールダウン期間が有効な間は、その期間中にクールダウンを開始したスケールアウトアクティビティによって追加された容量は、次のスケールアウトに予定される容量の一部として繰り入れられます。これにより、スケールアウトが継続的に (ただし過剰になることなく) 行われます。

  6. [スケールインのクールダウン期間] に、スケールインアクティビティが完了してから別のスケールインアクティビティが開始されるまでの時間 (秒) を入力します。スケールインのクールダウン期間は、その期間が過ぎるまでは以後のスケールインリクエストをブロックするために使用されます。これにより、スケールインが抑制されてアプリケーションの可用性が確保されます。ただし、スケールイン後のクールダウン期間中に別のアラームによってスケールアウトアクティビティがトリガーされると、サービスの Auto Scaling によってスケーラブルなターゲットが即座にスケールアウトされます。

  7. (省略可能) このポリシーのスケールインアクションを無効にするには、[スケールインの無効化] を選択します。これにより、後でスケールイン用の別のスケーリングポリシーを作成できます。

  8. [Next step] を選択します。

ここでの手順は、ステップスケーリングポリシーと、サービスのスケーリングアクティビティのトリガーに使用できる CloudWatch アラームを作成するために役立ちます。サービスの必要数を増やすための [Scale out] アラームと、サービスの必要数を減らすための [Scale in] アラームを作成できます。

サービスのステップスケーリングポリシーを設定するには

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

  2. [ポリシー名] に、ポリシーのわかりやすい名前を入力します。

  3. [Execute policy when (次の場合にポリシーを実行)] で、サービスのスケールアップ/ダウンに使用する CloudWatch アラームを選択します。

    以前に作成した既存の CloudWatch アラームを使用することも、新しいアラームを作成することもできます。[Create new alarm (新しいアラームの作成)] ワークフローでは、作成するサービスの CPUUtilizationMemoryUtilization に基づいて CloudWatch アラームを作成できます。他のメトリクスを使用するには、CloudWatch コンソールでアラームを作成してから、このウィザードに戻ってそのアラームを選択します。

  4. (オプション) 新しいアラームを作成するように選択した場合は、以下の手順を実行します。

    1. [Alarm name] に、アラームのわかりやすい名前を入力します。たとえば、サービスの CPU 使用率が 75% を超えたときにトリガーされるアラームには、service_name-cpu-gt-75 という名前を付けることができます。

    2. [ECS service metric] で、アラームに使用するサービスメトリクスを選択します。詳細については、「サービスの Auto Scaling」を参照してください。

    3. [Alarm threshold] で、以下の情報を入力してアラームを設定します。

      • アラームの CloudWatch 統計を選択します (多くの場合、[平均] のデフォルト値を使用できます)。詳細については、Amazon CloudWatch ユーザーガイドの「統計」を参照してください。

      • アラームの比較演算子を選択し、比較演算子で確認する値 (> and 75 など) を入力します。

      • アラームがトリガーされるまでの連続する期間の数とその期間の長さを入力します。たとえば、連続する期間の数が 2、その期間が 5 分であれば、アラームがトリガーされるまでに 10 分かかります。Amazon ECS タスクはすばやくスケールアップ/ダウンされる場合があるため、連続する期間の数を少なくし、期間を短くして、アラームの応答時間をできる限り短くすることを検討してください。

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

  5. [Scaling action] に、以下の情報を入力して、サービスがアラームにどのように応答するかを設定します。

    • サービスに対してタスクを追加するか、削除するか、または特定の必要数を設定するかを選択します。

    • タスクを追加または削除するように選択した場合は、スケーリングアクションがトリガーされたときに追加または削除するタスクの数 (または既存のタスクのパーセント値) を入力します。必要数を設定するように選択した場合は、スケーリングアクションがトリガーされたときにサービスに設定する必要数を入力します。

    • (オプション) タスクを追加または削除するように選択した場合は、前の値を既存の必要数の整数として使用するか、パーセント値として使用するかを選択します。

    • ステップスケーリング調整の下限値を入力します。デフォルトでは、最初のスケーリングアクションの場合、この値はアラームがトリガーされるメトリクス値です。たとえば、以下のスケーリングアクションでは、CPU 使用率が 75% を超えると、既存の必要数の 100% が加算されます。

      
                                    スケーリングアクティビティの例
  6. (オプション) 「ステップ 5」の手順を繰り返して、1 つのアラームに対して複数のスケーリングアクションを設定します (たとえば、CPU 使用率が 75 〜 85% の場合は 1 つのタスクが追加され、CPU 使用率が 85% を超える場合は 2 つのタスクが追加されるようにします)。

  7. (オプション) 既存の必要数のパーセント値を加算または減算するように選択した場合は、[Add tasks in increments of N task(s)] に最小増減値を入力します。

  8. [Cooldown period] に、スケーリングアクションの間隔を秒数で入力します。

  9. [Scale in (スケールイン)] ポリシーに対してステップ 1ステップ 8 の手順を繰り返し、[保存] を選択します。

  10. [次のステップ] を選択して続行し、「ステップ 6: サービスを確認して作成する」に移動します。