EC2 Autoscaling(오토스케일링)
#스케일링
스케일링의 종류:
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이다.