ASG를 통해 scale-out/scale-in 할 수 있으며 desired 개수의 머신이 항상 작동하도록 할 수 있다. 또한, scale-out 하면 로드 밸런서에 자동으로 새로운 인스턴스가 등록 된다.
ASG를 구성하는 속성
Launch configuration
- EC2 instance를 수동으로 설정했을 때 보았던 구성 요소들을 의미한다.
Min 용량/Max 용량/desired 용량
네트워크 + 서브넷 정보
로드 밸런서 정보
Scaling Policies
- 무엇이 스케일 아웃 또는 스케일 인을 트리거 하도록 만들 지를 정의한다.
Auto Scaling Alarms
CloudWatch 알람을 기반으로 ASG를 scale 할 수 있다.
알람은 metric을 모니터링 한다.
- 예를 들면, 평균 CPU가 이에 해당한다.
metric은 평균 값을 확인한다.
이러한 알람을 기반으로 scale-out 정책 또는 scale-in 정책을 생성할 수 있다.
Auto Scaling의 새로운 규칙
아래와 같이, 이제는 더 나은 오토 스케일링 규칙을 정의하는 것이 가능하다.
- Target 평균 CPU 사용량
- 한 ELB의 인스턴스 당 요청 개수
- 평균 네트워크 인/아웃
Auto Scaling Custom Metric
custom metric을 기반으로 auto scaling 하도록 정의할 수 있다.
- 가령, 연결된 유저 수를 기반으로 하는 것 역시 가능하다.
그러면 Auto scaling 되는 과정은 다음과 같다.
1. application이 CloudWatch로 custom metric을 전송한다.
- PutMetric API를 이용하면 된다.
2. 낮거나 높은 값에 대해 반응하는 CloudWatch 알람을 생성한다.
3. 해당 알람을 ASG의 scaling policy로 사용한다.
정리
Auto scaling policies는 CPU, Network, 그리고 커스텀 metric, 또는 스케줄을 기반으로 하는 것 역시 가능하다.
Auto scaling group에 IAM 역할을 연결시키면 해당 IAM 역할은 자동으로 EC2 인스턴스에 할당된다.
ASG는 무료이지만 이에 의해 리소스가 launch 된다면 이에 대해서는 비용을 지불해야 한다.
만약 특정 인스턴스가 어떤 이유로든 종료되었다면 ASG는 이를 자동으로 인식해 새로운 인스턴스를 하나 생성해 준다. 따라서 안전이 보장 된다.
ASG는 ELB가 비정상이라고 판단한 인스턴스를 종료시키고 새로운 인스턴스를 생성해 교체한다.