スキップしてコンテンツを表示

Fargate で Amazon ECS サービスの自動スケーリングを設定する方法を教えてください。

所要時間2分
0

AWS Fargate で Amazon Elastic Container Service (Amazon ECS) サービスの自動スケーリングを設定したいと考えています。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

Amazon CloudWatch アラームが自動スケーリングを開始すると、Application Auto Scaling はスケーリングポリシーを使用して新しい目標数を決定します。次に、Application Auto Scaling は Amazon ECS に対し、desiredCount パラメータに新しい値を指定して UpdateService API コールを開始します。Amazon ECS サービススケジューラーは、新しい目標数に合わせてタスクを起動または停止します。スケーリングアクティビティは、新しい木奇数と実行数が同じになるまで InProgress 状態に留まります。

Amazon ECS コンソールまたは AWS CLI を使用すると、Fargate に Amazon ECS Auto Scaling を設定できます。サービスの自動スケーリング構成を設定する AWS Identity and Access Management (IAM) ユーザーには、動的スケーリングをサポートするサービスへのアクセス許可が必要です。詳細については、「Amazon ECS サービスの自動スケーリングに必須の IAM アクセス許可」を参照してください。

Amazon ECS コンソールを使用する

次の手順を実行します。

  1. Amazon ECS コンソールを開きます。
  2. [サービスの自動スケーリング] を選択し、オプション [サービスの自動スケーリングを使用する] を選択します。
  3. サービスの自動スケーリングに次の値を入力します。
    [最小タスク数] に目標とする最小タスク数を入力します。
    [最大タスク数] に目標とするタスクの最大数を入力します。
    注: 目標数は、最小数を下回ったり、最大数を上回ったりすることはできません。
  4. ターゲット追跡スケーリングポリシーを作成するか、ステップスケーリングポリシーを作成して Amazon ECS に追加します。

AWS CLI を使用する

次の register-scalable-target コマンドを実行し、Fargate を Application Auto Scaling に対するスケーラブルターゲットとして登録します。

aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/SERVICE_NAME \
--min-capacity 1 --max-capacity 10 --region REGION

注: 実際のものでそれぞれ、CLUSTER_NAME をクラスターに、SERVICE_NAME をサービスに、REGION AWS リージョンに置き換えてください。

次に put-scaling-policy を実行し、Fargate 用のターゲット追跡スケーリングポリシーまたはステップスケーリングポリシーをスケーラブルターゲットとして作成します。作成した JSON ファイルをコマンドに含めます。

ターゲット追跡スケーリングポリシーのコマンド例:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/SERVICE_NAME \
--policy-name Test-target-tracking-scaling-policy --policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{ "TargetValue": 75.0, "PredefinedMetricSpecification": {"PredefinedMetricType": "ECSServiceAverageCPUUtilization" }, "ScaleOutCooldown": 60,"ScaleInCooldown": 60}'

注: 実際のものでそれぞれ、CLUSTER_NAME をクラスターに、SERVICE_NAME サービスに、REGION をリージョンに置き換えてください。アプリケーションの Auto Scaling は、目標値に基づいてスケーリングに対する CloudWatch アラームを作成します。

ステップスケーリングポリシーのコマンド例:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/SERVICE_NAME \
--policy-name Test-Step-scaling-policy-ScaleOut --policy-type StepScaling \
--step-scaling-policy-configuration '{"AdjustmentType": "ExactCapacity","StepAdjustments": [ { "MetricIntervalLowerBound": 20, "ScalingAdjustment": 10}, { "MetricIntervalLowerBound": 0, "MetricIntervalUpperBound": 20,"ScalingAdjustment": 5}],"Cooldown": 60, "MetricAggregationType": "Average"}'

注: 実際のものでそれぞれ、CLUSTER_NAME をクラスターに、SERVICE_NAME サービスに、REGION をリージョンに置き換えてください。

ステップスケーリングポリシーを作成した場合は、次の put-metric-alarm コマンドを実行してスケーリングポリシーを CloudWatch アラームに追加します。次に、前のステップを繰り返して 2 番目のステップのスケーリングポリシーおよび、スケーリングアクティビティに対する CloudWatch アラームを作成します。

aws cloudwatch put-metric-alarm \
--alarm-name Test-ScaleOut --metric-name MemoryUtilization \
--namespace AWS/ECS \
--statistic Average --period 60 --threshold 60 \
--comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --datapoints-to-alarm 1 \
--dimensions Name=ClusterName,Value=CLUSTER_NAME Name=ServiceName,Value=SERVICE_NAME --unit Percent \
--alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"

注: 実際のものでそれぞれ、CLUSTER_NAME をクラスターに、SERVICE_NAME サービスに、REGION をリージョンに置き換えてください。

アクティビティのスケールアウト中、アプリケーションの Auto Scaling はスケールアウトが完了するまで、すべてのスケールインアクティビティをブロックします。設定した数が満たされなかった場合、Amazon ECS は InProgress 状態のスケールアウトアクティビティをタイムアウトさせます。イメージやネットワークの問題により、タイムアウトが発生する場合があります。CloudWatch メトリクスがスケールアウトのクールダウン期間中にスケールインし、スケールアウトアクティビティが完了した場合、Application Auto Scaling はスケールインアクティビティを実行します。

関連情報

Amazon ECS でのサービス自動スケーリングに関するトラブルシューティング

Amazon ECS サービスを自動的にスケーリングする

DescribeScalingActivities

application-autoscaling

コメントはありません

関連するコンテンツ