Cloud Infra Architecture (AWS)/AWS SAA-C03

AWS EC2 Auto Scaling 만들기 및 실습(1)

seongduck 2023. 1. 4. 01:54

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 작업을 수행한다.