내용으로 건너뛰기

Amazon ECS의 오토 스케일링 문제를 해결하려면 어떻게 해야 합니까?

5분 분량
0

Amazon Elastic Container Service(Amazon ECS)에 대해 구성한 오토 스케일링에서 원하는 작업 개수를 스케일 인 또는 스케일 아웃하지 않습니다.

간략한 설명

원하는 작업 개수를 자동으로 업데이트하려면 Amazon ECS에 대해 AWS Application Auto Scaling과 Amazon CloudWatch 경보를 설정하십시오.

다음과 같은 이유로 Application Auto Scaling이 예상대로 작업을 추가하거나 제거하지 못할 수 있습니다.

  • 규모 조정 정책을 올바르게 구성하지 않았습니다.
  • 규모 조정 정책을 호출하는 CloudWatch 경보를 삭제 또는 편집했습니다.
  • 오토 스케일링이 일시 중지되었습니다.
  • 예약된 작업에 cron 표현식의 형식을 잘못 지정했습니다.
  • AWS CloudFormation 또는 AWS Cloud Development Kit(AWS CDK)를 사용하여 원하는 작업 개수를 수동으로 업데이트하고 잘못된 값을 입력했습니다.
  • 원하는 작업 개수가 잘못 구성되었습니다.
  • Amazon ECS 클러스터에 새 작업을 실행할 수 있는 리소스 또는 용량이 충분하지 않습니다.
  • 네트워크 문제가 발생했습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

CloudWatch 경보 및 규모 조정 정책 문제 해결

CloudWatch 경보 및 규모 조정 정책 문제를 해결하려면 사용하는 규모 조정 정책에 따라 다음 작업을 완료하십시오.

확장 가능 대상

서비스가 Application Auto Scaling에서 확장 가능 대상으로 등록되었는지 확인하려면 describe-scalable-targets 명령을 실행하십시오.

aws application-autoscaling describe-scalable-targets --service-namespace ecs --region example-region

참고: example-region을 AWS 리전으로 바꾸십시오.

서비스가 등록되지 않은 경우 register-scalable-target 명령을 실행하여 서비스를 등록하십시오.

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 example-region

참고: your-cluster를 Amazon ECS 클러스터 이름으로 바꾸고, your-service-name을 서비스 이름으로 바꾸고, example-region을 리전으로 바꾸십시오.

위 명령의 출력에서 DynamicScalingInSuspended, DynamicScalingOutSuspendedScheduledScalingSuspended의 값을 확인합니다. DynamicScalingInSuspended 또는 DynamicScalingOutSuspendedtrue로 설정된 경우, 규모 조정 정책을 시작할 때 Application Auto Scaling이 용량을 업데이트하지 않습니다. ScheduledScalingSuspendedtrue로 설정된 경우에는 Application Auto Scaling이 일시 중지 기간 동안 실행하도록 예약된 규모 조정 작업을 시작하지 않습니다. 일시 중지된 오토 스케일링을 재개하는 방법에 대한 자세한 내용은 Application Auto Scaling의 규모 조정 일시 중지 및 재개를 참조하십시오.

서비스를 등록한 후 규모 조정 정책과 CloudWatch 경보를 구성하십시오.

단계 크기 조정

CloudWatch가 규모 조정 정책과 관련된 경보를 시작하고 있는지 확인하십시오. CloudWatch 경보 기록에서 오류를 찾을 수 있습니다. 위반 델타에 대한 단계 조정이 없는 경우 다음 오류가 표시됩니다. "Failed to execute AutoScaling action: No step adjustment found for metric value [xx, xx] and breach delta xx". 이 문제를 해결하려면 CloudWatch 경보에서 임계값, 단계 조정 및 규모 조정 유형을 설정해야 합니다. 또한 정책에 모든 단계 조정을 지정합니다. 스케일 인의 경우 -infinity to 0을 입력하고 스케일 아웃의 경우 0 to +infinity를 입력합니다.

참고: Amazon ECS 용량 공급자를 사용하는 경우 작업을 실행하기에 충분한 컨테이너 인스턴스가 있는지 확인하십시오.

대상 추적 크기 조정

대상 추적 크기 조정 정책은 규모 조정 동작에 영향을 미칠 수 있으므로 관련 CloudWatch 경보를 편집하거나 삭제하지 않도록 하십시오. 이러한 경보를 수정하거나 삭제하는 경우 대상 추적 정책을 다시 생성해야 합니다.

여러 규모 조정 정책을 구성하면 정책이 충돌하여 연속적인 스케인 인 및 스케일 아웃 활동이 발생할 수 있습니다. Amazon ECS 서비스에 대해 여러 대상 추적 규모 조정 정책을 적용하려면 각 정책에서 서로 다른 지표를 사용해야 합니다.

잘못된 cron 표현식 문제 해결

Application Auto Scaling에 대해 예약된 작업 구성에 있는 cron 표현식이 [Minutes] [Hours] [Day_of_Month] [Month] [Day_of_Week] [Year] 형식을 사용하는지 확인하십시오. 6개 필드는 공백으로 구분해야 합니다.

