[aws] 오토스케일링 그룹에 속한 EC2의 Scale In 순서(default 종료 정책)

2022. 5. 15. 23:24✅ STUDY/AWS

안녕하세요:)
오늘은 오토스케일링 그룹에 속한 EC2 인스턴스의 삭제 순서를 알아보도록 할게요!

aws docs를 참고하였습니다!


종료 정책

  • Amazon EC2 Auto Scaling은 종료 정책을 사용하여 축소 이벤트 중에 처음 종료할 인스턴스를 결정
  • 종료 정책이란, 종료할 인스턴스를 선택할 때 Amazon EC2 Auto Scaling가 사용할 종료 기준을 정의하는 것
  • Auto Scaling 그룹은 기본 종료 정책을 사용하지만, 원하는 경우 자신의 종료 기준에 따라 자체 종료 정책을 선택하거나 생성 가능
  • Amazon EC2 Auto Scaling은 인스턴스 축소 보호 제공함
    이 기능을 사용하면 축소 이벤트 중에 인스턴스가 종료되지 않습니다. Auto Scaling 그룹을 생성할 때 인스턴스 축소 보호를 활성화할 수 있으며 실행 중인 인스턴스의 설정을 변경할 수 있습니다. 기존 Auto Scaling 그룹에서 인스턴스 축소 보호를 활성화하면 그 이후에 시작된 모든 새 인스턴스에는 인스턴스 축소 보호 기능이 활성화되어 있습니다.



기본 종료 정책

기본적으로 종료 정책 설정을 변경을 하지 않았다면, Auto Scaling 그룹은 기본 종료 정책인 아래 순서로 인스턴스를 종료합니다!

1. 혼합 인스턴스 유형인 경우, 두 가지 유형(스팟 또는 온디맨드) 중 어떤 유형을 종료해야 하는지 식별
스팟 또는 온디맨드 유형으로 배포되어 있는 혼합 인스턴스 유형인 경우, 스팟 또는 온디맨드 중 어떤 유형을 먼저 종료해야 하는지 식별합니다.
2. 가용영역 균형 유지

가용 영역 하나의 인스턴스 수가 오토스케일링 그룹에서 사용하는 그 외 가용 영역보다 많으면, 많이 배포되어 있는 가용영역의 서버를 우선 삭제합니다. 해당 가용영역에 서버가 여러대 배포되어 있을 경우에는, 아래 종료 정책의 순서로 삭제할 서버를 결정합니다.
3. launch configuration을 사용하고 있는 서버 중, 가장 오래된 서버 확인하고 삭제
이 중에서 가장 오래된 launch configuration을 사용하는 인스턴스를 확인합니다.
4. launch template을 사용하는 서버 중, 가장 오래된(가장 버전이 낮은) launch template을 사용하는 서버 확인하고 삭제
launch configuration을 사용하는 서버가 없다면 가장 오래된 launch template을 사용하는 서버를 확인합니다.
5. 다음 과금 시간에 가장 가까운 인스턴스를 삭제
위 기준을 적용한 후에도 기준을 충족하는 서버가 여러개 있을 경우, 다음 과금 시간에 가장 가까운 인스턴스를 종료합니다.
온디맨드 기준 과금이 1시간 단위이기 때문에, 50분 사용한 인스턴스와 30분 사용한 인스턴스가 있다면 50분 사용한 서버를 삭제하여 1시간이 되어 요금이 더 과금되지 않도록 한다는 것입니다.
6. 랜덤 종료

이마저도 해당되는 서버가 여러개일 경우에는 이들 인스턴스 중 하나를 랜덤으로 종료합니다.

 

다른 종료 정책

