Auto Scaling Group (ASG)
Auto Scaling Group (ASG) : 트래픽의 변동에 따라 자동으로 AWS API를 호출하여 EC2 인스턴스를 늘리거나 줄여주는 기능 (자동 Scale out/in)
특징
- 매개변수를 통해 EC2 인스턴스의 최대/최소/희망 갯수를 조절할 수 있음
- ASG를 Load Balancer와 연결할 경우, ASG내의 인스턴스가 추가될 때 자동으로 Load Balancer와 연결됨
- ASG내 특정 인스턴스의 상태가 비정상일 경우, 해당 인스턴스를 종료하고 새로운 인스턴스를 생성함 (희망갯수 유지)
- ASG is free
- scale out/in 시, 희망갯수는 최대/최소 갯수 내에서 설정됨
- ELB가 비정상이라고 판단하는 인스턴스가 ASG내에 있을 경우, ASG는 해당 인스턴스를 자동으로 종료하고 새로운 인스턴스를 생성
- Launch Template : EC2 인스턴스를 시작하는 방법에 대한 정보가 포함되어 있음
- AMI
- Instance Type
- EC2 User Data
- EBS Volumes
- Security Groups
- SSH key pair
- IAM Roles for your EC2 Instances
- Network + Subnets Information
- Load Balancer Information
- etc...
- Scaling 정책 정의 필요
- CloudWatch : 모니터링 지표(metric, CPU사용량 등)을 기반으로 Alarm을 울리는 기능 -> CloudWatch Alarm 기반으로 scale out/in을 수행할 수 있음 -> Alarm기반 Scaling 정책
- CloudWatch : 모니터링 지표(metric, CPU사용량 등)을 기반으로 Alarm을 울리는 기능 -> CloudWatch Alarm 기반으로 scale out/in을 수행할 수 있음 -> Alarm기반 Scaling 정책
- Capacity
- Load Balancer + ASG is good
- Dynamic Scaling Policies
- Target Tracking Scaling
- CloudWatch를 생성할 수 있음
- case : EC2 인스턴스의 CPU사용량을 추적하여 수치가 40%에 머무를 수 있도록 조정 (기준치 설정 필요)
- Simple/Step Scaling
- 기생성된 CloudWatch 활용
- case 1 : CloudWatch Alarm을 설정하고 전체 ASG의 CPU사용량이 70%를 초과하는 경우, 인스턴스 두개 추가
- case 2 : CloudWatch Alarm을 설정하고 전체 ASG의 CPU사용량이 30%를 미달하는 경우, 인스턴스 한개 삭제
- CloudWatch 설정 시, 인스턴스를 몇개 추가하고 삭제할 것인지에 대한 설정 필요
- Step Scaling : 다수의 경보 값을 기준으로 여러 Scaling Step을 진행하도록 할 수 있음
Scheduled Actions
- 사용자 트래픽 증감의 예측이 가능할 때
- case : 금요일 오후 5시에 큰 이벤트가 예정되어 있으니 많은 사람들의 사용을 대비하여 ASG의 최소용량을 매주 금요일 오후 5시마다 자동으로 10으로 늘려줌 -> Scaling 작업을 예약
Predictive Scaling
- AWS내 Auto Scaling 서비스를 활용하여 지속적으로 트래픽 이력을 생성
- 머신러닝 기반
- 생성된 트래픽 이력을 보고 다음 트래픽을 예측하여 Scaling 진행 -> 자동 Scaling 작업 예약
Scaling을 위한 Metics
- CPU 사용량
- 타겟당 요청 수 (Request Count per Target)
- 평균 네트워크 입출력량 (Average Network In/Out) -> 네트워크에 연결되어 있는 상태에서 네트워크 병목을 방지를 위함
- Any Custom Metrics (CloudWatch 활용)
- Request Count per Target
- Scaling Cooldown : 스케일링 작업이 끝날 때마다 기본적으로 5분 or 300초의 Cooldown 시간을 갖는 기능
- 인스턴스의 안정적인 생성과 새롭게 기록되는 지표(metric)들의 양상을 정확하게 확인하기 위함
- Cooldown 시간 동안에는 ASG가 인스턴스를 생성하거나 종료시킬 수 없음
- 인스턴스 구성 시간을 단축시킬 수 있는 AMI를 활용하여 인스턴스를 보다 빠르게 생성하여 요청을 받을 수 있는 상태로 만드는 것이 좋음 -> 별도 cooldown 시간을 단축시킬 수 있음 -> ASG상의 더 많은 Scaling 작업을 진행할 수 있음
- stress amazone linux2 설치를 통해 임의로 인스턴스의 CPU사용량을 늘릴 수 있음
'개발 > AWS' 카테고리의 다른 글
[AWS] Route 53 (0) | 2024.05.18 |
---|---|
[AWS] Amazon RDS/Aurora/ElastiCache (1) | 2024.05.10 |
[AWS] Load Balancer (0) | 2024.05.06 |
[AWS] EC2 (3) (0) | 2024.05.03 |
[AWS] EC2 (2) (1) | 2024.04.30 |