본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Amazon EC2 Auto Scaling; EC2 Auto Scaling
수요에 맞춰 아마존 EC2 인스턴스 수를 자동으로 늘리고 줄이며, 비정상 인스턴스를 교체해 원하는 용량을 유지하는 AWS 서비스

오토 스케일링을 EC2에 구현한 서비스이다. 인스턴스를 묶은 Auto Scaling 그룹에 최소·최대 대수와 조정 정책을 정해 두면, 부하가 늘 때 스케일 아웃하고 줄면 스케일 인한다. 확장 기능만 있는 것이 아니라 상태 확인에 실패한 인스턴스를 자동으로 교체하고 여러 가용 영역에 인스턴스를 고르게 퍼뜨리므로 고가용성 구성의 기본 부품이기도 하다. 보통 Elastic Load Balancing 뒤에 두어 새 인스턴스가 자동으로 트래픽을 받게 한다.

VPC 안에서 여러 가용 영역에 인스턴스를 두는 Auto Scaling 그룹
항목 설명
Auto Scaling 그룹 같은 설정으로 시작되어 함께 관리되는 EC2 인스턴스 묶음
최소 용량 그룹이 항상 유지하는 최소 인스턴스 수
원하는 용량(desired) 현재 유지하려는 인스턴스 수. 조정 정책이 이 값을 바꾼다.
최대 용량 어떤 경우에도 넘지 않는 상한. 비용 폭주를 막는다.
시작 템플릿 새 인스턴스를 만들 때 쓰는 설정(AMI, 인스턴스 유형, 보안 그룹 등)
조정 정책 언제 원하는 용량을 바꿀지 정하는 규칙
상태 확인 비정상 인스턴스를 찾아 종료하고 새 인스턴스로 교체하는 기준

Auto Scaling 그룹

편집 원본 편집
  • 그룹을 여러 가용 영역의 서브넷에 걸쳐 만들면 인스턴스를 AZ 사이에 고르게 분산한다. 한 AZ에 문제가 생겨 분포가 기울면, AZ가 회복된 뒤 인스턴스가 적은 AZ에 새로 띄우고 다른 곳을 줄이는 리밸런싱을 자동으로 한다.
  • 최소·원하는·최대 용량을 모두 1로 두면 대수는 늘지 않지만, 장애 시 자동 교체되는 자가 복구 단일 인스턴스가 된다.
  • 혼합 인스턴스 정책으로 여러 인스턴스 유형과 온디맨드·스팟 비율을 함께 지정할 수 있다. 자세한 요금 방식은 아마존 EC2 구매 옵션 참고.

시작 템플릿(launch template)은 AMI ID, 인스턴스 유형, 키 페어, 보안 그룹, 사용자 데이터, IAM 인스턴스 프로파일, 블록 디바이스 매핑 등을 담은 인스턴스 설정이다. 버전 관리가 되고 여러 인스턴스 유형과 스팟 옵션을 지원한다.

  • 이전 방식인 시작 구성(launch configuration)은 레거시이다. 2023년 1월 1일 이후 나온 인스턴스 유형을 지원하지 않고, 2024년 10월 1일 이후 만든 계정은 새 시작 구성을 만들 수 없다. 시작 구성은 만든 뒤 수정할 수도 없다.
  • 시험 보기에서 새 구성을 만든다면 시작 템플릿을 고른다.
