Amazon ECS에서 서비스 자동 크기 조정 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 3월 30일

Amazon Elastic Container Service(Amazon ECS) 서비스에 대해 구성된 서비스 자동 크기 조정이 필요에 따라 적절한 태스크 수로 축소 또는 확장하지 않습니다.

간략한 설명

ECS 서비스를 애플리케이션 자동 크기 조정 서비스 및 Amazon CloudWatch 경보와 통합하여 Amazon ECS 서비스에 대한 적절한 태스크 수를 자동으로 업데이트할 수 있습니다.

다음 이유 중 하나 이상으로 인해 서비스 자동 크기 조정에서 예상대로 태스크를 추가하거나 제거하지 못할 수 있습니다.

  • 크기 조정 정책이 올바르게 구성되지 않았습니다.
  • 크기 조정 정책을 트리거하는 CloudWatch 경보는 삭제되었거나 편집되었습니다.
  • 예약된 작업에 cron 표현식 형식이 잘못 지정되었습니다.
  • 적절한 태스크 수를 수동으로 또는 AWS CloudFormation 또는 AWS Cloud Development Kit(AWS CDK)를 통해 서비스 자동 크기 조정에 설정된 최소값보다 작거나 최대값보다 큰 값으로 업데이트했습니다.
  • ECS 클러스터에 새 태스크를 실행하기에 충분한 리소스나 용량이 없습니다.

해결 방법

CloudWatch 경보 및 크기 조정 정책 문제 해결

확장 가능한 대상

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
  • 다음 명령을 사용하여 ECS 서비스의 서비스 자동 크기 조정에 대한 정보를 검색합니다.
aws application-autoscaling describe-scalable-targets --service-namespace ecs --region example-region 
aws application-autoscaling describe-scaling-policies --service-namespace ecs --region example-region
aws application-autoscaling describe-scaling-activities --service-namespace ecs \ 
--scalable-dimension ecs:service:DesiredCount --resource-id service/your-cluster/your-service-name --region example-region
  • ECS 서비스 자동 크기 조정에 대한 CloudWatch 경보를 생성하거나 업데이트할 때 지표, 차원, 통계, 기간, 조건 및 임계값이 올바르게 지정되었는지 확인합니다. 그렇지 않으면 관련 크기 조정 정책을 업데이트하도록 경보가 트리거되지 않습니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

단계 크기 조정

  • 크기 조정 정책과 연결된 CloudWatch 경보가 트리거되고 있는지 확인합니다. CloudWatch 경보 기록을 검토하여 오류가 있는지 확인합니다.
  • 단계 크기 조정 정책의 경우 CloudWatch 경보에 위반 임계값, 단계 조정 및 크기 조정 유형이 설정되어 있는지 확인합니다. 지표 값에서 임계값을 뺀 값인 위반 델타에 대해 일치하는 단계 조정이 없는 경우에는 경보 기록에 Failed to execute AutoScaling action: No step adjustment found for metric value [xx, xx] and breach delta xx와 같은 오류 메시지가 표시됩니다.
    따라서 축소의 경우 -무한대에서 0까지, 확장의 경우 0에서 +무한대까지의 모든 단계 조정이 정책에 포함되어야 합니다.
    참고: 일반적으로 확장 정책의 경우 단계 조정에서 상한값만 null(양의 무한대)이 될 수 있습니다. 축소 정책의 경우 하한값만 null(음의 무한대)이 될 수 있습니다. 자세한 내용은 단계 조정을 참조하세요.

대상 추적 크기 조정

  • 대상 추적 크기 조정 정책은 AWS에서 관리되므로 애플리케이션 자동 크기 조정은 이러한 정책을 생성하는 동안 지정된 대상 값 또는 임계값을 기반으로 축소 및 확장하기 위한 CloudWatch 경보를 생성합니다. 따라서 이러한 경보는 편집하거나 삭제하지 않아야 합니다. 이러한 경보를 편집하거나 삭제하면 크기 조정 동작이 영향을 받을 수 있습니다. 이러한 경보를 수정하거나 삭제한 경우 대상 추적 정책을 다시 생성해야 합니다.
  • 각 정책에서 다른 메트릭을 사용하기만 한다면 ECS 서비스에 대해 여러 대상 추적 크기 조정 정책을 가질 수 있습니다. 애플리케이션 자동 크기 조정의 목적은 가용성의 우선 순위를 정하는 것입니다. 따라서 이러한 정책의 동작은 대상 추적 정책이 확장 또는 축소 준비가 되었는지 여부에 따라 다릅니다. 애플리케이션 자동 크기 조정은 대상 추적 정책 중 하나라도 확장 준비가 된 경우 태스크를 확장하지만 모든 대상 추적 정책(축소 부분이 활성화된 상태)이 축소 준비가 된 경우에만 축소합니다.
  • ECS 서비스에 대해 대상 추적 및 단계 크기 조정 정책을 비롯한 여러 크기 조정 정책이 구성된 경우 이러한 정책이 충돌하지 않도록 해야 합니다. 이러한 충돌로 인해 연속적인 축소 및 확장과 같은 바람직하지 않은 동작이 발생하여 태스크 수가 불필요하게 오르내릴 수 있습니다.

