Amazon ECS 컨테이너 인스턴스 드레이닝
예를 들어 시스템 업데이트를 수행하거나 클러스터 용량을 스케일 다운하기 위해 클러스터에서 컨테이너 인스턴스를 제거해야 하는 경우가 있을 수 있습니다. Amazon ECS는 컨테이너 인스턴스를 DRAINING
상태로 전환할 수 있는 기능을 제공합니다. 이것을 컨테이너 인스턴스 드레이닝이라고 합니다. 컨테이너 인스턴스를 DRAINING
으로 설정할 경우 Amazon ECS는 새 작업이 컨테이너 인스턴스에서 배치를 위해 예약되지 않도록 합니다.
서비스에 대한 드레이닝 동작
PENDING
상태에 있는 서비스의 일부인 모든 태스크가 즉시 중지됩니다. 클러스터에 사용 가능한 컨테이너 인스턴스 용량이 있는 경우 서비스 스케줄러는 교체 태스크를 시작합니다. 컨테이너 인스턴스 용량이 충분하지 않으면 문제를 나타내는 서비스 이벤트 메시지가 전송됩니다.
컨테이너 인스턴스에 있는 서비스의 일부인 RUNNING
상태의 태스크가 STOPPED
상태로 전환됩니다. 서비스 스케줄러는 서비스의 배포 유형 및 배포 구성 파라미터인 minimumHealthyPercent
및 maximumPercent
에 따라 작업을 교체하려고 시도합니다. 자세한 내용은 Amazon ECS 서비스 및 Amazon ECS 서비스 정의 파라미터 단원을 참조하세요.
-
만약
minimumHealthyPercent
가 100% 미만이면 스케줄러는 태스크 대체 도중desiredCount
를 일시적으로 무시할 수 있습니다. 예를 들어desiredCount
가 4개 작업인 경우, 50%의 최솟값은 스케줄러가 새로운 2개 태스크를 시작하기 전에 2개의 기존 태스크를 중지하도록 허용합니다. 최솟값이 100%인 경우, 서비스 스케줄러는 대체 태스크가 이 정상 상태라고 간주될 때까지 기존 태스크를 제거할 수 없습니다. 로드 밸런서를 사용하지 않는 서비스의 태스크는RUNNING
상태일 경우에 정상 상태로 간주됩니다. 로드 밸런서를 사용하는 서비스의 태스크는RUNNING
상태이고 태스크가 호스팅된 컨테이너 인스턴스가 로드 밸런서에 의해 정상 상태로 보고되는 경우에 정상 상태로 간주됩니다.중요
Spot Instances를 사용하고
minimumHealthyPercent
가 100% 이상인 경우 Spot Instance 종료 전에 서비스에서 작업을 교체할 시간이 충분하지 않습니다. -
maximumPercent
파라미터는 작업 대체 도중 실행 중인 작업 수의 상한을 나타내며, 이를 통해 대체 배치 크기를 정의할 수 있습니다. 예를 들어desiredCount
가 4개 태스크인 경우, 200%의 최댓값은 드레이닝할 4개 태스크를 중지하기 전에 4개의 새 태스크를 시작합니다(이렇게 하는 데 필요한 클러스터 리소스를 사용할 수 있는 경우). 최댓값이 100%인 경우, 드레이닝 작업이 중지될 때까지 대체 태스크를 시작할 수 없습니다.중요
minimumHealthyPercent
와maximumPercent
가 모두 100%이면 서비스에서 기존 태스크를 제거할 수 없으며 교체 태스크도 시작할 수 없습니다. 그러면 컨테이너 인스턴스 드레이닝이 실패하고 새 배포가 만들어지지 않습니다.
독립 실행형 태스크에 대한 드레이닝 동작
PENDING
또는 RUNNING
상태의 모든 독립 실행형 태스크는 영향을 받지 않습니다. 스스로 중지할 때까지 기다리거나 수동으로 중지해야 합니다. 컨테이너 인스턴스는 DRAINING
상태를 유지합니다.
컨테이너 인스턴스는 인스턴스에서 실행 중인 모든 태스크가 STOPPED
상태로 전환되면 드레이닝을 완료합니다. 컨테이너 인스턴스는 다시 활성화되거나 삭제될 때까지 DRAINING
상태를 유지합니다. containerInstance
파라미터와 함께 ListTasks 태스크를 사용하여 컨테이너 인스턴스에 있는 태스크의 상태를 확인하고, 상태를 확인할 각 태스크의 Amazon 리소스 이름(ARN) 또는 ID와 함께 DescribeTasks 태스크를 사용하여 인스턴스에 있는 태스크 목록을 가져옵니다.
컨테이너 인스턴스가 태스크를 다시 호스팅할 준비가 되면 컨테이너 인스턴스의 상태를 DRAINING
에서 ACTIVE
로 변경합니다. 그러면 Amazon ECS 서비스 스케줄러는 컨테이너 인스턴스를 다시 작업 배치로 간주합니다.
절차
다음 단계를 사용하여 컨테이너 인스턴스를 새 AWS Management Console을 사용한 드레이닝으로 설정할 수 있습니다.
UpdateContainerInstancesState API 작업 또는 update-container-instances-state 명령을 사용하여 컨테이너 인스턴스의 상태를 DRAINING
으로 변경할 수도 있습니다.
AWS Management Console
https://console.aws.amazon.com/ecs/v2
에서 콘솔을 엽니다. -
탐색 창에서 클러스터(Clusters)를 선택합니다.
-
클러스터(Clusters)페이지에서 인스턴스를 호스팅하는 클러스터를 선택합니다.
-
클러스터:
name
(Cluster : name) 페이지에서 인프라(Infrastructure) 탭을 선택합니다. 컨테이너 인스턴스(Container instances)에서 드레이닝할 각 컨테이너 인스턴스의 확인란을 선택합니다. -
Actions(작업), Drain(드레이닝)을 차례로 선택합니다.