방식 동작 적합한 경우
대상 추적 조정(Target tracking) 지표가 목표값을 유지하도록 용량을 자동 계산(예: 평균 CPU 50%, 대상당 요청 수) 대부분의 경우. AWS가 가장 먼저 권장하는 방식
단계별 조정(Step scaling) CloudWatch 경보 초과 폭에 따라 단계별로 다른 양을 더하거나 뺌 초과 폭에 따라 반응 크기를 직접 조절하고 싶을 때
단순 조정(Simple scaling) 경보 하나에 조정 하나, 조정 후 휴지 기간 동안 대기 AWS 모범 사례상 권장되지 않음
예약된 조정(Scheduled) 정해진 시각에 원하는 용량·최소·최대 변경 매주 수요일 오전 증설처럼 시간이 정해진 변화
예측 조정(Predictive) 과거 부하에서 일·주 단위 패턴을 학습해 미리 용량 확보 주기적 트래픽, 초기화가 오래 걸리는 애플리케이션
  • 대상 추적에는 용량이 두 배가 되면 값이 절반이 되는 지표(평균 CPU 사용률, 대상당 요청 수 등)를 쓴다.
  • 아마존 SQS 대기열을 처리하는 작업자 그룹은 대기열 길이 자체보다 인스턴스당 백로그(대기 메시지 수 ÷ 실행 중 인스턴스 수)를 지표로 삼고, 허용 지연 시간 ÷ 메시지당 처리 시간을 목표값으로 둔다.
  • 동적 조정과 예측 조정을 함께 쓰면 예측으로 기본 용량을 미리 올리고 예상치 못한 변동은 동적 조정이 메운다.
  • 기본은 EC2 상태 확인으로, 인스턴스가 실행 중인지와 하드웨어·소프트웨어 장애 여부를 본다.
  • ELB 상태 확인을 켜면 로드 밸런서가 비정상으로 판단한 인스턴스도 교체한다. 웹 서버가 떠 있지만 애플리케이션이 응답하지 않는 경우를 잡으려면 ELB 상태 확인을 켜야 한다.
  • VPC Lattice, EBS 상태 확인, 사용자 지정 상태 확인도 쓸 수 있다.
  • 상태 확인 유예 기간은 새 인스턴스가 부팅과 초기화를 끝낼 때까지 ELB 등 추가 상태 확인 결과를 무시하는 시간이다.

휴지 기간과 워밍업

편집 원본 편집
  • 조정 휴지(cooldown)는 단순 조정 정책에만 적용되며 기본 300초이다. 직전 조정의 효과가 지표에 나타나기 전에 또 조정하는 것을 막는다.
  • 대상 추적과 단계별 조정은 휴지 기간을 기다리지 않고, 대신 인스턴스 워밍업을 쓴다. 새 인스턴스는 워밍업이 끝날 때까지 그룹 집계 지표에 반영되지 않는다. 기본 인스턴스 워밍업 값을 설정해 두는 것이 권장된다.

수명 주기 후크와 웜 풀

편집 원본 편집
  • 수명 주기 후크(lifecycle hook): 인스턴스가 시작되거나 종료될 때 대기 상태로 잠시 붙잡아 두고 사용자 작업을 끼워 넣는다. 시작 시 소프트웨어 설치·등록, 종료 전 로그 백업·연결 정리에 쓴다. 기본 대기 시간은 1시간이고, 전체 대기는 48시간과 하트비트 제한 시간의 100배 중 작은 값까지이다.
  • 웜 풀(warm pool): 미리 초기화해 중지(또는 실행·최대 절전) 상태로 둔 인스턴스 풀이다. 스케일 아웃할 때 처음부터 부팅하지 않고 웜 풀에서 꺼내므로 부팅이 매우 긴 애플리케이션의 지연을 줄인다. 필요 없는데 만들면 비용만 늘어난다.

이름이 비슷하지만 서로 다른 서비스이다.

구분 아마존 EC2 Auto Scaling Application Auto Scaling AWS Auto Scaling(조정 계획)
대상 EC2 Auto Scaling 그룹 ECS 서비스, DynamoDB 테이블·GSI, Aurora 복제본, Lambda 프로비저닝된 동시성, Spot Fleet 등 EC2 외 리소스 여러 서비스의 확장 가능 리소스를 한데 묶은 애플리케이션
역할 인스턴스 시작·종료, 상태 확인, AZ 분산 리소스별 대상 추적·단계별·예약·예측 조정 태그나 CloudFormation 스택으로 리소스를 찾아 조정 계획을 한 번에 구성

조정 계획을 예측 조정에만 쓴다면, AWS 설명서는 Auto Scaling 그룹에 예측 조정 정책을 직접 거는 방식을 더 권장한다.

  • "트래픽 변화에 맞춰 자동 확장, 운영 부담 최소"는 대상 추적 조정이다. 단순 조정은 대개 오답이다.
  • "매주 정해진 시각에 부하 증가"는 예약된 조정, "반복되는 일·주 패턴을 미리 대비"는 예측 조정이다.
  • 애플리케이션 오류를 감지해 교체하려면 ELB 상태 확인을 켠다. EC2 상태 확인만으로는 프로세스 장애를 못 잡는다.
  • 고가용성 문제에서는 Auto Scaling 그룹을 여러 AZ에 걸치고 앞에 로드 밸런서를 둔다. 단일 인스턴스도 최소=최대=1 그룹으로 감싸면 자동 복구된다.
  • 부팅이 느려 확장이 늦는 문제는 골든 AMI, 웜 풀, 예측 조정으로 해결한다.
  • SQS 작업자 확장은 인스턴스당 백로그 지표로 대상 추적한다.