자세한 내용은 애플리케이션 자동 크기 조정을 위한 대상 추적 크기 조정 정책을 참조하세요.

잘못된 cron 표현식 문제 해결

애플리케이션 자동 크기 조정에 대한 예약된 작업의 구성에서 일정에 지정된 cron 표현식이 올바른지 확인합니다. 애플리케이션 자동 크기 조정에서 지원하는 cron 형식은 공백으로 구분된 6개의 필드, 즉 [분] [시간] [일] [월] [요일] [연도]로 구성됩니다.

자세한 내용은 애플리케이션 자동 크기 조정에 대해 예약된 작업의 예를 참조하세요.

적절한 태스크 수 업데이트 문제 해결

수동으로 업데이트하거나 CloudFormation 또는 AWS CDK를 사용하여 ECS 서비스에 대한 적절한 태스크 수를 업데이트할 때는 다음 사항에 유의하세요.

  • ECS 서비스에 대한 적절한 태스크 수를 최소 용량 값보다 작은 값으로 업데이트했으며 경보가 확장 작업을 트리거하는 경우, 서비스 자동 크기 조정은 적절한 수를 최소 용량 값까지 축소합니다. 그런 다음 서비스 자동 크기 조정은 경보와 연결된 조정 정책에 따라 필요에 따라 계속 확장을 수행합니다. 그러나 적절한 수가 이미 최소 용량 값보다 작기 때문에 축소 작업은 적절한 수를 조정하지 않습니다.
  • ECS 서비스에 대한 적절한 태스크 수를 최대 용량 값보다 큰 값으로 업데이트했으며 경보가 축소 작업을 트리거하는 경우, 서비스 자동 크기 조정은 적절한 수를 최대 용량 값까지 확장합니다. 그런 다음 서비스 자동 크기 조정은 경보와 연결된 조정 정책에 따라 필요에 따라 계속 축소를 수행합니다. 그러나 적절한 수가 이미 확장 용량 값보다 크기 때문에 확장 작업은 적절한 수를 조정하지 않습니다.
  • DesiredCount 필드를 지정하지 않고 CloudFormation 또는 CDK를 사용하여 ECS 서비스를 생성한 경우 적절한 수는 기본값인 1로 설정됩니다. 그러나 DesiredCount 필드를 지정하지 않고 CloudFormation 또는 CDK를 통해 동일한 서비스를 업데이트하면 현재 배포에 대한 기존의 적절한 수가 새 배포에 사용됩니다. 따라서 CloudFormation 스택 또는 AWS CDK에 적절한 수가 지정된 경우 해당 값이 서비스 업데이트 중에 값이 최소값과 최대값 사이에 있어야 합니다.

클러스터 용량 문제 해결

ECS 클러스터에 있는 Amazon Elastic Compute Cloud(Amazon EC2) 컨테이너 인스턴스와 같은 리소스가 태스크를 실행하기에 충분하지 않은 경우에는 크기 조정 정책에 의해 시작된 크기 조정 작업이 이행되지 않은 상태로 유지됩니다. 이 경우 서비스 이벤트에 오류 메시지가 기록됩니다. 이러한 Amazon EC2 용량 문제를 방지하고 태스크를 성공적으로 시작하려면 Amazon ECS 용량 공급자를 활용하여 필요에 따라 EC2 인스턴스를 자동으로 프로비저닝합니다.

참고: 크기 조정 작업 중에 서비스 자동 크기 조정은 적절한 수가 아닌 서비스에서 실제 실행 중인 태스크 수를 시작점으로 사용합니다. 이 방식은 추가 태스크를 배치하기에 충분한 컨테이너 인스턴스 리소스가 없는 경우 등에서 충족되지 않을 수 있는 과도한 크기 조정을 방지할 수 있습니다. 컨테이너 인스턴스 용량을 나중에 사용할 수 있는 경우 보류 중인 크기 조정 작업이 성공할 수 있습니다. 그런 다음 휴지 기간 이후에도 추가적인 크기 조정 작업이 계속됩니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?