Auto Scaling Group (ASG)

이성우·2024년 7월 9일

AWS

목록 보기
11/12

EC2 인스턴스 생성 및 종료를 자동으로 해주는 것

ASG의 목표 : Scale out, Scale in
즉, 증가한 로드에 맞춰 EC2 인스턴스를 추가하거나,
감소한 로드에 맞춰 EC2 인스턴스를 제거하는 것

  • 로드 밸런서와 페어링하는 경우 ASG에 속한 모든 EC2 인스턴스가 로드 밸런서에 연결된다
  • 한 인스턴스가 비정상이면 종료하고, 이를 대체한 새 EC2 인스턴스를 생성할 수 있음

놀랍게도 무료다...!!!


AWS에서의 ASG 작동에 대해 알아보자
1. 최소 용량 (Minimum Capacity), ASG 내 인스턴스의 최소 개수를 설정한다.
2. 희망 용량(Desired Capacity), ASG 내 인스턴스의 희망 개수를 설정한다.
3. 최대 용량(Maximum Capacity), ASG 내 인스턴스의 최대 개수를 설정한다.

최대 용량 내에서 희망 용량을 더 높은 숫자로 설정 -> Scale out ( EC2 인스턴스 추가)

핵심인 ELB에서의 ASG에 대해 살펴보자.

ASG에 4개의 인스턴스가 등록되어 있으면 , ELB로 분산시킬 수 있다.
즉, ASG안에 있는 EC2들은 ELB와 연결이 되어있다는 것.
ELB는 헬스체크를 하고, 비정상인 EC2를 알려줄 수 있다.
이 때, 비정상이라 판단하는 EC2 인스턴스를 ASG가 종료할 수 있다!

또한, Scale out이 되어 EC2 인스턴스가 생성되었다면, ELB가 트래픽을 보내고 로드를 분산시킬 것이다!

CloudWatch 경보를 기반으로 ASG를 Scale in, Scale out 할 수 있다.
CloudWatch: AWS에서 제공해주는 모니터링 툴

그림을 보면서 이해해보자.
CloutWatch에서 EC2 인스턴스의 CPU 사용량을 체킹하고 있고,
CPU 사용량이 60% 이상이 될 시 CloudWatch 알람을 통해 자동으로 Scale out을 하도록 설정한 것.
반대로 CPU 사용량이 20% 이하일 경우, CloudWatch 알람을 보내고 자동으로 Scale in을 해 비용을 절감할 수도 있다.

기가막히다 진짜,,, AWS 참 대단한 거 같아요

어떤 기준으로 오토 스케일링을 하면 될까?
1. 동적 스케일링 정책 (Dynamic Scaling Policies)

  • Target Tracking Scaling(대상 추적 스케일링)
    ex) ASG의 평균 CPU 사용률을 추적하여 이 수치가 40%대에 머무를 수 있도록 할 때 사용
  • Simple/ Step Scaling (단순/단계 스케일링)
    ex) CloudWatch 경보를 설정하고, 전체 ASG에 대한 CPU 사용률이 70%를 초과하는 경우, 2개의 EC2 인스턴스 생성+
    전체 ASG에 대한 CPU 사용률이 30% 미만인 경우, 인스턴스 하나 삭제
    -> CloudWatch 알람을 설정 할 때는, 한 번에 추가할 유닛 수+ 한 번에 제거할 유닛 수를 설정해줘야함
  • Scheduled Actions: 나와있는 사용 패턴을 바탕으로 스케일링 예상
    ex) 금요일 오후 5시마다 큰 이벤트가 있으니 이를 대비해 ASG 최소 용량을 10개로 변경

어플리케이션에 따라 다르겠지만 보통 어떤걸 기반으로 할까?
1. CPUUtilization(평균 CPU 사용률)
2. RequestCountPerTarget (대상별 요청 수 지표)

이 경우에, Target Value가 3이니 이 지표를 가지고 ASG 설정
3. Average Network In/Out

Scaling Cooldown

  • 스케일링 작업이 끝날 때마다 기본적으로 5분의 휴식 기간을 가지는 것
  • 휴식 기간동안은 ASG가 추가 인스턴스를 실행 또는 종료할 수 없음

따라서 스케일링 작업이 필요할 때 기본적으로 설정된 Cooldown이 있는지 확인해야 함

Load Balancer와 Auto Scaling이 합쳐지니까 어마무시한거같다
끝!

profile
이성우

0개의 댓글