인스턴스를 안전하게 종료하도록 Amazon ECS 용량 공급자 구성하기
인스턴스를 안전하게 종료하도록 Amazon ECS 용량 공급자 구성하기
관리형 인스턴스 드레이닝(managed instance draining)을 켜면 Auto Scaling 그룹 용량 공급자에서 인스턴스를 안전하게 종료할 수 있어요. 용량 공급자를 만들 때 기본적으로 켜져 있어요.
출처: 문서
본문
Amazon ECS 콘솔과 AWS CLI를 사용해 Auto Scaling 그룹 용량 공급자를 만들거나 업데이트할 때 관리형 인스턴스 드레이닝을 켤 수 있습니다.
참고: 용량 공급자를 만들 때 관리형 인스턴스 드레이닝은 기본적으로 켜져 있습니다.
다음은 관리형 인스턴스 드레이닝이 활성화된 용량 공급자를 만들고, 클러스터의 기존 용량 공급자에 대해 관리형 인스턴스 드레이닝을 활성화하는 AWS CLI 사용 예시입니다.
관리형 인스턴스 드레이닝이 활성화된 용량 공급자 만들기
관리형 인스턴스 드레이닝이 활성화된 용량 공급자를 만들려면 create-capacity-provider 명령을 사용하세요. managedDraining 매개변수를 ENABLED로 설정하세요.
aws ecs create-capacity-provider \
--name capacity-provider \
--auto-scaling-group-provider '{
"autoScalingGroupArn": "asg-arn",
"managedScaling": {
"status": "ENABLED",
"targetCapacity": 100,
"minimumScalingStepSize": 1,
"maximumScalingStepSize": 1
},
"managedDraining": "ENABLED",
"managedTerminationProtection": "ENABLED",
}'
응답:
{
"capacityProvider": {
"capacityProviderArn": "capacity-provider-arn",
"name": "capacity-provider",
"status": "ACTIVE",
"autoScalingGroupProvider": {
"autoScalingGroupArn": "asg-arn",
"managedScaling": {
"status": "ENABLED",
"targetCapacity": 100,
"minimumScalingStepSize": 1,
"maximumScalingStepSize": 1
},
"managedTerminationProtection": "ENABLED"
"managedDraining": "ENABLED"
}
}
}
클러스터의 기존 용량 공급자에 대해 관리형 인스턴스 드레이닝 활성화
클러스터의 기존 용량 공급자에 대해 관리형 인스턴스 드레이닝을 활성화하려면 update-capacity-provider 명령을 사용합니다. managedDraining이 현재 DISABLED이고 updateStatus가 UPDATE_IN_PROGRESS라고 표시되는 것을 볼 수 있습니다.
aws ecs update-capacity-provider \
--name cp-draining \
--auto-scaling-group-provider '{
"managedDraining": "ENABLED"
}
응답:
{
"capacityProvider": {
"capacityProviderArn": "cp-draining-arn",
"name": "cp-draining",
"status": "ACTIVE",
"autoScalingGroupProvider": {
"autoScalingGroupArn": "asg-draining-arn",
"managedScaling": {
"status": "ENABLED",
"targetCapacity": 100,
"minimumScalingStepSize": 1,
"maximumScalingStepSize": 1,
"instanceWarmupPeriod": 300
},
"managedTerminationProtection": "DISABLED",
"managedDraining": "DISABLED" // before update
},
"updateStatus": "UPDATE_IN_PROGRESS", // in progress and need describe again to find out the result
"tags": [
]
}
}
ATTACHMENTS를 포함해 describe-clusters 명령을 사용하세요. 관리형 인스턴스 드레이닝 첨부의 상태는 PRECREATED이고, 전체 attachmentsStatus는 UPDATING입니다.
aws ecs describe-clusters --clusters cluster-name --include ATTACHMENTS
응답:
{
"clusters": [
{
...
"capacityProviders": [
"cp-draining"
],
"defaultCapacityProviderStrategy": [],
"attachments": [
# new precreated managed draining attachment
{
"id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"type": "managed_draining",
"status": "PRECREATED",
"details": [
{
"name": "capacityProviderName",
"value": "cp-draining"
},
{
"name": "autoScalingLifecycleHookName",
"value": "ecs-managed-draining-termination-hook"
}
]
},
...
],
"attachmentsStatus": "UPDATING"
}
],
"failures": []
}
업데이트가 완료되면 describe-capacity-providers를 사용하세요. managedDraining이 이제 ENABLED인 것을 볼 수 있습니다.
aws ecs describe-capacity-providers --capacity-providers cp-draining
응답:
{
"capacityProviders": [
{
"capacityProviderArn": "cp-draining-arn",
"name": "cp-draining",
"status": "ACTIVE",
"autoScalingGroupProvider": {
"autoScalingGroupArn": "asg-draning-arn",
"managedScaling": {
"status": "ENABLED",
"targetCapacity": 100,
"minimumScalingStepSize": 1,
"maximumScalingStepSize": 1,
"instanceWarmupPeriod": 300
},
"managedTerminationProtection": "DISABLED",
"managedDraining": "ENABLED" // successfully update
},
"updateStatus": "UPDATE_COMPLETE",
"tags": []
}
]
}