Amazon ECS에서 컨테이너 예약
Amazon Elastic Container Service(Amazon ECS)는 컨테이너화된 워크로드드에 대한 유연한 예약 기능을 제공하는 공유 상태의 낙관적 동시성 시스템입니다. Amazon ECS 스케줄러는 Amazon ECS API와 동일한 클러스터 상태 정보를 활용하여 적절한 배치 결정을 내립니다.
Amazon ECS는 장기 실행 태스크 및 애플리케이션을 위한 서비스 스케줄러를 제공합니다. 또한 배치 작업 또는 단일 실행 작업에 대해 독립 실행형 작업 또는 예약된 작업을 실행할 수 있는 기능을 제공합니다. 요구 사항에 가장 적합한 태스크를 실행하기 위해 작업 배치 전략과 제약 조건을 지정할 수 있습니다. 예를 들어 작업이 여러 가용 영역에서 실행되는지 또는 단일 가용 영역 내에서 실행되는지를 지정할 수 있습니다. 또한 필요에 따라 사용자 정의 또는 서드 파티 스케줄러와 태스크를 통합할 수 있습니다.
옵션 | 사용해야 하는 경우 | 추가 정보 |
---|---|---|
Service | 서비스 스케줄러는 장기 실행 상태 비저장 서비스 및 애플리케이션에 적합합니다. 또 서비스 스케줄러는 필요하다면 Elastic Load Balancing 로드 밸런서에 대해 작업이 등록되도록 합니다. 서비스 스케줄러에서 유지되는 서비스를 업데이트할 수 있습니다. 여기에는 새 태스크 정의를 배포하거나 실행 중인 원하는 작업 수를 변경하는 작업이 포함될 수 있습니다. 기본적으로 서비스 스케줄러는 여러 가용 영역에 태스크를 분산합니다. 그러나 작업 배치 전략과 제약을 사용하여 작업 배치 결정을 사용자 지정할 수 있습니다. | Amazon ECS 서비스 |
독립 실행형 작업 | 독립 실행형 태스크는 작업을 수행한 다음 중지하는 배치 작업과 같은 프로세스에 적합합니다. 예를 들어 작업이 대기열에 들어올 때 프로세스가 RunTask 를 호출하도록 할 수 있습니다. 이 태스크는 대기열에서 태스크를 가져와 해당 태스크를 수행한 다음 종료됩니다. RunTask 를 사용하면 기본 작업 배치 전략이 태스크를 클러스터에 무작위로 분산하도록 할 수 있습니다. 이렇게 하면 단일 인스턴스에 불균형한 작업 수가 주어질 가능성이 최소화됩니다. |
Amazon ECS 독립 실행형 작업 |
예약된 작업 | 예약된 태스크는 클러스터에서 설정된 간격으로 실행할 태스크가 있는 경우에 적합하며 EventBridge 스케줄러를 사용하여 일정을 생성할 수 있습니다. 백업 태스크 또는 로그 스캔에 대한 태스크를 실행할 수 있습니다. 생성한 EventBridge 스케줄러 일정에 따라 지정된 시간에 클러스터에서 하나 이상의 작업을 실행할 수 있습니다. 예약된 이벤트는 특정 간격으로 설정할 수 있습니다(N 분, 시간 또는 일마다 실행). 그렇지 않으면 더 복잡한 일정 지정을 위해 cron 표현식을 사용할 수 있습니다. |
Amazon EventBridge Scheduler를 사용하여 Amazon ECS 태스크 예약 |
컴퓨팅 옵션
Amazon ECS를 사용하면 태스크 또는 서비스가 실행되는 인프라를 지정할 수 있습니다. 용량 공급자 전략 또는 시작 유형을 사용할 수 있습니다.
Fargate의 경우 용량 공급자는 Fargate와 Fargate Spot입니다. EC2의 경우 용량 공급자는 등록된 컨테이너 인스턴스가 있는 Auto Scaling 그룹입니다.
용량 공급자 전략은 클러스터와 연결된 용량 제공자 전체에 태스크를 분산합니다.
클러스터와 이미 연결되어 있고 ACTIVE
또는 UPDATING
상태인 용량 공급자만 용량 공급자 전략에 사용할 수 있습니다. 클러스터를 생성할 때 용량 공급자를 클러스터와 연결할 수 있습니다.
용량 공급자 전략에서 선택적 base 값은 지정된 용량 공급자에서 실행되는 최소 작업 수를 지정합니다. 용량 공급자 전략에서 하나의 용량 공급자만 기준을 정의할 수 있습니다.
weight 값은 지정된 용량 공급자를 사용하는 시작된 총 작업 수의 상대 백분율을 결정합니다. 다음 예제를 살펴보세요. 두 개의 용량 공급자가 있고, 가중치가 모두 1
인 전략이 있습니다. 기본 백분율에 도달하면 작업은 두 용량 공급자에서 균등하게 분할됩니다. 동일한 로직을 사용하여 capacityProviderA의 가중치를 1
로 지정하고, capacityProviderB의 가중치를 4
로 지정한다고 가정합니다. 그런 다음 capacityProviderA를 사용하여 실행되는 각 작업에 대해 capacityProviderB를 사용하는 4개의 작업이 있습니다.
시작 유형은 Fargate 또는 클러스터에 수동으로 등록한 Amazon EC2 인스턴스에서 직접 태스크를 시작합니다.