기본 종료 정책을 사용하지 않고, 아래의 사전 정의된 종료 정책을 선택할 수 있습니다!
EC2 Auto Scaling 콘솔 > 세부 정보(details) > 고급 구성(advanced configurations) > Edit 에서 다른 종료 정책으로 선택하거나, 적용해야 하는 순서대로 나열된 여러 종료 정책으로 바꿀 수 있습니다.

  • Default
    위에서 설명한 기본 종료 정책에 따라 인스턴스를 종료합니다.
    이 정책은 스팟 인스턴스가 종료되거나 교체될 때마다 최적의 풀에서 스팟 인스턴스를 계속 사용할 수 있도록 스팟 할당 전략을 다른 정책보다 우선적으로 적용하려는 경우에 유용합니다.
    또한, 시작 구성에서 벗어나 시작 템플릿 사용을 시작하려는 경우에도 유용합니다.
  • Allocation Strategy
    Auto Scaling 그룹의 인스턴스를 종료하여 종료 중인 인스턴스 유형(스팟 인스턴스 또는 온디맨드 인스턴스)에 대한 할당 전략에 나머지 인스턴스를 정렬합니다.
    이 정책은 선호하는 인스턴스 유형이 변경된 경우에 유용합니다.
    스팟 할당 전략이 lowest-price인 경우 가장 저렴한 N개의 스팟 풀에 걸쳐 스팟 인스턴스의 분포를 점진적으로 재조정할 수 있습니다.
    스팟 할당 전략이 capacity-optimized 사용 가능한 스팟 용량이 더 많은 스팟 풀 전체에 걸쳐 스팟 인스턴스 배포의 균형을 점차적으로 재조정할 수 있습니다.
    또한 우선 순위가 낮은 유형의 온디맨드 인스턴스를 우선 순위가 높은 유형의 온디맨드 인스턴스로 점진적으로 교체할 수도 있습니다.
  • OldestLaunchTemplate
    가장 오래된 launch template이 있는 인스턴스를 종료합니다.
    이 정책을 사용하면 이전에 사용하던 launch template을 사용하는 인스턴스가 먼저 종료된 다음 현재 launch template의 가장 오래된 버전을 사용하는 인스턴스가 종료됩니다.
    이 정책은 그룹을 업데이트하고 이전 설정의 인스턴스를 단계적으로 제거할 때 유용합니다.
  • OldestLaunchConfiguration
    가장 오래된 launch Configuration이 있는 인스턴스를 종료합니다.
    이 정책은 그룹을 업데이트하고 이전 설정의 인스턴스를 단계적으로 제거할 때 유용합니다.
  • ClosestToNextInstanceHour
    다음 청구 시간에 가장 가까운 인스턴스를 종료합니다.
    이 정책은 시간당 요금이 부과되는 인스턴스의 사용을 극대화하는 데 도움이 됩니다. (Amazon Linux, Windows 또는 Ubuntu를 사용하는 인스턴스만 1초 단위로 청구됩니다.)
    온디맨드 기준 과금이 1시간 단위이기 때문에, 50분 사용한 인스턴스와 30분 사용한 인스턴스가 있다면 50분 사용한 서버를 삭제하여 1시간이 되어 요금이 더 과금되지 않도록 한다는 것입니다.
  • NewestInstance
    그룹의 최신 인스턴스를 종료합니다.
    이 정책은 새로운  launch template이나 launch configuration으로 생성된 인스턴스를 테스트하지만 프로덕션 환경에서는 유지하고 싶지 않을 때 유용합니다.
  • OldestInstance
    그룹에서 가장 오래된 인스턴스를 종료합니다.
    이 옵션은 Auto Scaling 그룹의 인스턴스를 새로운 EC2 인스턴스 유형으로 업그레이드할 때 유용합니다. 이전 유형의 인스턴스를 새 유형의 인스턴스로 점진적으로 교체할 수 있습니다.




참고) https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/as-instance-termination.html

 

축소 시 종료할 Auto Scaling 인스턴스 제어 - Amazon EC2 Auto Scaling

인스턴스 축소 보호는 인적 오류(예: 누군가 Amazon EC2 콘솔 또는 AWS CLI를 사용하여 인스턴스를 수동으로 종료한 경우) 발생 시 인스턴스가 종료되지 않도록 보장하지 않습니다. 인스턴스가 실수

docs.aws.amazon.com

https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html

 

Work with Amazon EC2 Auto Scaling termination policies - Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling always balances instances across Availability Zones first, regardless of which termination policy is used. As a result, you might encounter situations in which some newer instances are terminated before older instances. For example,

docs.aws.amazon.com