Amazon ECS 태스크가 중지되었는데 이유가 무엇인가요?

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

Amazon Elastic Container Service(Amazon ECS) 태스크가 중지되었습니다. Amazon ECS 태스크가 중지되는 문제를 해결하려면 어떻게 해야 하나요?

간략한 설명

다양한 이유로 인해 Amazon ECS 태스크가 중지될 수 있습니다. 가장 일반적인 이유는 다음과 같습니다.

  • 필수 컨테이너가 종료됨
  • Elastic Load Balancing(ELB) 상태 확인 실패
  • 컨테이너 상태 확인 실패
  • 비정상 컨테이너 인스턴스
  • 기본 인프라 유지 관리
  • 서비스 크기 조정 이벤트가 트리거됨
  • ResourceInitializationError
  • CannotPullContainerError
  • 사용자가 태스크를 중지함

중지한 태스크와 중지한 이유의 상관관계를 알면 문제 해결에 들이는 수고를 덜 수 있습니다.

해결 방법

DescribeTasks API를 사용하면 중지된 태스크의 세부 정보를 볼 수 있습니다. 단, 중지된 태스크의 세부 정보는 반환된 결과에 1시간 동안만 표시됩니다. 중지된 태스크 세부 정보를 더 오랫동안 보려면, 이 AWS CloudFormation 템플릿을 사용하여 태스크가 중지되었을 때 트리거된 EventBridge 이벤트에서 Amazon CloudWatch Logs를 저장할 수 있습니다.

중지된 이유

태스크의 필수 컨테이너가 종료됨

모든 태스크에는 적어도 하나 이상의 필수 컨테이너가 있어야 합니다. 컨테이너의 필수 파라미터가 참으로 표시되어 있고 그 컨테이너가 어떤 이유로든 실패하거나 중지되는 경우, 그 태스크에 속하는 다른 모든 컨테이너도 중지됩니다. 태스크가 이 이유로 중지된 원인을 알아보려면, DescribeTasks API를 사용해 종료 코드를 확인하고 이 문서의 일반적인 종료 코드 섹션으로 이동하세요.

태스크가 ELB 상태 확인을 실패함

태스크가 ELB 상태 확인 때문에 실패하는 경우, 컨테이너 보안 그룹이 ELB에서 시작한 트래픽을 허용하는지 확인해야 합니다. 다음 사항을 고려하세요.

  • 최소 상태 확인 유예 기간을 정의합니다. 이는 작업이 인스턴스화된 후 사전 정의된 기간 동안 Elastic Load Balancing 상태 확인을 무시하도록 서비스 스케줄러에 지시합니다.
  • 기본적으로, 대상은 대상 그룹에 등록되어 첫 상태 확인을 통과하는 즉시 요청의 전체 할당량을 수신하기 시작합니다. 느린 시작 모드를 사용하면 로드 밸런서가 대상에 요청 할당량 전체를 보내기 전에 대상이 워밍업할 시간이 생깁니다.
  • 서비스의 CPU 및 메모리 지표를 모니터링합니다. 예를 들어 CPU가 높으면 애플리케이션이 응답하지 않고 502 오류가 발생할 수 있습니다.
  • 애플리케이션 로그에서 애플리케이션 오류를 확인합니다.
  • ping 포트와 상태 확인 경로가 올바르게 구성되어 있는지 확인합니다.
  • Amazon Elastic Compute Cloud(Amazon EC2) 안에서 상태 확인 경로를 컬(curl)하여 응답 코드를 확인합니다.

컨테이너 상태 확인 실패

상태 확인은 TaskDefinition API나 Dockerfile에서 정의할 수 있습니다.

DescribeTasks API 작업을 사용하면 개별 컨테이너와 태스크 둘 다 상태를 확인할 수 있습니다.

상태 확인 명령 종료 상태를 보면 컨테이너가 정상인지 알 수 있습니다. 태스크 정의에 지정된 로그 드라이버 설정을 사용하여 애플리케이션 오류에 대한 컨테이너 로그를 확인하세요. 가능한 값은 다음과 같습니다.

  • 0: 성공 – 컨테이너 상태가 정상이며 사용할 준비가 되었습니다.
  • 1: 비정상 – 컨테이너가 올바로 작동하지 않습니다.
  • 2: 예약– 이 종료 코드를 사용하면 안 됩니다.

(상태 확인 실패 이유)로 인해 (인스턴스 i-xx) (포트 x)가 비정상임

이는 컨테이너 상태가 비정상임을 나타냅니다. 이 문제의 해결 방법:

  • 컨테이너 인스턴스에 연결된 보안 그룹이 트래픽을 허용하는지 확인하세요.
  • 백엔드에서 지연 시간 없이 성공적으로 응답하는지 확인하세요.
  • 응답 시간 값을 올바르게 설정하세요.
  • 자세한 내용은 로드 밸런서의 액세스 로그를 확인하세요.

