컨테이너 인스턴스 드레이닝 - Amazon Elastic Container Service

컨테이너 인스턴스 드레이닝

가령 시스템 업데이트를 수행하거나 도커 대몬을 업데이트하거나 클러스터 용량을 축소하기 위해 클러스터에서 컨테이너 인스턴스를 제거해야 하는 경우가 있습니다. Amazon ECS는 컨테이너 인스턴스를 DRAINING 상태로 전환할 수 있는 기능을 제공합니다. 이것을 컨테이너 인스턴스 드레이닝이라고 합니다. 컨테이너 인스턴스를 DRAINING으로 설정할 경우 Amazon ECS는 새 작업이 컨테이너 인스턴스에서 배치를 위해 예약되지 않도록 합니다.

서비스에 대한 드레이닝 동작

PENDING 상태에 있는 서비스의 일부인 모든 태스크가 즉시 중지됩니다. 클러스터에 사용 가능한 컨테이너 인스턴스 용량이 있는 경우 서비스 스케줄러는 교체 태스크를 시작합니다. 컨테이너 인스턴스 용량이 충분하지 않으면 문제를 나타내는 서비스 이벤트 메시지가 전송됩니다.

컨테이너 인스턴스에 있는 서비스의 일부인 RUNNING 상태의 태스크가 STOPPED 상태로 전환됩니다. 서비스 스케줄러는 서비스의 배포 구성 파라미터인 minimumHealthyPercentmaximumPercent에 따라 태스크를 교체하려고 시도합니다. 자세한 정보는 서비스 정의 파라미터 섹션을 참조하세요.

  • 만약 minimumHealthyPercent가 100% 미만이면 스케줄러는 태스크 대체 도중 desiredCount를 일시적으로 무시할 수 있습니다. 예를 들어 desiredCount가 4개 작업인 경우, 50%의 최솟값은 스케줄러가 새로운 2개 태스크를 시작하기 전에 2개의 기존 태스크를 중지하도록 허용합니다. 최솟값이 100%인 경우, 서비스 스케줄러는 대체 태스크가 이 정상 상태라고 간주될 때까지 기존 태스크를 제거할 수 없습니다. 로드 밸런서를 사용하지 않는 서비스의 태스크는 RUNNING 상태일 경우에 정상 상태로 간주됩니다. 로드 밸런서를 사용하는 서비스의 태스크는 RUNNING 상태이고 태스크가 호스팅된 컨테이너 인스턴스가 로드 밸런서에 의해 정상 상태로 보고되는 경우에 정상 상태로 간주됩니다.

  • maximumPercent 파라미터는 태스크 대체 도중 실행 중인 태스크 수의 상한을 나타내며, 이를 통해 대체 배치 크기를 정의할 수 있습니다. 예를 들어 desiredCount가 4개 태스크인 경우, 200%의 최댓값은 드레이닝할 4개 태스크를 중지하기 전에 4개의 새 태스크를 시작합니다(이렇게 하는 데 필요한 클러스터 리소스를 사용할 수 있는 경우). 최댓값이 100%인 경우, 드레이닝 작업이 중지될 때까지 대체 태스크를 시작할 수 없습니다.

    중요

    minimumHealthyPercentmaximumPercent가 모두 100%이면 서비스에서 기존 태스크를 제거할 수 없으며 교체 태스크도 시작할 수 없습니다. 그러면 컨테이너 인스턴스 드레이닝이 실패하고 새 배포가 만들어지지 않습니다.

독립 실행형 태스크에 대한 드레이닝 동작

PENDING 또는 RUNNING 상태의 모든 독립 실행형 태스크는 영향을 받지 않습니다. 스스로 중지할 때까지 기다리거나 수동으로 중지해야 합니다. 컨테이너 인스턴스는 DRAINING 상태를 유지합니다.

컨테이너 인스턴스는 인스턴스에서 실행 중인 모든 태스크가 STOPPED 상태로 전환되면 드레이닝을 완료합니다. 컨테이너 인스턴스는 다시 활성화되거나 삭제될 때까지 DRAINING 상태를 유지합니다. containerInstance 파라미터와 함께 ListTasks 태스크를 사용하여 컨테이너 인스턴스에 있는 태스크의 상태를 확인하고, 상태를 확인할 각 태스크의 Amazon 리소스 이름(ARN) 또는 ID와 함께 DescribeTasks 태스크를 사용하여 인스턴스에 있는 태스크 목록을 가져옵니다.

컨테이너 인스턴스가 태스크를 다시 호스팅할 준비가 되면 컨테이너 인스턴스의 상태를 DRAINING에서 ACTIVE로 변경합니다. 그러면 Amazon ECS 서비스 스케줄러는 컨테이너 인스턴스를 다시 작업 배치로 간주합니다.

컨테이너 인스턴스 드레이닝

New AWS Management Console

새로운 AWS Management Console

다음 단계를 사용하여 컨테이너 인스턴스를 새 AWS Management Console을 사용한 드레이닝으로 설정할 수 있습니다.

  1. https://console.aws.amazon.com/ecs/에서 Amazon ECS 콘솔을 엽니다.

  2. 탐색 창에서 클러스터(Clusters)를 선택합니다.

  3. 클러스터(Clusters)페이지에서 인스턴스를 호스팅하는 클러스터를 선택합니다.

  4. 클러스터: name(Cluster : name) 페이지에서 인프라(Infrastructure) 탭을 선택합니다. 컨테이너 인스턴스(Container instances)에서 드레이닝할 각 컨테이너 인스턴스의 확인란을 선택합니다.

  5. 드레이닝(Drain)을 선택합니다.

Classic AWS Management Console

클래식 AWS Management Console

다음 단계를 사용하여 컨테이너 인스턴스를 클래식 AWS Management Console을 사용한 드레이닝으로 설정할 수 있습니다.

  1. https://console.aws.amazon.com/ecs/에서 Amazon ECS 콘솔을 엽니다.

  2. 탐색 창에서 클러스터(Clusters)를 선택하고 클러스터를 선택합니다.

  3. ECS 인스턴스(ECS Instances) 탭을 선택하고 드레이닝할 각 컨테이너 인스턴스의 확인란을 선택합니다.

  4. 작업(Actions), 인스턴스 드레이닝(Drain Instance)을 차례로 선택합니다.

  5. 인스턴스가 처리된 후 완료(Done)를 선택합니다.

  6. 컨테이너 인스턴스를 다시 활성화하려면 이러한 동일한 단계를 반복하지만 작업(Actions) 메뉴에서 인스턴스 활성화(Activate instances)를 선택합니다.

AWS CLI

UpdateContainerInstancesState API 작업 또는 update-container-instances-state 명령을 사용하여 컨테이너 인스턴스의 상태를 DRAINING으로 변경할 수 있습니다.