[AWS] Auto Scaling EC2에 적용하기

반응형

이번 글에서는 EC2에 Auto Scaling 기능을 적용해보겠습니다.

0. Auto Scaling이란?

EC2 인스턴스의 트래픽에 따라서 자동으로 추가적인 EC2 인스턴스를 생성 및 삭제해 최적의 서비스를 제공하는 기능입니다.

보통 CloudWatchELB(Elastic Load Balancing)와 함께 사용합니다.

CloudWatch로는 EC2 인스턴스의 CPU 사용률, 네트워크 사용량 등을 체크합니다. 생성된 EC2 인스턴스들은 ELB(Elastic Load Balancing)와 연결되어 트래픽을 분산시킵니다.

1. AMI 생성하기

이번 실습을 위해 ELB와 연결된 EC2 인스턴스의 AMI가 필요합니다.

먼저 ELB에 연결할 2개의 EC2 인스턴스를 아래와 같이 생성했습니다.

자세한 내용은 아래의 책을 참고하시길 바랍니다.

 

아마존 웹 서비스를 다루는 기술:실무에서 알아야 할 기술은 따로 있다!

COUPANG

www.coupang.com

image.png

다음으로 ELB를 생성해 위의 인스턴스에 연결했습니다.

image.png

ELB 생성 및 연결방법은 https://velog.io/@minholee_93/AWS-ELB-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0-owk3z6xfb4 를 참고해주세요.

이제 해당 EC2 인스턴스를 AutoScaling에 사용할 수 있도록 AMI로 만들어보겠습니다. ELB와 연결되어있는 EC2 인스턴스중 하나를 선택해 Image -> Create Image를 클릭합니다.

image.png

생성할 AMI의 이름을 입력하고 Create Image 버튼을 클릭해 AMI를 생성합니다.

image.png

아래와 같이 AMI가 생성되었습니다.

image.png

2. Launch Configuration 생성하기

Auto Scaling 기능을 사용하기 위해선 먼저 Launch Configuration을 생성해야 합니다.

Launch Configuration은 Auto Scaling을 구성하는 환경 및 생성 EC2 인스턴스 규격 등을 정의합니다.

EC2Auto Scaling Groups 탭에서 Create Auto Scaling group 버튼을 클릭합니다.

image.png

Get Started 버튼을 클릭하면 Launch ConfigurationAuto Scaling Group을 동시에 생성합니다.

image.png

Auto Scaling에 사용할 AMI로 방금전 생성했던 AMI를 선택합니다.

image.png

인스턴스 타입을 선택합니다.

image.png

Launch Configuration 이름을 입력하고, Monitoring에 체크를 선택해줍니다. 이를 선택함으로써 CloudWatch의 모니터링 기반으로 EC2 인스턴스를 생성 및 제거합니다.

또한 Advanced Detail 탭의 User data에 아래와 같이 입력합니다.

#!/bin/bash
node /home/ec2-user/ExampleServer/app.js &

User data는 EC2 인스턴스가 새로 생성되었을때 실행할 스크립트입니다.

위의 내용은 EC2 인스턴스가 생성되면 Node.js 서버를 실행합니다. AMI 생성시 사용한 EC2 인스턴스에는 Node.js가 설치되어있으며, app.js 스크립트가 작성되어있습니다.

image.png

Storage 는 기본값을 사용하겠습니다.

image.png

사용할 Security Group을 선택하겠습니다.

image.png

리뷰를 마친뒤 Create launch configuration 버튼을 클릭합니다.

image.png

3. Auto Scaling Group 생성하기

연속해서 Auto Scaling Group을 생성하겠습니다.

Auto Scaling Group은 Auto Scaling 기능을 사용해 생성된 EC2 인스턴스들의 그룹입니다.

Group 이름을 입력하고, Group Size에는 시작 인스턴스 갯수를 입력합니다. Subnet에는 EC2 인스턴스가 생성될 서브넷을 선택합니다. 다음으로 Advanced Details 탭을 클릭해 세부내용을 입력합니다.

image.png

'Receive traffic from one or more load balancers'를 선택해 ELB을 사용합니다. Target Group에는 사용할 ELB를 선택합니다. 'Enable CloudWatch detailed monitoring'을 선택해 CloudWatch 세부 모니터링을 사용합니다.

image.png

다음으로 인스턴스 생성조건을 입력합니다. 'Use scaling policies to adjust the capacity of this group'을 선택합니다. 다음으로 minimummaximum EC2 인스턴스 갯수를 입력합니다. Average CPU Utilization80%가 넘을 경우 신규 EC2 인스턴스를 생성하겠습니다.

image.png

다음으로 Add notification 버튼을 클릭해 Auto Scaling 전용 Notification을 생성합니다.

image.png

최종 리뷰 후 Create Auto Scaling group 버튼을 클릭합니다.

image.png

아래와 같이 Auto Scaling Group이 생성되었습니다.

image.png

Instnaces 탭으로 이동해보면 AutoScaling이 생성한 EC2 인스턴스 1개가 생성되어있습니다. 저는 Group Size에서 Start instnace 갯수를 1개로 설정하였습니다.

image.png

이제 해당 EC2 인스턴스의 CPU Utilization이 80%를 넘어가면 Auto Scaling이 자동으로 신규 EC2 인스턴스를 생성하며, ELB를 통해 EC2 인스턴스들의 부하를 분산시킵니다.

4. 결론

서비스의 트래픽에 따라서 자동으로 EC2 인스턴스의 갯수를 조절하고 싶다면?
-> Auto Scaling을 사용하자.


파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY