AWS 배치를 사용하는 방법은 무엇입니까?

AWS 배치를 사용하는 방법은 무엇입니까?

새로운 AWS Batch 기능을 사용하려고 합니다.https://aws.amazon.com/batch/

가장 간단한 배치 작업도 실행할 수 없습니다("echo hello world" 데모 사용). 작업이 계속 실행 가능 상태에 갇히게 됩니다.

문제를 파악하기 위해 새로운 AWS 계정의 모든 기본 설정을 사용하고 있습니다.

제가 이해한 바는 이 기능을 사용하기 위해 EC2 인스턴스를 수동으로 시작할 필요가 없으며 AWS Batch가 이 작업을 수행해야 한다는 것입니다. 하지만 작업을 실행하기 위해 사용 가능한 EC2 인스턴스를 기다리는 것 같습니다. 작업을 자체적으로 실행하려면 EC2 인스턴스를 시작하면 안 되나요?

미리 감사드립니다.

답변1

8000MiB로 작업 정의를 지정하면 7986MB만 있는 인스턴스가 실행되고 내 작업이 Runnable 상태에서 멈추는 것을 확인했습니다.

8000MiB는 8388.608MB와 동일하므로 회전 중인 인스턴스에 작업을 실행하는 데 사용할 수 있는 메모리가 부족하여 중단되는 것처럼 보입니다.

7000MiB의 작업 정의를 생성하면 내 작업은 여전히 ​​7986MB의 메모리를 가진 동일한 인스턴스를 사용하므로 더 이상 Runnable 상태에 머물지 않습니다.

답변2

"작업이 실행 가능 상태에 멈춤" 문제를 해결하기 위한 배치 문서에 문제 해결 가이드가 있습니다. https://docs.aws.amazon.com/batch/latest/userguide/troubleshooting.html#job_stuck_in_runnable

컴퓨팅 환경에 컴퓨팅 리소스가 포함되어 있지만 작업이 RUNNABLE 상태 이상으로 진행되지 않는 경우 작업이 실제로 컴퓨팅 리소스에 배치되는 것을 방해하는 요인이 있는 것입니다. 이 문제의 일반적인 원인은 다음과 같습니다.

컴퓨팅 리소스에 awslogs 로그 드라이버가 구성되지 않았습니다.

AWS Batch 작업은 로그 정보를 CloudWatch Logs로 보냅니다. 이를 활성화하려면 awslogs 로그 드라이버를 사용하도록 컴퓨팅 리소스를 구성해야 합니다. Amazon ECS 최적화 AMI(또는 Amazon Linux)를 기반으로 컴퓨팅 리소스 AMI를 기반으로 하는 경우 이 드라이버는 기본적으로 ecs-init 패키지에 등록됩니다. 다른 기본 AMI를 사용하는 경우 Amazon ECS 컨테이너 에이전트가 시작될 때 awslogs 로그 드라이버가 ECS_AVAILABLE_LOGGING_DRIVERS 환경 변수를 사용하여 사용 가능한 로그 드라이버로 지정되었는지 확인해야 합니다. 자세한 내용은 컴퓨팅 리소스 AMI 사양 및 컴퓨팅 리소스 AMI 생성을 참조하십시오.

리소스 부족

작업 정의가 컴퓨팅 리소스가 할당할 수 있는 것보다 더 많은 CPU 또는 메모리 리소스를 지정하면 작업이 배치되지 않습니다. 예를 들어 작업에서 4GiB의 메모리를 지정하고 컴퓨팅 리소스가 그보다 적은 경우 해당 컴퓨팅 리소스에 작업을 배치할 수 없습니다. 이 경우 작업 정의에서 지정된 메모리를 줄이거나 환경에 더 큰 컴퓨팅 리소스를 추가해야 합니다.

Amazon EC2 인스턴스 한도에 도달했습니다.

계정이 AWS 리전에서 시작할 수 있는 Amazon EC2 인스턴스 수는 EC2 인스턴스 제한에 따라 결정됩니다. 특정 인스턴스 유형에는 인스턴스 유형별 제한도 있습니다. 계정의 Amazon EC2 인스턴스 한도(한도 증가 요청 방법 포함)에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서의 Amazon EC2 서비스 한도를 참조하세요.

그 원인이 되는 다른 매우 일반적인 문제는 다음과 같습니다.

  1. 인터넷에 연결되는 경로가 없습니다.
  2. 작업 정의의 CPU/메모리가 인스턴스보다 높습니다.
  3. 인스턴스가 ECS 클러스터에 등록되지 않았습니다.
  4. 에이전트 연결이 끊어졌습니다 -https://aws.amazon.com/premiumsupport/knowledge-center/ecs-agent-disconnected/

취할 수 있는 추가 문제 해결 단계는 다음과 같습니다.

  1. 클러스터에서 관련 ECS 작업 정의를 수동으로 시작
  2. SSH를 통해 컨테이너 인스턴스 내부에서 docker run을 시도해보세요.
  3. 컨테이너 인스턴스 내부에서 Curl ECS 및 Batch 엔드포인트
  4. 작업 정의에 대한 CPU/메모리 제한 제거
  5. /etc/ecs/ecs.config를 검토하세요.
  6. ECS 로그 가져오기 -https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-logs-collector.html

답변3

오늘도 같은 문제가 발생했습니다. 나는 다음을 수행하여 이 문제를 해결했습니다.

VPCSubnets<YOUR SUBNET>Subnet Actions→ 설정을 엽니다 Modify Auto-assign IP.

Enable auto-assign public IPV4 address AWS 배치 컴퓨팅 환경 다시 생성을 선택합니다 .

컨테이너 인스턴스가 인터넷에 액세스해야 하기 때문입니다. 따라서 컨테이너 인스턴스에는 글로벌 퍼블릭 IP가 필요합니다.

관련 정보