Amazon Elastic Container Service(Amazon ECS) 클러스터에서 용량 공급자를 사용합니다. 실행 중인 작업이 있는 경우 Auto Scaling 그룹의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 활성 상태로 유지하려고 합니다.
간략한 설명
용량 공급자를 사용하는 경우 스케일 다운할 때 실행 중인 작업을 방해하지 않도록 Amazon ECS 클러스터 설정을 구성해야 합니다. EC2 Auto Scaling 그룹에서 스케일 인 인스턴스 보호를 구현하고 Amazon ECS 용량 공급자 설정에서 관리형 규모 조정 보호를 구현합니다. 이 구성을 사용하면 Amazon ECS가 실행 중인 작업이 있는 인스턴스를 유지할 수 있습니다.
또는 인스턴스를 중지할 때 Amazon ECS가 작업을 정상적으로 드레이닝하도록 구성하고, 특정 인스턴스가 조기에 중지되지 않도록 보호하십시오.
구성에는 다음 구성 요소가 사용됩니다.
- 용량 공급자: 용량 공급자는 Auto Scaling 그룹을 사용하여 EC2 인스턴스를 동적으로 프로비저닝합니다.
- 인스턴스 드레이닝: Auto Scaling 그룹의 EC2 인스턴스가 종료 대상으로 표시되면 해당 인스턴스는 드레이닝 상태로 전환되고 더 이상 새 작업을 수락하지 않습니다. 실행 중인 작업은 완료하거나 다른 인스턴스로 이동해야 합니다.
- 클러스터 오토 스케일링: 클러스터 오토 스케일링은 용량 공급자를 사용하여 작업 요구 사항에 따라 Auto Scaling 그룹의 규모를 자동으로 조정합니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
Amazon ECS 또는 Auto Scaling 그룹이 스케일 인 중에 인스턴스를 조기에 종료하지 않도록 하십시오.
클러스터 오토 스케일링에서 관리형 종료 보호를 사용하려면 Auto Scaling 그룹에서 인스턴스 스케일 인 보호를 활성화해야 합니다. 이 작업을 통해 Auto Scaling 그룹은 실행 중인 작업이 있는 인스턴스를 유지합니다.
스케일 인 보호를 활성화하려면 다음 update-auto-scaling-group AWS CLI 명령을 실행합니다.
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name my-asg \
--new-instances-protected-from-scale-in
참고: my-asg를 Auto Scaling 그룹 이름으로 바꾸십시오.
그 후 다음 put-cluster-capacity-providers 명령을 실행하여 관리형 종료 보호를 활성화하여 Amazon ECS에서 실행 중인 작업이 있는 인스턴스를 유지하도록 합니다.
aws ecs put-cluster-capacity-providers \
--cluster my-cluster \
--capacity-providers my-capacity-provider \
--enable-managed-scaling \
--managed-termination-protection ENABLED
참고: my-cluster를 클러스터 이름으로 바꾸고 my-capacity-provider를 용량 공급자 이름으로 바꾸십시오.
인스턴스를 제거할 때 작업을 정상적으로 드레이닝하도록 Amazon ECS 구성
인스턴스에서 작업을 제거할 때 작업을 정상적으로 드레이닝하는 것이 가장 좋습니다. 관리형 인스턴스 드레이닝을 사용하여 Amazon ECS가 종료 전에 다른 인스턴스의 작업 일정을 조정하도록 허용합니다.
관리형 인스턴스 드레이닝을 활성화하려면 다음 update-capacity-provider 명령을 실행합니다.
aws ecs update-capacity-provider \
--name my-cp \
--auto-scaling-group-provider '{
"managedDraining": "ENABLED"
}
참고: my-cp를 용량 공급자 이름으로 바꾸십시오.
Amazon ECS는 용량이 허용하는 한 인스턴스의 작업을 다른 인스턴스로 이동합니다. 그러나 Amazon ECS는 인스턴스를 드레이닝하는 데 최대 48시간을 허용합니다. 이 기간 이후에도 인스턴스에 작업이 남아 있는 경우 Amazon ECS는 인스턴스를 종료하고 나머지 작업을 중지합니다.
특정 중요 작업 유지
작업 보호를 사용하여 Amazon ECS 규모 조정 또는 배포 작업으로 인해 중요한 작업이 중단되지 않도록 하십시오.
중요: 작업 보호를 활성화하더라도 Amazon ECS는 여전히 기본 인스턴스를 종료할 수 있습니다. 작업 보호는 작업이 중지되지 않도록만 보호합니다.
작업 보호를 활성화하려면 다음 update-task-protection 명령을 실행합니다.
aws ecs update-task-protection \
--cluster my-cluster \
--tasks my-task-id \
--protection-enabled
참고: my-cluster를 클러스터 이름으로 바꾸고 my-task-id를 작업 ID로 바꾸십시오. 기본적으로 보호는 2시간 동안 지속됩니다. 이 기간을 변경하려면 --expires-in-minutes 옵션을 사용하십시오.
클러스터의 작업 보호 상태를 확인하려면 다음 get-task-protection 명령을 실행합니다.
aws ecs get-task-protection \
--cluster my-cluster \
--tasks my-task-id
참고: my-cluster를 클러스터 이름으로 바꾸고 my-task-id를 작업 ID로 바꾸십시오.
추가 문제 해결
Auto Scaling 그룹, 용량 공급자 및 작업에 대한 보호를 활성화했는데도 여전히 문제가 발생하면 다음 조치를 취하십시오.
관련 정보
스케일 인 이벤트로 인해 Amazon ECS 작업이 종료되지 않도록 보호
GetTaskProtection
UpdateTaskProtection
GitHub 웹사이트의 Amazon Elastic Container Service(Amazon ECS) 작업 보호 예제