서비스 ABCService: ECS가 태스크를 호스팅하는 기본 인프라에서 유지 관리를 수행하고 있음

이는 태스크가 태스크 유지 관리 문제로 인해 중지되었음을 나타냅니다. 자세한 내용은 AWS Fargate 태스크 유지 관리를 참조하세요.

지정된 일정 예약 전략을 따르고 태스크가 중지되거나 실패하는 경우 일정을 다시 예약하도록 하는 서비스가 있습니다. 컨테이너 인스턴스가 Auto Scaling 그룹의 일부인 경우입니다. 새 컨테이너 인스턴스를 시작하고 태스크를 배치해야 합니다. 자세한 내용은 Auto Scaling 그룹에 대한 크기 조정 활동 확인을 참조하세요.

ECS 서비스 크기 조정 이벤트가 트리거됨

이는 표준 서비스 메시지입니다. Amazon ECS는 Application Auto Scaling 서비스를 활용하여 이 기능을 제공합니다. ECS 서비스는 원하는 태스크 수를 자동으로 늘리거나 줄일 수 있습니다. 다음 작업을 고려하세요.

  • Cloudwatch Alarms를 검토합니다.
  • 예약된 배포가 있는지 검토합니다.

ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed

이 오류를 해결하려면 Amazon ECS에서 'unable to pull secrets or registry auth' 오류를 해결하려면 어떻게 해야 합니까?를 참조하세요.

    CannotPullContainerError

    이 오류는 지금 사용 중인 태스크 실행 역할에 Amazon ECS와 통신할 권한이 없음을 나타냅니다. 이 문제의 해결 방법:

    • 해당 작업 실행 역할에 필요한 권한이 있는지 확인하세요. Amazon ECS는 대부분의 사용 사례에 대한 권한이 포함된 AmazonECSTaskExecutionRolePolicy라는 관리형 정책을 제공합니다.
    • ECR Service Endpointecr.region.amazonaws.comdkr.ecr.region.amazonaws.com에 액세스할 수 있는지 확인하세요.
    • 인증이 필요한 프라이빗 이미지의 경우, repositoryCredentialscredentialsParameter가 올바른 정보로 정의되어 있어야 합니다. 자세한 내용은 태스크에 대한 프라이빗 레지스트리 인증을 참조하세요.

    사용자가 태스크를 중지함

    이는 태스크에 StopTask가 수신되었음을 나타냅니다. CloudTrail의 StopTask에서 userIdentity 정보를 보고 이 호출을 시작한 사람이 누구인지 확인할 수 있습니다.

    일반적인 종료 코드

    • 0 – Entrypoint, 성공 또는 CMD가 실행을 완료하는 중이라서 컨테이너가 중지되었습니다.
    • 1 — 애플리케이션 오류를 나타냅니다. 자세한 내용은 애플리케이션 로그를 검토하세요.
    • 137 – 태스크가 컨테이너에 대하여 강제 종료(SIGKILL)된 경우 발생합니다.
      SIGKILL 값이 전송된 후 기본값인 30초의 기간 내에 SIGTERM에 응답하지 못하여, 컨테이너가 강제로 중지됩니다. 기본값인 30초의 기간은 ECS 컨테이너 에이전트에서 ECS_CONTAINER_STOP_TIMEOUT 파라미터로 구성할 수 있습니다.
      메모리 부족(OOM) 상황에서도 이런 일이 발생할 수 있습니다. CloudWatch 지표를 검토하여 OOM이 발생했는지 확인하세요.
    • 139 — 세그멘테이션 오류를 경험했을 때 발생합니다. 애플리케이션이 사용할 수 없는 메모리 리전에 액세스하려 시도했거나, 설정되지 않았거나 잘못된 환경 변수가 있을 가능성이 큽니다.
    • 255 – 오류로 인해 컨테이너의 ENTRYPOINT CMD 명령이 실패한 경우 발생합니다. 이를 확인하려면 CloudWatch Logs를 검토하세요.

    일반적인 오류 메시지

    클러스터에 컨테이너 인스턴스가 없음

    클러스터의 컨테이너 인스턴스 섹션을 검토하세요. 필요한 경우, 컨테이너 인스턴스를 시작할 수 있습니다.

    InvalidParameterException

    TaskDefinition에서 정의된 모든 파라미터가 존재하고 ARN이 올바른지 확인하세요. 태스크 역할태스크 실행 역할에 충분한 권한이 있는지 확인하세요.

    동시에 실행할 수 있는 태스크 수의 한도에 도달했습니다

    한도에 대한 자세한 내용은 ECS Service Quotas를 참조하세요.

    다른 모든 할당량 증가 요청의 경우 AWS Support 콘솔에서 사례를 생성한 다음 서비스 한도 증가를 선택합니다.


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


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