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 상태를 유지합니다.
Amazon ECS 관리형 인스턴스의 드레이닝 동작
Amazon ECS 관리형 인스턴스 종료 프로세스는 비용을 최적화하고 시스템 상태를 유지 관리하면서 정상적인 워크로드 전환을 보장합니다. 종료 시스템은 인스턴스 종료에 대한 세 가지 결정 경로를 제공하며, 경로마다 타이밍 특성과 고객 영향 프로파일이 서로 다릅니다.
- 고객이 시작한 종료
-
서비스에서 컨테이너 인스턴스를 즉시 제거해야 하는 경우 인스턴스 제거를 직접 제어합니다.
force요청 파라미터를 true로 설정하여deregister-container-instance를 실행합니다. 즉, 실행 중인 워크로드에도 불구하고 즉시 종료해야 합니다. - 시스템에서 시작한 유휴 종료
-
더 이상 워크로드를 지원하지 않는 인스턴스를 식별하는 지능형 유휴 감지를 통해 비용 최적화를 구현합니다. Elastic Workload Service(EWS)는 인스턴스 사용률을 모니터링하고 구성 가능한 기간에 유휴 상태로 유지되는 인스턴스에 대해 종료를 시작하는 정교한 유휴 감지 알고리즘을 구현합니다.
- 인프라 새로 고침 종료
-
인스턴스가 최신 플랫폼 버전에서 실행되고 보안 태세를 유지하기 위해 주기적으로 새로 고쳐지는 Node Manager의 자연 감소 정책을 통해 선제적 인프라 관리를 구현합니다. Node Manager는 최대 운영 수명에 도달한 인스턴스에 대해 정상적인 종료를 시작하는 Time-To-Live(TTL) 정책을 구현합니다.
종료 시스템은 인프라 관리 요구 사항과 워크로드 연속성의 균형을 맞추는 2단계 접근 방식을 구현합니다.
1단계: 정상적 완료 기간
이 단계에서 시스템은 워크로드 연속성을 우선하는 적절한 드레이닝 전략을 구현합니다. 서비스 태스크는 일반적인 Amazon ECS 예약 프로세스를 통해 정상적으로 드레이닝됩니다. 독립 실행형 태스크는 자연스럽게 완료될 수 있으므로 계속 실행됩니다. 시스템은 모든 태스크가 자연 완료 프로세스를 통해 중지 상태에 도달하는지 모니터링합니다.
2단계: 엄격한 기한 적용
정상적인 완료 시 허용 가능한 기간에 종료 목표를 달성하지 못하면 시스템은 엄격한 기한 적용을 구현합니다. 하드 기한은 일반적으로 드레이닝 시작 시간 + 7일로 설정되어 운영 요구 사항을 유지하면서 정상적으로 완료할 수 있는 상당한 시간을 제공합니다. 적용에는 자동 강제 등록 취소 절차와 완료 상태에 관계없이 나머지 모든 태스크의 즉각적인 종료가 포함됩니다.
컨테이너 인스턴스는 인스턴스에서 실행 중인 모든 태스크가 STOPPED 상태로 전환되면 드레이닝을 완료합니다. 컨테이너 인스턴스는 다시 활성화되거나 삭제될 때까지 DRAINING 상태를 유지합니다. containerInstance 파라미터와 함께 ListTasks 태스크를 사용하여 컨테이너 인스턴스에 있는 태스크의 상태를 확인하고, 상태를 확인할 각 태스크의 Amazon 리소스 이름(ARN) 또는 ID와 함께 DescribeTasks 태스크를 사용하여 인스턴스에 있는 태스크 목록을 가져옵니다.
컨테이너 인스턴스가 태스크를 다시 호스팅할 준비가 되면 컨테이너 인스턴스의 상태를 DRAINING에서 ACTIVE로 변경합니다. 그러면 Amazon ECS 서비스 스케줄러는 다시 태스크 배치에 대해 컨테이너 인스턴스를 고려합니다.
절차
다음 단계를 사용하여 컨테이너 인스턴스를 새 AWS Management 콘솔을 사용한 드레이닝으로 설정할 수 있습니다.
UpdateContainerInstancesState API 작업 또는 update-container-instances-state 명령을 사용하여 컨테이너 인스턴스의 상태를 DRAINING으로 변경할 수도 있습니다.
AWS Management 콘솔
https://console.aws.amazon.com/ecs/v2
에서 콘솔을 엽니다. -
탐색 창에서 클러스터를 선택합니다.
-
클러스터(Clusters)페이지에서 인스턴스를 호스팅하는 클러스터를 선택합니다.
-
클러스터:
name(Cluster : name) 페이지에서 인프라(Infrastructure) 탭을 선택합니다. 컨테이너 인스턴스(Container instances)에서 드레이닝할 각 컨테이너 인스턴스의 확인란을 선택합니다. -
Actions(작업), Drain(드레이닝)을 차례로 선택합니다.