Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

チュートリアル: CloudWatch アラームを使用したコンテナインスタンスのスケーリング

次の手順は、Amazon ECS クラスター用の Auto Scaling グループを作成するのに役立ちます。Auto Scaling グループには、CloudWatch アラームを使用してスケールアップ (およびダウン) できるコンテナインスタンスを含みます。

クラスターで使用する Amazon EC2 インスタンスタイプに応じて、クラスター内にあるコンテナインスタンスの数、タスクの実行時に使用できるリソースの量に制限があります。Amazon ECS は、クラスター内で使用できるリソースをモニタリングし、スケジューラと連携してタスクを配置します。クラスターでメモリなどこれらのリソースが不足すると、コンテナインスタンスを追加したり、サービスのタスクの必要数を減らしたり、クラスターで実行中のタスクの一部を停止して制約のあるリソースを解放したりするまで、最終的には他のタスクを起動できなくなります。

このチュートリアルでは、クラスターの MemoryReservation メトリクスを使用して CloudWatch アラームを作成します。クラスターのメモリ予約が 75% を上回った (クラスター内のメモリの 25% しか新しいタスク用に予約できない) 場合、アラームによって Auto Scaling グループがトリガーされて、別のインスタンスが追加されて、タスクとサービス用にリソースが増えます。

前提条件

このチュートリアルでは、クラスターとサービスに対して CloudWatch メトリクスを有効にしていることを前提としています。クラスターとサービスが CloudWatch にメトリクスを送信するまで、メトリクスは使用できません。また、まだ存在しないメトリクスに対して CloudWatch アラームを作成することはできません。

Amazon ECS コンテナインスタンスには、CloudWatch メトリクスを使用可能にするために、コンテナエージェントのバージョン 1.4.0 以上が必要です。エージェントのバージョンの確認と最新バージョンへの更新については、「Amazon ECS コンテナエージェントの更新」を参照してください。

Amazon ECS コンテナインスタンスには、コンテナインスタンスを起動するための ecs:StartTelemetrySession アクセス権限を付与した IAM ロールも必要です。CloudWatch メトリクスが Amazon ECS で使用可能になる前に Amazon ECS コンテナインスタンスを作成した場合は、このアクセス権限を追加する必要がある場合があります。Amazon ECS コンテナインスタンスのロールの確認とコンテナインスタンスのマネージド IAM ポリシーのアタッチについては、「IAM コンソールで ecsInstanceRole を確認するには」を参照してください。

ステップ 1: メトリクスの CloudWatch アラームを作成する

クラスターとサービスに対して CloudWatch メトリクスを有効にし、クラスターのメトリクスが CloudWatch コンソールに表示されたら、メトリクスに関するアラームを設定できます。詳細については、Amazon CloudWatch ユーザーガイド の「Amazon CloudWatch アラームの作成」を参照してください。

このチュートリアルでは、クラスター MemoryReservation メトリクスに関するアラームを作成して、クラスターのメモリ予約が 75% を上回ると警告されるようにします。

メトリクスに関する CloudWatch アラームを作成するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. 左ナビゲーションで、[アラーム]、[アラームの作成] の順に選択します。

  3. [CloudWatch Metrics by Category] セクションで、[ECS Metrics > ClusterName] を選択します。

  4. [Modify Alarm] ページで、デフォルトのクラスターの MemoryReservation メトリクスを選択してから、[Next] を選択します。

  5. [Alarm Threshold] セクションで、アラームの名前と説明を入力します。

    • 名前: memory-above-75-pct

    • Description: Cluster memory reservation above 75%

  6. MemoryReservation が 1 期間で 75% を上回ることを、しきい値と期間の条件として設定します。

    
                        CloudWatch アラームのしきい値
  7. (オプション) アラームのトリガー時に送信する通知を設定します。現時点で通知を設定する必要がない場合は、通知を削除するように選択することもできます。

  8. [Create Alarm] を選択します。これで、このアラームを使用して、メモリ予約が 75% を上回ったときに Auto Scaling グループを開始して、コンテナインスタンスを追加できます。

  9. (オプション) メモリ予約が 25% を下回ったときにトリガーされる別のアラームを作成することもできます。このアラームを使用して、この条件になったときに Auto Scaling グループからコンテナインスタンスを削除できます。

ステップ 2: Auto Scaling グループの起動設定を作成する

これで、CloudWatch メトリクスを有効にし、これらのメトリクスの 1 つに基づいてアラームを作成したので、クラスター用の起動設定と Auto Scaling グループを作成できます。詳細およびその他の設定オプションについては、「Amazon EC2 Auto Scaling ユーザーガイド」を参照してください。

