Amazon ECS가 컨테이너 인스턴스에 태스크를 배치하는 방법
Amazon ECS가 컨테이너 인스턴스에 태스크를 배치하는 방법
태스크 배치(task placement)를 사용해 Amazon ECS가 가용 영역이나 인스턴스 유형 같은 특정 기준을 충족하는 컨테이너 인스턴스에 태스크를 배치하도록 구성할 수 있습니다. 이 글에서는 태스크 배치 구성 요소와 용량 옵션별 배치 방식을 알아봅니다.
출처: 문서
본문
태스크 배치를 사용해 Amazon ECS가 가용 영역이나 인스턴스 유형 같은 특정 기준을 충족하는 컨테이너 인스턴스에 태스크를 배치하도록 구성할 수 있어요. 태스크 배치 구성 요소는 다음과 같습니다:
- 태스크 배치 전략(Task placement strategy) — 태스크 배치 또는 종료를 위한 컨테이너 인스턴스를 선택하는 알고리즘. 예를 들어 Amazon ECS는 컨테이너 인스턴스를 무작위로 선택하거나, 태스크가 인스턴스 그룹에 고르게 분산되도록 컨테이너 인스턴스를 선택할 수 있어요.
- 태스크 그룹(Task group) — 관련된 태스크의 그룹. 예: 데이터베이스 태스크.
- 태스크 배치 제약 조건(Task placement constraint) — 태스크를 컨테이너 인스턴스에 배치하려면 충족해야 하는 규칙. 제약 조건이 충족되지 않으면 태스크는 배치되지 않고
PENDING상태로 유지됩니다. 예를 들어 제약 조건을 사용해 특정 인스턴스 유형에만 태스크를 배치할 수 있어요.
Amazon ECS는 서로 다른 용량 옵션에 대해 서로 다른 알고리즘을 가집니다.
Amazon ECS Managed Instances
Amazon ECS Managed Instances에서 실행되는 태스크의 경우 Amazon ECS는 태스크를 어디에 배치할지, 그리고 태스크 수를 축소할 때 어떤 태스크를 종료할지 결정해야 합니다. Amazon ECS는 capacity provider 시작 템플릿에 지정된 인스턴스 요구 사항, CPU와 메모리 같은 태스크 정의에 지정된 요구 사항, 그리고 태스크 배치 제약 조건을 기반으로 이 결정을 내립니다.
참고: Amazon ECS Managed Instances는 태스크 배치 전략을 지원하지 않습니다. Amazon ECS는 접근 가능한 가용 영역에 태스크를 분산시키기 위해 최선을 다합니다.
Amazon ECS가 태스크를 배치할 때 다음 프로세스로 컨테이너 인스턴스를 선택합니다:
- 태스크 정의의 CPU, GPU, 메모리, 포트 요구 사항을 충족하는 컨테이너 인스턴스를 식별합니다.
- 태스크 배치 제약 조건을 충족하는 컨테이너 인스턴스를 식별합니다.
- capacity provider 시작 템플릿에 지정된 인스턴스 요구 사항을 충족하는 컨테이너 인스턴스를 식별합니다.
- 태스크 배치를 위한 컨테이너 인스턴스를 선택합니다.
EC2
EC2 시작 유형을 사용하는 태스크의 경우 Amazon ECS는 CPU와 메모리 같은 태스크 정의에 지정된 요구 사항에 따라 태스크를 어디에 배치할지 결정해야 합니다. 마찬가지로 태스크 수를 축소할 때 Amazon ECS는 어떤 태스크를 종료할지 결정해야 합니다. 태스크 배치 전략과 제약 조건을 적용해 Amazon ECS가 태스크를 배치하고 종료하는 방식을 사용자 지정할 수 있어요.
기본 태스크 배치 전략은 태스크를 수동으로 실행하는지(독립 실행형 태스크) 또는 서비스 내에서 실행하는지에 따라 달라집니다. Amazon ECS 서비스의 일부로 실행되는 태스크의 경우 태스크 배치 전략은 attribute:ecs.availability-zone을 사용한 분산(spread)입니다. 서비스에 있지 않은 태스크에는 기본 태스크 배치 제약 조건이 없습니다. 자세한 내용은 Amazon ECS에서 컨테이너 예약 문서를 참고하세요.
참고: 태스크 배치 전략은 최선(best effort)입니다. 가장 최적의 배치 옵션을 사용할 수 없어도 Amazon ECS는 여전히 태스크를 배치하려고 시도합니다. 그러나 태스크 배치 제약 조건은 바인딩(binding)되며 태스크 배치를 방지할 수 있습니다.
태스크 배치 전략과 제약 조건을 함께 사용할 수 있어요. 예를 들어 태스크 배치 전략과 태스크 배치 제약 조건을 사용해 가용 영역에 태스크를 분산하고, G2 인스턴스에서만 각 가용 영역 내에서 메모리 기반 빈 팩(bin pack)을 수행할 수 있습니다.
Amazon ECS가 태스크를 배치할 때 다음 프로세스로 컨테이너 인스턴스를 선택합니다:
- 태스크 정의의 CPU, GPU, 메모리, 포트 요구 사항을 충족하는 컨테이너 인스턴스를 식별합니다.
- 태스크 배치 제약 조건을 충족하는 컨테이너 인스턴스를 식별합니다.
- 태스크 배치 전략을 충족하는 컨테이너 인스턴스를 식별합니다.
- 태스크 배치를 위한 컨테이너 인스턴스를 선택합니다.
Fargate
Fargate를 사용하는 태스크에는 태스크 배치 전략과 제약 조건이 지원되지 않습니다. Fargate는 접근 가능한 가용 영역에 태스크를 분산시키기 위해 최선을 다합니다. capacity provider가 Fargate와 Fargate Spot을 모두 포함한다면, 분산 동작은 각 capacity provider에 대해 독립적입니다.
더 알아보기 (Learn more)
- 태스크 배치 전략과 제약 조건에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.