흰 스타렉스에서 내가 내리지

EC2 Autoscaling(오토스케일링) 본문

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이다. 

'AWS' 카테고리의 다른 글

Amazon S3 권한 관리  (0) 2023.09.18
Elastic Load Balancer (ELB)  (0) 2023.09.11
EBS, Snapshot, AMI-  (0) 2023.09.02
[AWS_Builders] Container Service  (0) 2023.07.28
[AWS_Builders] VPC  (0) 2023.07.14