Auto Scaling 起動設定を作成するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. 左のナビゲーションペインで、[Auto Scaling グループ] を選択します。

  3. [Welcome to Auto Scaling (Auto Scaling へようこそ)] ページで、[Create Auto Scaling Group (AS グループの作成)] を選択します。

  4. [Auto Scaling グループの作成] ページで、[Create a new launch configuration (新しい起動設定を作成する)] を選択します。

  5. [Create Auto Scaling Group (Auto Scaling グループの作成)] ウィザードの [Choose AMI (AMI の選択)] ステップで、[Community AMIs (コミュニティ AMI)] を選択します。

  6. Auto Scaling グループの ECS に最適化された AMI を選択します。

    Amazon ECS-optimized Amazon Linux 2 AMI を使用するには、[Search community AMIs (コミュニティ AMI の検索)] フィールドに「amzn2-ami-ecs」と入力し、Enter キーを押します。[amzn2-ami-ecs-hvm-2.0.20190913-x86_64-ebs] AMI の横にある [選択] を選択します。

    次の表に、現在の Amazon ECS-optimized Amazon Linux 2 AMI ID をリージョン別に示します。

    Region Name

    Region

    AMI ID

    EC2 Console Link

    US East (Ohio)

    us-east-2

    View AMI ID

    Launch instance

    US East (N. Virginia)

    us-east-1

    View AMI ID

    Launch instance

    US West (N. California)

    us-west-1

    View AMI ID

    Launch instance

    US West (Oregon)

    us-west-2

    View AMI ID

    Launch instance

    Asia Pacific (Hong Kong)

    ap-east-1

    View AMI ID

    Launch instance

    Asia Pacific (Tokyo)

    ap-northeast-1 View AMI ID Launch instance

    Asia Pacific (Seoul)

    ap-northeast-2 View AMI ID Launch instance

    Asia Pacific (Mumbai)

    ap-south-1 View AMI ID Launch instance

    Asia Pacific (Singapore)

    ap-southeast-1 View AMI ID Launch instance

    Asia Pacific (Sydney)

    ap-southeast-2 View AMI ID Launch instance

    Canada (Central)

    ca-central-1 View AMI ID Launch instance

    EU (Frankfurt)

    eu-central-1 View AMI ID Launch instance

    EU (Stockholm)

    eu-north-1 View AMI ID Launch instance

    EU (Ireland)

    eu-west-1 View AMI ID Launch instance

    EU (London)

    eu-west-2 View AMI ID Launch instance

    EU (Paris)

    eu-west-3 View AMI ID Launch instance

    Middle East (Bahrain)

    me-south-1 View AMI ID Launch instance

    South America (Sao Paulo)

    sa-east-1 View AMI ID Launch instance

    AWS GovCloud (US-East)

    us-gov-east-1 View AMI ID Launch instance

    AWS GovCloud (US-West)

    us-gov-west-1 View AMI ID Launch instance

    China (Beijing)

    cn-north-1

    View AMI ID

    Launch instance

    China (Ningxia)

    cn-northwest-1

    View AMI ID

    Launch instance

  7. [Create Auto Scaling Group (Auto Scaling グループの作成)] ウィザードの [Choose Instance Type (インスタンスタイプの選択)] ステップで、Auto Scaling グループのインスタンスタイプを選択してから、[Next: Configure details (次の手順: 詳細設定)] を選択します。

  8. [Create Auto Scaling Group] ウィザードの [Configure details] ステップで、以下の情報を入力します。その他のフィールドはオプションです。詳細については、Amazon EC2 Auto Scaling ユーザーガイド の「起動設定の作成」を参照してください。

    • Name: 起動設定の名前を入力します。

    • IAM role: コンテナインスタンスの ecsInstanceRole を選択します。このロールを設定していない場合は、「Amazon ECS コンテナインスタンス IAM ロール」を参照してください。

    • [IP アドレスタイプ] コンテナインスタンスに必要な IP アドレスタイプのオプションを選択します。外部トラフィックがコンテナに到達できるようにする場合は、[Assign a public IP address to every instance (パブリック IP アドレスをすべてのインスタンスに割り当てる)] を選択します。

  9. (オプション) Amazon EC2 ユーザーデータを使用してコンテナインスタンスに渡す設定情報がある場合は、[高度な詳細] を選択し、[ユーザーデータ] フィールドにユーザーデータを入力します。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。

  10. [次の手順: ストレージの追加] を選択します。

  11. [Auto Scaling グループの作成] ウィザードの [ストレージの追加] ステップで、インスタンスに必要なストレージ設定の変更を行い、[次の手順: セキュリティグループの設定] を選択します。

  12. [Auto Scaling グループの作成] ウィザードの [セキュリティグループの設定] ステップで、コンテナのニーズを満たす既存のセキュリティグループを選択するか、新しいセキュリティグループを作成して、[確認] を選択します。

  13. 起動設定を確認し、[Create launch configuration] を選択します。

  14. インスタンスへの SSH 接続に使用するプライベートキーを選択したら、[起動設定の作成] を選択します。新しい起動設定を使用する Auto Scaling グループを作成する手順に進みます。

