AWS

EC2 Autoscaling(오토스케일링)

주씨. 2023. 9. 11. 00:50
728x90

#스케일링

스케일링의 종류:

1. Vertical Scale (Scale Up)

- 성능을 4배로 하고 싶을 때 CPU가 4배 크고 메모리도 4배 큰 인스턴스를 사용하는 것

- 성능과 비용이 비례하지 않는다. 성능이 4배라고 비용이 4배가 되는것이 아니라 그 이상. 

 

2. Horizontal Scale (Scale Out)

- 인스턴스 각각의 성능을 올리는 것이 아니라 규모를 늘리는 것이다. 

- 성능을 4배로 하고 싶으면 인스턴스를 4개 가져다가 쓴다.

- 성능과 비용이 비례한다. 

 

클라우드 환경에서는 Scale Up 보다는 Scale Out을 하는 것이 좋다. 

그리고 이 Horizontal Scale (Scale Out)을 위해서 나온 서비스가 AWS Auto Scaling이다. 

 

"AWS Auto Scaling은 애플리케이션을 모니터링하고 용량을 자동으로 조정하여, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지한다. AWS Auto Scaling을 사용하면 몇 분 만에 손쉽게 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정을 설정할 수 있다. "

 

- 다양한 스케일링 정책 적용 가능

    - 예: CPU의 부하에 따라 인스턴스 크기를 늘리기. 

- 가용 영역에 인스턴스가 골고루 분산될 수 있도록 인스턴스를 분배

 

 

# 오토스케일링의 구성

- 시작 구성 (launch configuraitons) / 시작 템플릿 (launch template) : 무엇을 실행시킬 것인가?

    - EC2의 타입, 사이즈

    - AMI

    - 보안 그룹, Key, IAM

    - 유저 데이터 

 

- 모니터링 : 언제 실행시킬 것인가? + 상태 확인

    - 예: CPU 점유율이 일정 %을 넘어섞을 때 추가로 실행 or 2개 이상이 필요한 스택에서 EC2 하나가 죽었을 때

    - CloudWatch (and/or) ELB와 연계

 

- 설정 : 얼마나 어떻게 실행시킬 것인가?

    - 최대/최소/원하는 인스턴스 숫자

    - ELB와 연동 등 

 

 

 

# Hands-on

 

1. 시작 템플릿 생성

시작 템플릿은 오토 스케일링 그룹에서 어떤 인스턴스를 어떻게 올릴것인지를 정의하는 템플릿이다. 

 

보안그룹을 설정하지 않은 이유는 네트워크 인터페이스에서 보안 그룹을 설정해주기 때문이다. 

그래서 VPC에서 보안 그룹을 설정하지 않았다. 

 

바로 위 사진에서 두번째 Auto Scaling 그룹 생성을 눌러보자. 

 

2. Auto Scaling 그룹 생성

여기서 태그를 추가하면, 오토 스케일링된 모든 인스턴스들에 태그가 등록된다. 

 

 

오토스케일링 그룹에 들어가서 '인스턴스 관리' 탭에 들어가면 이 그룹에 속한 인스턴스를 볼 수 있다. 

'활동' 탭에 들어가면 aws가 무슨 일을 했는지 다 기록이 된 걸 볼 수 있다. 

 

인스턴스 중 하나가 상태가 unhealthy가 되면 숫자에 맞춰 인스턴스를 생성해준다. 

 

오토스케일링 그룹 자체에서 인스턴스 숫자를 줄여보자. 

'그룹 세부 정보' 탭에서 용량을 줄일 수 있다. 

원하는 용량을 1로 줄였더니, 그거에 맞춰서 인스턴스 숫자도 1개로 되었다. 

 

 

이렇게 인스턴스가 많을 때, 인스턴스 각각에 대해서 트래픽들을 분산해줘야 한다. 

트래픽 조절에 필요한 서비스가 바로 Elastic Load Balancer이다.