Amazon ECS의 예약된 작업과 관련한 문제를 해결하려면 어떻게 해야 합니까?

4분 분량
0

Amazon Elastic Container Service(Amazon ECS) 작업을 정기적으로 실행하도록 예약했습니다. 그러나 Amazon ECS 작업이 활성화되지 않고 클러스터의 실행 로그나 작업 기록이 표시되지 않습니다.

해결 방법

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

예약된 작업을 사용하는 경우 Amazon EventBridge는 Amazon ECS용 RunTask API를 호출하여 사용자를 대신해 작업을 실행합니다. 예약된 Amazon ECS 작업은 다음과 같은 이유로 호출되지 않을 수 있습니다.

  • EventBridge 시간 또는 cron 표현식을 잘못 구성했습니다.
  • EventBridge 규칙 또는 일정은 대상을 호출하지 않습니다.
  • RunTask API를 실행하지 못했습니다.
  • 애플리케이션 문제 또는 리소스 제약으로 인해 컨테이너 인스턴스가 종료되었습니다.
  • 용량 제약으로 인해 예약된 작업이 실패했습니다.
  • 네트워크 연결 문제 때문에 예약된 작업이 실패했습니다.

EventBridge cron 표현식이 올바르게 구성되었는지 확인

EventBridge cron 표현식을 가져오려면 다음 AWS CLI 명령 중 하나를 실행합니다.

EventBridge 규칙을 사용하는 경우 describe-rule 명령을 실행합니다.

aws events describe-rule --name example-rule --region example-region

EventBridge Scheduler를 사용하는 경우 get-schedule 명령을 실행합니다.

aws scheduler get-schedule --name example-schedule --region example-region

참고: example-rule을 규칙 이름으로, example-schedule을 일정 이름으로, example-region을 AWS 리전으로 바꾸십시오.

명령 출력에서 ScheduleExpression 파라미터의 EventBridge cron 표현식을 확인합니다. 규칙 일정을 UTC+0 시간대로 설정했는지 확인하십시오.

규칙 또는 일정이 대상을 호출하지 않는지 확인

EventBridge 규칙의 InvocationsFailedInvocations Amazon CloudWatch 지표를 확인하려면 다음 단계를 완료하십시오.

  1. CloudWatch 콘솔을 엽니다.
  2. 탐색 창에서 지표를 선택한 다음, 모든 지표를 선택합니다.
  3. 이벤트를 선택합니다.
  4. 규칙 이름별을 선택합니다.
  5. Amazon ECS 작업을 실행하는 EventBridge 규칙에 대해 TriggerRules, InvocationsFailedInvocations를 선택합니다.
  6. 그래프로 표시된 지표 탭을 선택합니다.
  7. 통계에서 각 지표에 대한 SUM을 선택합니다.

EventBridge Scheduler의 성능을 확인하려면 InvocationAttemptCount, TargetErrorCount 및 InvocationDroppedCount CloudWatch 지표를 검토하십시오.

FailedInvocations 또는 InvocationDroppedCount 데이터가 표시되는 경우 EventBridge AWS Identity and Access Management(IAM) 역할에 작업을 호출할 권한이 있는지 확인하십시오.

TargetErrorCount 데이터가 표시되면 대상 호출에 문제가 있는 것입니다. 작업이 시작되었는지, 시작되었다가 즉시 실패했는지, 완료되지 않았는지 확인하십시오.

RunTask 작업이 실패했는지 확인

다음 단계를 완료하십시오.

  1. AWS CloudTrail 콘솔을 엽니다.
  2. 탐색 창에서 이벤트 기록을 선택합니다.
  3. 조회 속성에서 이벤트 이름을 선택합니다.
  4. 이벤트 이름 입력에 ‘run task’를 입력합니다.
  5. 시간 범위 필터에서 예약된 Amazon ECS 작업이 실행될 것으로 예상한 시간을 선택합니다.
  6. 표에서 보려는 이벤트를 선택합니다.
  7. JSON 이벤트 레코드에서 errorMessage 또는 responseElements.failures.reason을 확인하여 API가 예약된 작업을 호출하지 않았는지 확인합니다.
    참고: responseElements.tasks.taskARN 필드에서 실패한 작업의 작업 ID를 찾을 수 있습니다.
  8. API 실패 문제를 해결합니다.