ステップ 3: クラスター用の Auto Scaling グループを作成する

起動設定が完了したら、以下の手順に進み、起動設定を使用する Auto Scaling グループを作成します。

Auto Scaling グループを作成するには

  1. [Auto Scaling グループの作成] ウィザードの [Auto Scaling グループの詳細設定] の手順で、以下の情報を入力し、[次の手順: スケーリングポリシーの設定] を選択します。

    • [Group name: (グループ名:)] に Auto Scaling グループの名前を入力します。

    • [グループサイズ] Auto Scaling グループが開始されるコンテナインスタンスの数を指定します。

    • [ネットワーク] コンテナインスタンスを起動する VPC を選択します。

    • [サブネット] コンテナインスタンス起動するサブネットを選択します。可用性の高いクラスターに対しては、リージョン内のすべてのサブネットを有効にすることをお勧めします。

  2. [Create Auto Scaling Group] ウィザードの [Configure scaling policies] ステップで、[Use scaling policies to adjust the capacity of this group] を選択します。

  3. Auto Scaling グループのコンテナインスタンスの最小数と最大数を入力します。

  4. [Increase Group Size (グループサイズの増加)] ペインで、以下の情報を入力します。

    • [Execute policy when: (次の場合にポリシーを実行: )] 先ほど設定した memory-above-75-pct CloudWatch アラームを選択します。

    • [アクションを実行:] アラームがトリガーされたときにクラスターに追加するインスタンスの数を入力します。

  5. グループサイズの縮小をトリガーするようにアラームを設定した場合は、[Decrease Group Size] セクションでそのアラームを設定し、そのアラームがトリガーされた場合に削除するインスタンスの数を指定します。それ以外の場合は、[Decrease Group Size (グループサイズの減少)] セクションを折りたたみます。そのためには、このセクションの右上隅にある [X] を選択します。

    注記

    コンテナインスタンスを削除するように Auto Scaling グループを設定した場合、削除されるコンテナインスタンスで実行中のタスクはすべて停止されます。タスクがサービスの一部として実行されている場合、必要なリソース (CPU、メモリ、ポート) が使用可能であれば、Amazon ECS は別のインスタンスでそれらのタスクを再開します。ただし、手動で開始したタスクは自動的に再開されません。

  6. [確認]、[Auto Scaling グループの作成] を選択します。

ステップ 4: Auto Scaling グループを検証してテストする

これで、Auto Scaling グループを作成したので、Amazon EC2 コンソールの [Instances (インスタンス)] ページで、インスタンスが起動していることを確認できます。これらのインスタンスも起動後に Amazon ECS クラスターに登録する必要があります。

Auto Scaling グループが適切に設定されているかどうかをテストするために、大量のメモリを消費してクラスターでの起動を開始するタスクをいくつか作成します。指定した期間に 75% のメモリ予約を上回ると、CloudWatch アラームがトリガーされて、Amazon EC2 コンソールで新しいインスタンスが起動されたら、テストは成功です。

ステップ 5: クリーンアップする

このチュートリアルを完了したら、クラスターに対して Auto Scaling グループと Amazon EC2 インスタンスが稼働中になるように選択できます。ただし、これらのリソースをアクティブに使用していない場合は、アカウントで不要な料金が発生しないように、リソースのクリーンアップを検討する必要があります。Auto Scaling グループを削除して、そのグループ内の Amazon EC2 インスタンスを削除することはできますが、起動設定はそのまま残ります。後で必要に応じて、その起動設定を使用して新しい Auto Scaling グループを作成できます。

Auto Scaling グループを削除するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. 左のナビゲーションペインで、[Auto Scaling グループ] を選択します。

  3. 先ほど作成した Auto Scaling グループを選択します。

  4. [ Actions] で、[Delete ] を選択します。

  5. [Yes, Delete] を選択します。