[AWS] EC2 Auto Scaling (1)

1. EC2 Auto Scaling 이란?

EC2 Auto Scaling은 EC2 인스턴스를 사용하는 서비스에 고가용성을 제공하는 기능이다.

정의한 최소, 최대 인스턴수 개수와 CloudWatch가 제공하는 지표에 따라 Scale IN/OUT 하여 장애 및 트래픽 증가에 따른 성능 저하에 자동으로 조치를 취할 수 있다.

2. 시작 구성

시작 구성을 통해 생성될 인스턴스의 정보를 설정한다. AMI, 유형, 스토리지, 역할, 사용자 데이터, 보안 그룹 등을 설정할 수 있다.

3. Auto Scaling Group

시작구성을 사용하여 어떤 방식으로 Auto Scaling 할 건지 설정한다.

인스턴스의 초기/최소/최대 개수를 지정한다. 적어도 최소 개수 만큼의 인스턴스 가동을 보장한다.

조정 정책

Auto Scaling이 언제, 어떻게 스케일링 할지에 대한 정책이다.

[1] 대상 추적 조정 정책

Auto Scaling이 어떤 지표를 보고 Scale IN/OUT을 할 지 지표(Metric)와 수치를 설정한다. 지표 종류에는 평균 CPU 사용률, 평균 네트워크 IO, 대상당 ALB 요청 수 가 있다. 수치가 설정한 지표를 초과하면 Scale Out되고, 미만이면 다시 Scale In 된다.

다음은 단계적인 스케일링을 위한 두가지 정책이다.

#### [2] 단계 조정 정책

CloudWatch의 경보를 사용해 스케일링 단계를 여러개로 나누어 세분화한다. 집계된 지표값에 따라 몇개의 용량을 운용할 것인지, 혹은 현재보다 몇 퍼센트의 용량을 증감시킬 것인지 설정할 수 있다.

[3] 단순 조정 정책

단계 조정 정책과 동일하지만, cooldown 시간 동안 CloudWatch의 경보에 응답하지 않는다. 보통 이거보다는 단계 조정 정책 을 이용하는 듯 하다.

[4] 예측 조정 정책

CloudWatch의 기록을 보고 머신 러닝을 통해 트래픽 흐름 패턴을 파악하여 미리 스케일링 한다. 트래픽 증감이 규칙적인 경우 유용할 것이다.

[5] 예약 조정 정책

cron 형식으로 스케일을 예약한다. 이를 사용해 트래픽이 급증하는 시간대나 시즌을 알고 있다면 미리 대응할 수 있다.

4. Warm Pool

만약 부팅 시간이 매우 긴 어플리케이션이라면 스케일링에 시간이 오래 걸려 즉각적인 대응이 어려울 것이다. Warm Pool 은 시작 구성에 따라 미리 인스턴스를 생성하고 중지시킨 상태로 보관하고 있다가, 스케일링 작업이 일어나면 인스턴스를 실행시킨다.

5. Data Sync

Auto Scaling은 단순히 시작 구성에 설정된 대로 새로운 인스턴스를 생성한다. 단순히 이것만 이용한다면 기존 서비스되고 있던 어플리케이션의 업데이트 내용을 반영하지 못할 것이다. 따라서 새로 생성된 인스턴스의 데이터를 동기화하는 프로세스를 구축해놓아야 한다.

예를 들어, 코드를 통해 생성되는 서비스라면 Code Deploy 를 함께 이용하면 될 것이다.

디스크에 저장되는 데이터의 경우 주기적으로 S3 버킷에 백업해두고, 시작 구성 사용자 데이터에서 AWS CLI를 이용해 S3 버킷의 데이터를 복구하도록 할 수도 있을 것이다. 혹은, EBS 스냅샷을 사용해 인스턴스를 생성해도 될 것이다.

인스턴스들이 공통으로 Read Write 해야 하는 데이터의 경우 EBS가 아닌 S3 / RDS / DynamoDB 와 같은 글로벌 서비스에 저장하는 것이 좋다. (이를 스토리지 개념으로 Stateless 하다고 함)

카테고리:

업데이트:

댓글남기기