작업 실행 후 컨테이너가 종료되었는지 확인

작업이 성공적으로 실행된 후에도 애플리케이션 문제 또는 리소스 제약으로 인해 Amazon ECS 작업이 중지될 수 있습니다. 이 문제를 해결하려면 컨테이너가 종료될 때 Amazon ECS 작업이 중단되거나 시작되지 않는 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

용량 제약 문제 확인

클러스터에 CPU 및 메모리와 같은 컴퓨팅 리소스가 충분하지 않을 때 작업 실패를 유발하는 용량 제약 문제가 발생합니다. 또는 동일한 클러스터에서 실행되는 다른 워크로드로 인해 리소스 사용량이 많아질 때 문제가 발생합니다. 제한적인 작업 배치 제약이나 전략으로 인해 사용 가능한 리소스가 줄어들 수도 있습니다.

리소스 사용량을 모니터링하려면 Amazon ECS 클러스터에서 컨테이너 인사이트를 설정하십시오. 또한 CloudWatch 경보를 설정하여 리소스 사용량 임계값에 도달하면 알림을 받을 수 있습니다. 리소스를 필요할 때 사용할 수 있게 하려면 작업에 CPU 및 메모리 예약을 설정하십시오. 클러스터를 확장하거나 클러스터 오토 스케일링을 사용하려면 Amazon ECS 서비스의 원하는 수를 늘려야 할 수 있습니다.

기존 작업 배치 제약 조건을 검토하고 덜 제한적으로 조정하십시오. 중요한 워크로드의 우선순위를 지정하고, 중요하지 않은 워크로드의 일정을 조정하고, 분산이나 빈팩, 랜덤과 같은 다양한 배치 전략을 테스트하는 것이 가장 좋습니다.

Amazon ECS 용량 공급자를 사용하여 중요한 워크로드를 위한 용량을 예약하십시오. 격리된 하드웨어가 필요한 워크로드에는 Amazon Elastic Compute Cloud(Amazon EC2) 전용 인스턴스를 사용하는 것이 가장 좋습니다. 사용 가능한 리소스가 필요한 작업에는 AWS Fargate를 사용하십시오.

네트워크 연결 문제 확인

예약된 작업의 네트워크 연결 문제를 해결하려면 다음 작업을 수행하십시오.

  • 보안 그룹 및 네트워크 액세스 제어 목록(네트워크 ACL) 규칙이 작업에 필요한 인바운드 및 아웃바운드 트래픽을 허용하는지 확인하십시오.
  • 가상 프라이빗 클라우드(VPC)의 인터넷 게이트웨이 또는 NAT 게이트웨이를 올바르게 구성했는지 확인하십시오.
  • 게이트웨이 라우팅 테이블을 확인하십시오.
  • 하드코딩된 IP 주소 또는 호스트 이름이 있는 환경 변수에 대한 작업 정의를 검토하십시오. 기존 IP 주소 또는 호스트 이름이 올바른지, 연결 가능한지 확인합니다.

컨테이너 인스턴스에서 네트워크 연결을 테스트하려면 다음 단계를 완료하십시오.

  1. SSH를 사용하여 Amazon EC2 인스턴스에 연결합니다.
  2. 컨테이너에서 명령을 원격으로 실행하려면 다음 execute-command 명령을 실행합니다.
    aws ecs execute-command --cluster cluster-name --task task-id --container container-name --command "/bin/bash" --interactive
    참고: cluster-name을 클러스터 이름으로, task-id를 작업 ID로, container-name을 컨테이너 인스턴스 이름으로 바꾸십시오.
  3. 연결을 테스트하려면 다음 명령 중 하나를 실행합니다.
    curl -v http://example.com
    또는
    nslookup example.com
    또는
    nc -zv example.com 80
    참고: example.com을 사용자의 도메인으로 바꾸십시오.
  4. DNS 확인 및 라우팅을 확인하여 네트워크 문제를 식별합니다.

연결을 단순화하려면 Amazon EC2 대신 Fargate에서 작업을 실행하십시오. Fargate를 사용하면 기본 인프라를 관리할 필요가 없습니다. 또는 VPC 엔드포인트를 사용하여 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 AWS Direct Connect 연결 없이 서비스에 연결할 수 있습니다.

AWS 공식
AWS 공식업데이트됨 2달 전
댓글 없음

관련 콘텐츠