ASG의 종료 규칙
인스턴스가 종료되는 방식에는 규칙이 있다.
기본 규칙
ASG는 가용 영역 전체에 걸쳐 인스턴스 수의 균형을 맞추려 할 것이다.
간단한 버전의 규칙
ASG는 기본 종료 규칙이 있는데 이에 대한 더 간단한 버전의 규칙이 있다.
그 규칙은 다음과 같다.
1. 가장 많은 인스턴스가 있는 가용영역을 찾는다.
2. 만약 해당 가용 영역에 여러 개의 인스턴스가 있다면
가장 오래된 실행 구성이나 실행 템플릿이 있는 인스턴스를 삭제한다.
아래의 도식을 보면, ASG은 가용영역 A를 선택할 것이다. 왜냐하면 가장 많은 인스턴스가 있는 가용영역이기 때문이다. 그리고 그 중에서는 가장 오래된 실행 구성을 갖고 있는 v1 인스턴스를 선택할 것이다.
Lifecycle Hooks
기본적으로 ASG에서 인스턴스가 실행되자마자 서비스가 시작되지만 인스턴스가 실행될 때 발생하는 긴 프로세스가 있는데 이를 수명주기 후크라 한다.
- 인스턴스가 서비스 중인 상태가 되기 전에 추가적인 step을 거칠 수 있다면 이를 Pending state라 한다.
- 아래와 같은 과정을 거친다.
- 인스턴스가 실행되면 이는 보류 상태가 된다.
- 보류 상태에서 수명 주기 후크를 정의하면 인스턴스가 보류 대기 상태로 바로 전환 되고 해당 인스턴스를 구성하거나 많은 작업을 수행할 수 있는 옵션이 생긴다.
- 그 다음, 준비가 되면 보류 - 진행 단계로 이동한다.
- 이 단계에 들어오면 바로 서비스가 시작 된다.
수명 주기 후크가 있는 지 없는 지 확인한 후 이에 따라 보류에서 서비스 중으로 상태가 바뀌는 것이다.
- 종료시에도 마찬가지로, 종료 전에 특정 actions를 실행할 수 있는데 이를 Terminating state라 한다.
- 만약, 비정상 인스턴스를 새 인스턴스로 교체할 때 충돌하는 인스턴스가 있다면 문제를 해결해야 하기 때문에 수명 주기 후크를 사용해 문제를 해결할 수 있다.
만약 완전히 종료하기 전에 특정 로그나 파일을 추출하려 하는 경우가 있을 수 있는데 이는 수명 주기 후크를 이용하는 사례가 될 수 있다.
Launch Template & Launch Configuration
두 가지 모두에 해당하는 특성
- AMI의 ID, 인스턴스 타입, 키 페어, 보안 그룹, EC2를 시작하기 위한 다른 여러 파라미터들(태그, EC2 user-data 등등)
Launch Configuration(legacy)
- 단일 매개변수를 업데이트할 때마다 다시 생성되어야 한다.
Launch Template(newer)
- 버전 관리가 가능하다.
- 파라미터의 서브셋을 생성해서 여러 템플릿에서 재사용할 수 있으며 상속해야 하는 부분의 구성을 정의할 수 있다.
- 온디맨드 인스턴스와 스팟 인스턴스를 혼합해서 프로비저닝 하여 실행 구조보다 비용 구조가 더 나은 스팟 플릿을 갖게 될 수 있다.
- T2 무제한 버스트 기능도 사용할 수 있다.
- 현재 AWS가 권장하는 방식이다(Launch Configuration은 권장되지 않음)