cron 표현식을 사용하는 작업의 예는 반복 일정에 따라 실행되는 예약된 작업 생성을 참조하십시오.

원하는 작업 개수 업데이트 문제 해결

Amazon ECS 서비스에 대해 원하는 작업 개수를 업데이트할 때 규모 조정 이벤트를 호출할 수 있습니다. 스케일 아웃의 경우 Application Auto Scaling에서 원하는 개수를 최소 용량까지 늘립니다. 스케일 인의 경우 Application Auto Scaling에서 원하는 개수를 최대 용량까지 늘립니다. 두 경우 모두 Application Auto Scaling은 규모 조정 정책을 기반으로 계속 조정되지만 원하는 개수를 수정하지는 않습니다.

CloudFormation 또는 AWS CDK를 사용하여 Amazon ECS 서비스를 생성하는 경우 기본 DesiredCount 값은 1입니다. CloudFormation 또는 AWS CDK로 Amazon ECS 서비스를 업데이트하면 애플리케이션은 기존 DesiredCount를 신규 배포에 사용합니다.

CloudFormation 스택 또는 AWS CDK에서 원하는 개수 값의 경우 서비스 업데이트 중에 최소값과 최대값 사이의 값을 지정하십시오.

참고: 원하는 개수가 서비스의 배포 구성 요구 사항, 특히 최소 및 최대 백분율 설정을 충족하는지 확인하십시오.

클러스터 용량 문제 해결

용량 문제를 피하려면 Amazon ECS 용량 공급자를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 자동으로 프로비저닝하십시오.

과도한 조정을 방지하기 위해 오토 스케일링은 원하는 개수가 아닌 서비스에서 실제 실행 중인 작업 개수를 시작점으로 사용합니다. 컨테이너 인스턴스 리소스가 충분하지 않아 추가 작업을 배치할 수 없는 경우 오토 스케일링에서 규모 조정을 완료할 수 없습니다. 이 문제를 해결하려면 용량 공급자를 사용하여 컨테이너 인스턴스 용량을 자동으로 조정하십시오. 그렇지 않으면 컨테이너 인스턴스 용량을 수동으로 늘려야 합니다.

휴지 기간이 지난 후에도 오토 스케일링은 규모 조정 활동을 계속합니다. AWS Fargate 작업의 경우 Fargate 용량 공급자를 사용하여 컴퓨팅 용량을 관리하십시오.

오토 스케일링은 원하는 개수가 아닌 실제 실행 중인 작업 개수를 규모 조정의 시작점으로 사용합니다. 컨테이너 인스턴스 리소스가 부족하여 추가 작업을 배치할 수 없는 경우 오토 스케일링에서 규모 조정 활동을 완료할 수 없습니다. 하지만 충족할 수 없는 과도한 규모 조정 시도를 방지하기 위해 오토 스케일링에서는 여전히 사용 가능한 리소스를 기반으로 최대한 규모 조정을 시도합니다.

네트워크 관련 규모 조정 문제 해결

awsvpc 네트워크 모드에서 작업 구성 확인

오토 스케일링에서 작업 수를 늘리는 경우 awsvpc 네트워크 모드의 각 작업에는 고유한 IP 주소가 필요합니다. 가상 프라이빗 클라우드(VPC) 서브넷에 사용 가능한 IP 주소가 충분하지 않으면 작업 수가 스케일 업되지 않습니다. VPC의 IP 주소 사용을 정기적으로 모니터링하십시오. 구성이 용량 제한에 가까우면 더 큰 CIDR 블록을 사용하거나 새 서브넷을 생성하십시오.

awsvpc 네트워크 모드의 Amazon ECS 작업은 탄력적 네트워크 인터페이스를 사용합니다. 각 VPC의 각 인스턴스 유형에는 전체 네트워크 인터페이스에 대한 최대 할당량이 있습니다. 이 할당량을 초과하면 작업이 시작되지 않습니다. 네트워크 인터페이스 사용을 확인하려면 다음 단계를 완료하십시오.

  1. Amazon EC2 콘솔을 엽니다.
  2. 탐색 창에서 네트워크 인터페이스를 선택합니다.
  3. 인스턴스 ID 열을 사용하여 각 네트워크 인터페이스가 연결된 인스턴스를 확인합니다. 네트워크 인터페이스에 대한 추가 정보(예: IP 주소 및 보안 그룹 등)를 보려면 해당 네트워크 인터페이스를 선택하십시오.

구성이 필수 트래픽을 차단하지 않는지 확인

보안 그룹 또는 네트워크 액세스 제어 목록(네트워크 ACL) 규칙은 필수 트래픽을 차단할 수 있으며, 이로 인해 상태 확인 실패가 발생하여 불필요한 규모 조정 이벤트로 이어질 수 있습니다. 보안 그룹이 애플리케이션 포트로의 인바운드 트래픽을 허용하는지 확인하십시오. 또한 네트워크 ACL이 애플리케이션과 Amazon ECS 사이의 인바운드 및 아웃바운드 트래픽을 허용하는지 확인하십시오.

관련 정보

Amazon ECS 서비스 자동 스케일링

application-autoscaling

AWS 공식업데이트됨 일 년 전