Amazon ECS クラスターの自動スケーリング - Amazon Elastic Container Service

Amazon ECS クラスターの自動スケーリング

Amazon ECS では、クラスターに登録された Amazon EC2 インスタンスのスケーリングを管理できます。これは、Amazon ECS クラスターの自動スケーリングと呼ばれます。また、これはマネージドスケーリングが有効になっている Amazon ECS Auto Scaling グループのキャパシティープロバイダーを使用して行われます。マネージドスケーリングが有効な状態で Auto Scaling グループのキャパシティープロバイダーを使用すると、Auto Scaling グループのインスタンスの使用率のターゲットのパーセンテージ (targetCapacity) を設定します。Amazon ECS は 2 つのカスタム CloudWatch メトリクス、および Auto Scaling グループにアタッチするターゲットの追跡スケーリングポリシーを作成します。Amazon ECS は、このキャパシティープロバイダーからタスクが使用するリソースの利用に基づいて、Auto Scaling グループのスケールインアクションとスケールアウトアクションを管理します。Auto Scaling グループのキャパシティープロバイダーについての詳細は、「Amazon EC2 Auto Scaling グループキャパシティープロバイダー」を参照してください。

クラスターの自動スケーリングを使用する場合、クラスターに登録された Amazon EC2 インスタンスのスケーリングが Amazon ECS で管理されます。クラスターの自動スケーリングにより、Auto Scaling グループはユーザー側で何もしなくても必要に応じてスケールインおよびスケールアウトします。クラスターの自動スケーリングには以下のリソースが必要です。

  • Auto Scaling グループ

  • Auto Scaling グループを使用する Amazon ECS クラスターのキャパシティプロバイダー

EC2 Auto Scaling グループ (ASG) のスケーリングを管理する ECS。CAS を使用すると、ASG を自動的にスケールするように ECS を設定できるため、タスクの実行に集中できます。ECS により、追加の操作を必要とせずに、必要に応じて ASG をスケールインおよびスケールアウトできるようになります。CAS は、ECS クラスターと使用する ASG 間のリンクを提供する ECS キャパシティプロバイダーを利用しています。各 ASG はキャパシティプロバイダーに関連付けられており、そのキャパシティプロバイダーにはそれぞれに ASG が 1 つしかありませんが、多くのキャパシティプロバイダーを 1 つの ECS クラスターに関連付けることができます。クラスター全体を自動的にスケールするために、各キャパシティプロバイダーは関連付けられた ASG のスケーリングを管理します。

注記

Amazon ECS クラスターの自動スケーリングは、Auto Scaling グループのキャパシティプロバイダーを使用する場合にのみサポートされます。AWS Fargate でホストされている Amazon ECS ワークロードの場合は、「AWS Fargate キャパシティープロバイダー」を参照してください。

2022 年 5 月 27 日以降、Amazon ECS では、新しく作成されたキャパシティープロバイダー用の AWS Auto Scaling スケーリングプランが作成されなくなりました。代わりに、Amazon ECS が Auto Scaling グループにアタッチされたターゲットの追跡スケーリングポリシーを使用して、ターゲット容量の仕様に基づき動的スケーリングが実行されます。詳細については、「Amazon EC2 Auto Scaling グループキャパシティープロバイダー」を参照してください。

この新しいリリースでは、新しいキャパシティプロバイダーを作成する際に使用するスケーリングポリシーを持つ既存の Auto Scaling グループを使用できます。ECS マネージドスケーリングポリシーまたはプランのリソースを変更することはお勧めしません。ただし、新しいキャパシティープロバイダーのリソースを作成する際に、AWS Auto Scaling スケーリングプランに変更を加えたカスタム済みのツールがある場合は、次のいずれかを実行します。

  • (推奨) キャパシティープロバイダーを更新して、Amazon ECS マネージドスケーリング設定を変更する。詳細については、「UpdateCapacityProvider」を参照してください。

  • Auto Scaling グループに関連付けられているスケーリングポリシーを更新して、使用するターゲットの追跡設定を変更する。詳細については、「PutScalingPolicy」を参照してください。

考慮事項

クラスターの自動スケーリングを使用するときは、次の点を考慮してください。

  • キャパシティプロバイダーに関連付けられている Auto Scaling グループが希望するキャパシティは、Amazon ECS が管理しているもの以外のスケーリングポリシーを変更または管理しないでください。

  • Amazon ECS は、ユーザーに代わって AWS Auto Scaling を呼び出すために必要なアクセス許可として AWSServiceRoleForECS サービスにリンクされた IAM ロールを使用します。Amazon ECS サービスにリンクされた IAM ロールの使用と作成の詳細については、「Amazon ECS のサービスリンクロールの使用」を参照してください。

  • Auto Scaling グループでキャパシティプロバイダーを使用する場合、キャパシティプロバイダーを作成するユーザー、グループ、ロールには autoscaling:CreateOrUpdateTags アクセス許可が必要です。これは、Auto Scaling グループが、キャパシティープロバイダーに関連付けるときに、Amazon ECS が Auto Scaling グループにタグを追加するためです。

    重要

    ツールの使用により AmazonECSManaged タグが Auto Scaling グループから削除されないようにしてください。このタグが削除されると、Amazon ECS はスケーリングを管理できません。

  • クラスターの自動スケーリングは、グループの [MinimumCapacity][MaximumCapacity] を変更しません。グループをスケールアウトするには、[MaximumCapacity] を 0 より大きくする必要があります。

  • 自動スケーリング(マネージドスケーリング) がオンになっている場合、キャパシティプロバイダーは、同時に 1 つのクラスターにしか接続できません。キャパシティープロバイダーがマネージドスケーリングをオフにしている場合は、複数のクラスターに関連付けることができます。

  • マネージドスケーリングがオフの場合、キャパシティプロバイダーはスケールインまたはスケールアウトを実行しません。キャパシティプロバイダー戦略を使用して、キャパシティプロバイダー間でタスクのバランスを取ることができます。

  • binpack 戦略は、キャパシティに関して最も効率的な戦略です。

  • ターゲットキャパシティが 100% 未満の場合、配置戦略では binpack 戦略よりも上位の spread 戦略がない binpack 戦略を使用する必要があります。こうすることで、各タスクにハードウェア専有インスタンスが割り当てられるか、上限に達するまで、キャパシティプロバイダーはスケールアウトできなくなります。

コンソールを使用する際には、以下の点を考慮してください。

  • Amazon ECS マネージドスケーリング機能はデフォルトでオンになっています。詳細については、「マネージドスケールアウト動作」を参照してください。

  • マネージドターミネーション保護はデフォルトでオフになっています。詳細については、次のセクション「マネージド終了保護」をご覧ください。

  • 自動スケーリングインスタンスのスケールイン保護はデフォルトでオフになっています。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「インスタンスのスケールイン保護の使用」を参照してください。

  • キャパシティプロバイダーで使用する Auto Scaling グループは、インスタンスの重み付け設定を使用することはできません。Amazon ECS キャパシティプロバイダーと同時に使用すると、インスタンスの重み付けはサポートされません。