Fargate에서 Amazon ECS Service Auto Scaling을 구성하려면 어떻게 해야 합니까?

4분 분량
0

AWS Fargate에서 Amazon Elastic Container Service(Amazon ECS) Service Auto Scaling을 구성하려고 합니다.

간략한 설명

Fargate의 Amazon ECS를 Amazon CloudWatch 경보 및 Application Auto Scaling과 통합하여 원하는 작업 수를 늘리거나 줄일 수 있습니다. 그런 다음 CloudWatch 지표를 사용하여 CloudWatch 경보를 구성할 수 있습니다.

CloudWatch 경보가 Auto Scaling 정책을 트리거하면 Application Auto Scaling은 구성된 스케일링 정책에 따라 원하는 새 개수를 결정합니다. 그런 다음 Application Auto Scaling은 원하는 새 개수로 Amazon ECS에 대한 UpdateService API 호출을 만듭니다. Amazon ECS 서비스 스케줄러는 원하는 새 개수를 충족하기 위해 작업을 시작하거나 종료합니다. 원하는 개수와 실행 개수가 같을 때까지 스케일링 활동은 InProgress 상태로 유지됩니다.

참고: AWS CLI(AWS 명령줄 인터페이스) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

해결 방법

참고: Service Auto Scaling 설정에 액세스하는 IAM 사용자에게는 동적 조정을 지원하는 서비스에 대한 적절한 권한이 있어야 합니다. 자세한 내용은 서비스 자동 크기 조정에 필요한 IAM 권한을 참조하십시오.

Fargate 서비스에 대한 Service Auto Scaling 구성

Amazon ECS 콘솔에서 서비스를 생성하거나 업데이트할 때 Auto Scaling 설정 페이지에서 다음을 선택합니다.

1.    Service Auto Scaling 구성을 선택하여 서비스의 원하는 개수를 조정합니다.

2.    최소 작업 수에 Service Auto Scaling에서 사용할 가장 작은 작업 수를 입력합니다.

3.    원하는 작업 수에 Service Auto Scaling에서 사용할 작업 수를 입력합니다.

참고: 원하는 작업 수는 최소 및 최대 작업 개수 범위 내에 있어야 합니다.

4.    최대 작업 수에 Service Auto Scaling에서 사용할 가장 큰 작업 수를 입력합니다.

참고: 작업의 최소 및 최대 수는 서비스에 대한 엄격한 한도입니다.

5.    Service Auto Scaling에 대한 IAM 역할에서 ecsAutoscaleRole을 선택합니다.

6.    자동 작업 스케일링 정책 섹션에서 Auto Scaling 정책을 선택합니다.

7.    설치 마법사의 나머지 단계를 완료하여 서비스를 만들거나 업데이트합니다.

스케일링 정책 선택

요구 사항 및 다음 고려 사항에 따라 대상 추적 정책 또는 단계별 스케일링 정책을 선택합니다.

대상 추적 정책의 경우:

  • 지정된 지표에 대한 대상 값(임계값)을 정의해야 합니다. Application Auto Scaling은 스케일링 정책을 트리거하는 CloudWatch 경보를 생성하고 관리합니다.
  • 대상 추적에 대해 ECSServiceAverageCPUUtilization, ECSServiceAverageMemoryUtilization, ALBRequestCountPerTarget Amazon ECS 서비스 지표를 사용할 수 있습니다.
  • 대상 추적 정책은 사용자가 정의한 지표와 대상 값에 따라 스케일링 조정(즉, 원하는 작업 수)을 계산합니다. 단계별 스케일링 정책에서와 마찬가지로 스케일링 작업을 구성할 필요가 없습니다. 이는 대상 추적 정책이 지표를 지정된 대상 값으로 또는 지정된 대상 값에 가깝게 유지하는 데 필요한 용량을 추가하거나 제거하기 때문입니다.
  • 스케일 아웃 및 스케일 인 휴지 기간을 선택해야 합니다.

단계별 스케일링 정책의 경우:

  • 단계별 스케일링을 위해 모든 지표에 대해 기존 CloudWatch 경보를 생성하거나 사용할 수 있습니다.
  • 스케일링 작업 또는 단계별 조정(예: ScalingAdjustment, MetricIntervalUpperBound, MetricIntervalLowerBound)을 선택해야 합니다.
  • 스케일링 가능 대상의 현재 용량에 대한 백분율로 또는 절대 숫자를 사용하여 스케일링 조정 유형을 지정할 수 있습니다.
  • 스케일 인 및 스케일 아웃 활동을 처리하는 스케일링 정책을 만들어 원하는 작업 수를 늘리거나 줄일 수 있습니다.

참고: 자세한 내용은 5단계: Service Auto Scaling을 사용하도록 서비스 구성을 참조하세요.

AWS CLI를 사용하여 Service Auto Scaling 구성

1.    Application Auto Scaling을 사용하여 Fargate 서비스를 스케일링 가능한 대상으로 등록합니다.

aws application-autoscaling register-scalable-target \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/your-cluster/your-service-name \
--min-capacity 1 --max-capacity 10 --region us-east-1

2.    스케일링 가능한 대상(즉, Fargate 서비스)에 대한 대상 추적 또는 단계별 스케일링 정책을 만듭니다.

대상 추적 정책:

대상 추적 정책 생성:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/<cluster>/<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}'

참고: 대상 추적 정책을 생성하면 Application Auto Scaling은 사용자가 선택한 대상 값(임계값)을 기반으로 스케일 인 및 스케일 아웃에 대한 CloudWatch 경보를 생성합니다.

단계별 스케일링 정책:

1.    필요한 단계별 조정을 사용하여 단계별 스케일링 정책을 생성합니다.

aws application-autoscaling put-scaling-policy \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/your-cluster/your-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"}'

2.    1단계의 스케일링 정책을 경보 작업으로서 새 CloudWatch 경보나 기존 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=your-cluster Name=ServiceName,Value=your-service-name --unit Percent \
--alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"

3.    스케일 인 활동에 대한 또 다른 단계별 스케일링 정책 및 CloudWatch 경보를 만듭니다.

참고: 서비스의 스케일 아웃 활동이 진행 중이면 스케일 아웃 활동이 완료될 때까지 CloudWatch에 의해 트리거되는 모든 스케일 인 활동이 차단됩니다. Amazon ECS가 Auto Scaling에서 설정한 원하는 개수를 충족하지 못하면 InProgress 스케일 아웃 활동 시간이 초과됩니다. 시간 초과에는 이미지나 네트워킹 문제와 같은 다양한 원인이 있을 수 있습니다. 스케일 아웃 휴지 기간 동안 CloudWatch 지표에 의해 스케일 인 활동이 트리거되지만 스케일 아웃 활동이 완료되면 스케일 인 활동이 실행됩니다.


관련 정보

Service Auto Scaling 문제 해결

Service Auto Scaling

DescribeScalingActivities

application-autoscaling에 대한 AWS CLI 명령 참조

AWS 공식
AWS 공식업데이트됨 2년 전