본문 바로가기

Infrastructure/Certificate

[SAA] High Availability and Scalability: ASG

High Availability and Scalability: ASG

이번 장에서는 SAA를 준비하며 높은 확장성과 고가용성을 위한 Auto Scaling Group에 대해서 알아보도록 한다.


ASG(Auto Scaling Group)

  • 실생활에서 우리의 웹 사이트와 애플리케이션에게 전달되는 부하는 변경될 수 있다.
  • 클라우드에서는 서버를 매우 빠르게 생성하고 제거할 수 있다.
  • ASG의 목표는 아래와 같다.
    • 증가된 부하를 처리할 수 있도록 머신을 확장한다.
    • 감소된 부하에 맞게 머신을 축소한다.
    • 관리자가 의도한 수와 실행 중인 머신의 최소 및 최대 수가 일치하는지 확인한다.
    • 새로운 머신이 생성되었을 때 로드 밸런서에 자동으로 등록한다.

  • ASG에는 아래와 같은 속성이 있다.
    • 시작 구성
      • AMI + Instance Type
      • EC2 User Data
      • EBS Volumes
      • Security Groups
      • SSH Key Pair
    • 최소 크기 / 최대 크기 / 초기화 용량
    • 네트워크 + 서브넷 정보
    • 로드 밸런서 정보
    • 확장 정책

알람(Alarms)

  • CloudWatch 기반의 알람을 통해서 ASG 확장이 가능하다.
  • 알람은 평균 CPU와 같은 메트릭을 모니터링한다.
  • 메트릭은 전체 ASG 인스턴스를 대상으로 계산된다.
  • 알람 기준:
    • 수평 확장 정책을 생성하여 인스턴스의 수를 증가시킬 수 있다.
    • 축소 정책을 생성하여 인스턴스의 수를 감소시킬 수 있다.

  • EC2에서 직접 관리하는 “더 나은” Auto Scaling 규칙을 정의할 수 있다.
    • 목표 평균 CPU 사용량
    • 인스턴스당 ELB의 요청 수
    • 평균 네트워크 입력
    • 평균 네트워크 출력
  • 이러한 규칙은 설정하기 쉽고 경우에 따라 더 합리적일 수 있다.
  • 연결된 사용자 수와 같은 사용자 지정 메트릭을 기반으로 자동 확장할 수 있다.
    • EC2 애플리케이션에서 CloudWath(PutMetric API)로 사용자 지정 지표를 보낸다.
    • 전달받은 지표의 값에 대응하는 CloudWatch 경보를 생성한다.
    • CloudWatch 경보를 ASG에 대한 조정 정책으로 사용한다.

ASG 브레인 덤프(Brain Dump)

  • Scaling 정책은 CPU, 네트워크등에 있을 수 있으며 사용자 지정 메트릭 또는 일정을 기반으로 할 수도 있다.
  • ASG는 시작 구성 또는 시작 템플릿(최신)을 사용한다.
  • ASG를 업데이트하려면 새 시작 구성/시작 템플릿을 제공해야 한다.
  • ASG에 연결된 IAM 역할은 EC2 인스턴스에 할당된다.
  • ASG는 무료로 사용할 수 있으며, 확장되어 실행되는 인스턴스에 대한 비용만 지불하면 된다.
  • ASG 아래에 인스턴스가 있다는 것은 어떤 이유로든 인스턴스가 종료되는 경우 ASG가 자동으로 새 인스턴스를 교체용으로 생성한다는 것을 의미한다.
  • ASG는 LB에 의해 비정상으로 표시된 인스턴스를 종료할 수 있다.

동적 Scaling 정책(Dynamic Scaling Policies)

  • 대상 추적 Scaling
    • 가장 간단하고 쉽게 설정이 가능하다.
    • 예를 들어, 평균 ASG CPU 사용률을 40%로 유지되도록 설정할 수 있다.
  • 단순/단계 조정
    • CPU 사용률이 70%를 넘어서 CloudWatch 알람이 트리거되면 유닛 2개를 추가한다.
    • CPU 사용률이 30% 아래로 내려와서 CloudWatch 알람이 트리거되면 유닛 1개를 제거한다.
  • 예약된 작업
    • 알려진 사용 패턴을 기반으로 확장을 예상한다.
    • 예를 들어, 금요일 오후 5시에 최소 용량을 10으로 증가시킨다.

예측적 확장(Predictive Scaling)

  • 부하를 지속적으로 예측하고 확장을 미리 예약한다.

  • “Scale On”을 위해 측정해야 하는 항목(Metric) 중에 권장되는 항목들이 있다.
    • CPUUtilization: 인스턴스 전체의 평균 CPU 사용률
    • RequestCountPerTarget: 인스턴스당 요청 수가 안정적인지 확인한다.
    • 평균 네트워크 인/아웃 (애플리케이션이 네트워크 바운드인 경우)
    • 모든 사용자 지정 지표 (CloudWatch를 사용하여 푸시)

Scaling Cooldowns

  • 스케일링 활동이 발생한 후 Cooldown(기본 300초) 기간이 있다.
  • Cooldown 기간 동안 지표 안정화를 위해 ASG는 추가 인스턴스를 시작하거나 종료하지 않는다.
  • 요청을 더 빨리 처리하고 Cooldown 기간을 줄이기 위해 즉시 사용 가능한 AMI를 사용하여 구성 시간을 단축할 수 있다.

Soluctions Architects

  • ASG 기본 종료 정책은 아래와 같다.
    • 가장 많은 인스턴스가 실행되고 있는 가용지역을 찾는다.
    • 가용지역에 선택할 인스턴스가 여러 개 있는 경우, 가장 오래된 시작 구성의 인스턴스를 삭제한다.
  • ASG는 가용지역 간에 실행되는 인스턴스의 수의 균형을 맞추는 작업을 시도한다.

  • 기본적으로 가능한 빠르게 ASG 내에 인스턴스가 실행된다.
  • 인스턴스가 추가되기 이전에 추가 단계를 수행할 수 있는 기능이 있다.
  • 인스턴스가 파괴되기 이전에 추가 단계를 수행할 수 있는 기능이 있다.

Launch Template vs Launch Configuration

  • 공통:
    • AMI의 ID, 인스턴스 유형, 키 페어, 보안 그룹 및 EC2 인스턴스를 시작하는 데 사용되는 기타 파라미터
  • Launch Configuration (Legacy):
    • 매번 다시 생성해야 한다.
  • Launch Template (Newer):
    • 여러 버전을 가질 수 있다.
    • 재사용 및 상속을 위한 부분 구성을 통해 파라미터의 하위 집합을 생성할 수 있다.
    • 온디맨드 및 스팟 인스턴스를 모두 사용하여 프로비저닝할 수 있다.
    • T2 무제한 버스트 기능을 사용할 수 있다.
    • AWS에서 앞으로 사용하는 것을 권장하고 있다.

참고 자료

'Infrastructure > Certificate' 카테고리의 다른 글

[SAA] AWS Fundamentals - Aurora  (0) 2022.11.02
[SAA] AWS Fundamentals - RDS  (0) 2022.11.02
[SAA] High Availability and Scalability: ELB  (0) 2022.11.01
[SAA] EC2 Instance Storage  (0) 2022.11.01
[SAA] EC2 Associate  (0) 2022.11.01