EC2 Auto Scaling이란?
- EC2 인스턴스를 자동으로 확장하고 축소하는 기능
- 사용자가 정의한 조정 정책에 따라 인스턴스 수가 늘어나거나 줄어든다.
- 서버의 로드가 증가하면 EC2 인스턴스 개수가 추가 됨
- 서버의 로드가 감소하면 EC2 인스턴스 개수 줄어 듬
- 이 경우 원하는 사용량은 3대지만 사용량이 줄면 최소 2개까지,
- 사용량이 증가하면 대 7대까지 자유자제로 늘었다, 줄었다 하는 것이 오토스케일링이다.
EC2 Auto Scaling 구성요소
1. Auto Scaling Group
- EC2의 인스턴스의 그룹
2. 시작 템플릿 (런치 템플릿)
- EC2 서버를 시작하기 위한 AMI, 인스턴스 유형 정보를 가진 템플릿
3. 조정 옵션 (조정 정책)
- Auto Scaling을 실행하기 위한 조건
EC2 Auto Scaling - 조정 정책
항상 현재 인스턴스 수준 유지 관리
- 지정된 수의 실행 인스턴스를 항상 유지하도록 ASG을 구성
- 인스턴스가 비정상 상태임을 확인하면 해당 인스턴스를 종료한 다음 새 인스턴스를 시작
- 이렇게 함으로써 지정된 수의 EC2 개수를 맞춘다.
수동 조정
- 최대, 최소 또는 원하는 용량의 변경 사항만 지정하는 경우 사용
일정을 기반으로 조정
- 확장 작업이 시간 및 날짜 함수에 따라 자동으로 수행됨
- 매주 일요일에는 인스턴스 4대, 다른 요일은 2대 (많이 사용하는 날, 적게 사용 하는 날 통계치)
온디맨드 기반 조정
- 수요 변화에 맞춰 Auto Scaling Group의 크기를 동적으로 조정
- CPU 사용량을 50%로 기준을 잡고 이를 넘으면 EC2 증가!, 50%미만으로 사용량 줄면 EC2 개수 감소!
예측 조정 사용 (Predictive Scaling)
- 머신러닝을 사용하여 CloudWatch의 기록 데이터를 기반으로 용량 필요량을 자동으로 예측해서 사용하는 것
EC2 Auto Scaling - 동적 조정 (Dynamic Scaling)
1. 대상 추적 조정 (Target Tracking Scaling)
- 지정한 지표가 목표값을 초과할 때 한해서 ASG를 확장하는 방식
- 예) CPU 사용량이 50%로 잡아두고 초과하면 EC2 인스턴스 증가
- CPU 평균 사용류, 바이트 수, 로드밸런서 요청 수 등으로 지표 사용가능
2. 단계 조정 (Step Scaling)
- CloudWatch alarm의 지표를 기반으로 ASG를 확장하는 방식
- 예) CPU 사용률이 60%초과시 ASG 개수의 10%만큼 증가 또는 2개, 30%미만엔 2개 감소 등 상세 설정 단계별로 가능
3. 단순 조정 (Simple Scaling)
- CloudWatch alarm의 지표를 기반으로 ASG를 확장하는 방식
- 예) CPU 사용률이 60%초과시 10%엔 2개, 30%미만엔 2개 감소 등 상세 설정 단계별로 가능
- 크기 조정 활동 또는 상태 확인 교체가 진행 중인 동안에도 정책이 추가 경보에 계속 응답
- 핫, 쿨데이터에 상관없이 하는 것
4.,Amazon SQS 기반 크기 조정
- 대기열의 시스템 로드 변경에 따라 ASG를 조정
EC2 Auto Scaling - 조정 휴지 (Scaling Cooldowns)
- EC2가 증가 혹은 감소하는 활동이 발생하면 조정 휴지 기간(Cooldown Period)을 가짐
- CPU 사용률이 50%가 넘어 EC2가 증가할 경우 조정 휴지 기간 발생
- ASG에 따라 EC2를 처음 만들고 부팅할땐 CPU 사용률이 증가할 수 밖에 없으므로 조정 휴지 기간을 가짐
- 그래서 이때 증가하는 사용률은 측정하지 않으려고 휴지 기간을 가짐
- 그리고 다 만들어지면 다시 조정 휴지기간을 해제
- 그럼에도 불구하고 CPU 사용량이 높다면 한 번더 조정 휴지 기간을 발생하고 ASG에 따라 EC2 생성
- 디폴드 조정 휴기 기간은 300초 (증,감 가능)
- 조정 휴지 기간 동안 ASG는 EC2를 종료하거나 시작하지 않는다.
- EC2 인스턴스가 처음 시작된 다음 안정적인 서비스 상태가 될 때까지 시간이 소요 됨
- EC2가 안정적인 서비스 상태가 될 때까지 스케일링을 하지 않도록 차단하는 역할을 함
- 불필요한 EC2 인스턴스가 생성되거나 종료되는 것을 방지하는 기능
EC2 Auto Scaling - 수명 주기 후크
- AS 인스턴스 수명 주기의 이벤트를 인식한 다음 다음 해당 수명 주기 이벤트가 발생할 때 사용자 지정 작업을 수행
- 인스턴스가 In Service 상태에 가기 전에 추가적인 작업을 수행할 수 있음 (Pending State)
- 인스턴스가 Terminated 상태에 가기 전에 추가적인 작업을 수행할 수 있음 (Terminating State)
- 예) EC2 AS 수명 주기 후크를 사용하여 인스턴스 시작 및 종료 시 감사 시스템에 데이터를 보내는 사용자 지정 스크립트를 실행 (백업시 줄거나 늘때 데이터가 소실되면 안되므로)
실습 (시작 템플릿 생성)
보안그룹은 앞서 설정한 Web_Access를 이용한다.
그리고 [고급]에 사용자 데이터란에 다음과 같이 web Server를 만들어준다.
#!/bin/bash
yum update -y
yum install httpd -y
systemctl enable httpd.service
systemctl start httpd.service
cd /var/www/html
echo "안녕하세요. AWS EC2입니다. $(hostname -f)" > index.html
이렇게 모두 작성한 것들을 [시작 템플릿] 이라고 한다. 그리고 만들기를 눌러 완성한다.
ASG 만들기
앞서 만든것을 등록하고 [다음]
본인 VPC 선택 후 고 가용성을 위해 모든 가용 영역을 선택한뒤 다음으로 넘어간다.
- Auto Scaling Group을 Load Balancer에 연결할 수 있다. (선택 사항)
- 상태 확인 유예 기간 (처음 만들어지고 런칭하는 동안 cpu 사용량이 올라갈 경우는 예외 처리 하는 시간)
- 추가설정에서 인스턴스 워밍업은 새로운 인스턴스 생성후 일시적으로 나타는 형상들을 CloudWatch 지표가 반영하지 않는 것
그룹 크기는 추후에 수정이 가능하다. 모두 그대로 그냥 다음으로 넘어간다.
알람 테그도 그냥 다음을 눌러 ASG을 최종적으로 생성해준다.
생성 완료!!
ASG 확인 및 실습
인스턴스에도 만들어진 것을 확인할 수 있다.
ASG를 누른 후 퍼블릭 IPv4 주소를 URL에 넣어 검색하여 잘 됐는지 확인을 할 수 있다.
ASG 크기 변경해보기
그룹 크기에서 원하는 용량과 최대 용량을 수정해보자
[ASG] => [세부 정보] => [편집]
[활동]에서 살펴보면
1개에서 2개로 증가한 것을 볼 수 있다.
인스턴스가 새롭게 하나가 추가된 것을 확인할 수 있다.
[인스턴스]창에서 확인해봐도
새롭게 하나의 EC2 인스턴스가 추가된 것을 볼 수 있다.
다시 원하는 용량과 최대 용량을 1로 줄이자.
[활동]
1개로 줄었고 Terminating EC2를 확인할 수 있고
[인스턴스 관리]
Terminating 되는것을 볼 수 있다. 조그만 기다리면 없어지고 1개만 보이게 될 것이다.
작업중이던 ASG안의 EC2 1개를 다운시켜보자
[인스턴스]를 살펴보면 새롭게 만들어지고 있는 것을(Pending) 확인할 수 있다.
[ASG]의 [활동]을 살펴보면
Health Check를 했는제 Stopped 되어있다. 잠시후 스스로 Launching 작업을 수행한다.
'Cloud Infra Architecture (AWS) > AWS SAA-C03' 카테고리의 다른 글
AWS EBS란? (Elastic Block Store) (0) | 2023.01.05 |
---|---|
AWS EC2 Auto Scaling 만들기 및 실습(2) (0) | 2023.01.05 |
AWS Network Load Balancer(NLB)란? 실습 (0) | 2023.01.04 |
AWS Application Load Balancer(ALB)란? 실습 (0) | 2023.01.04 |
AWS Target Group이란? 실습 (0) | 2023.01.04 |