Fargate에서 Amazon ECS 작업에 대한 상태 확인 실패 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 1월 8일

AWS Fargate의 Amazon Elastic Container Service(Amazon ECS) 작업에 대한 상태 확인이 실패하고 있습니다.

해결 방법

가장 일반적인 로드 밸런서 오류 문제 해결

다음 오류 중 하나가 발생하는 경우:

  • (이유 다음 코드로 인해 상태 확인 실패: [502]) 또는 [request timeout]로 인해 (target-grouparn:uxyztargetgroup/aws-targetgroup/123456789)에서 (서비스 AWS-service) (포트 8080)이 비정상입니다((service AWS-service) (port 8080) is unhealthy in (target-grouparn:uxyztargetgroup/aws-targetgroup/123456789) due to (reason Health checks failed with these codes: [502]) or [request timeout]).
  • (이유 상태 확인 실패)로 인해 target-group tf-20190411170에서 (서비스 AWS-Service) (포트 8080)이 비정상입니다((service AWS-Service) (port 8080) is unhealthy in target-group tf-20190411170 due to (reason Health checks failed)).

다음 문제 해결 단계를 시도해 보세요.

  • 컨테이너가 포트 80에 매핑된 경우 컨테이너 보안 그룹이 로드 밸런서에 대해 포트 80의 인바운드 트래픽을 허용하는지 확인합니다.
  • 로드 밸런서 상태에 대한 ping 포트 값이 올바르게 구성되었는지 확인합니다. 이 포트가 올바르게 구성되지 않은 경우 로드 밸런서가 컨테이너 자체에서 등록을 취소할 수 있습니다.
  • 최소 상태 확인 유예 기간을 정의합니다. 이는 작업이 인스턴스화된 후 사전 정의된 기간 동안 Elastic Load Balancing 상태 확인을 무시하도록 서비스 스케줄러에 지시합니다.
  • 서비스의 CPU 및 메모리 지표를 모니터링합니다. 예를 들어 CPU가 높으면 애플리케이션이 응답하지 않고 502 오류가 발생할 수 있습니다.
  • 애플리케이션 로그에서 애플리케이션 오류를 확인합니다.
  • ping 포트와 상태 확인 경로가 올바르게 구성되어 있는지 확인합니다.
  • 백엔드 데이터베이스가 성공적으로 연결되어 있는지 확인합니다. 애플리케이션이 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 Amazon Elastic Container Service(Amazon ECS)가 시작한 일련의 태스크로 실행된다고 가정합니다. 또한 애플리케이션에서 Amazon Relational Database Service(Amazon RDS) 데이터베이스와 통신할 수 없다고 가정합니다.

504 오류 문제 해결

다음과 같은 이유로 504 오류가 발생할 수 있습니다.

  • 연결 제한 시간(10초)이 만료되기 전에 로드 밸런서가 타겟에 연결을 설정하지 못했습니다.
  • 로드 밸런서가 타겟에 연결을 설정했지만 유휴 제한 시간이 경과하기 전에 타겟이 응답하지 않았습니다.
  • 서브넷에 대한 네트워크 액세스 제어 목록은 대상에서 휘발성 포트(1024-65535)의 로드 밸런서 노드로의 트래픽을 허용하지 않습니다.

다음과 같은 504 오류가 발생하는 경우:

  • (이유 다음 코드로 인해 상태 확인 실패:[504])로 인해 target-group에서 (서비스 AWS-Service) (port 8080)이 비정상입니다((service AWS-Service) (port 8080) is unhealthy in target-group due to (reason Health checks failed with these codes:[504])).

다음 문제 해결 단계를 시도해 보세요.

  • 백엔드에서 지연 시간 없이 성공적으로 응답하는지 확인하세요.
  • 응답 시간 초과 값을 올바르게 설정하세요.
    참고: 응답 시간 초과는 컨테이너가 상태 확인 ping에 대한 응답을 반환해야 하는 시간입니다. 이 값이 응답에 필요한 시간보다 낮으면 상태 확인이 실패합니다.
  • 오류에 대한 자세한 내용은 로드 밸런서의 액세스 로그를 확인하세요.

실패한 컨테이너 상태 확인 문제 해결

다음 오류가 발생하면 서비스가 로드 밸런서와 통합되지 않지만 작업의 컨테이너가 서비스가 통과할 수 없는 상태 확인을 사용하고 있습니다.

  • (서비스 AWS-Service) (태스크 ff3e71a4-d7e5-428b-9232-2345657889)에서 컨테이너 상태를 확인하지 못했습니다((service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks).

다음 문제 해결 단계를 시도해 보세요.

  • 컨테이너에 올바른 명령을 전달하고 구문이 올바른지 확인합니다.
  • 작업이 잠시 실행 중인지 애플리케이션 로그와 Amazon CloudWatch Logs를 확인합니다.

참고: Fargate는 AWS에서 관리하므로 기본 호스트에 액세스할 수 없습니다. 추가 문제 해결을 위해 Amazon EC2에서 Amazon ECS 작업을 시작합니다. 그런 다음 SSH를 사용하여 EC2 인스턴스에 연결합니다.