본문 바로가기

Cloud/AWS

13. AWS : EC2 - Auto Scaling

AWS Auto Scaling

AWS에서 제공하는 애플리케이션을 모니터링하고 용량을 자동으로 조정하여, 안정적이고 예측 가능한 성능을 유지할 수 있는 서비스

AWS Auto Scaling을 사용하면 몇 분 만에 손쉽게 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정을 설정할 수 있다.

 

AWS에서 제공하는 Auto Scaling 장점

규모 조정을 신속하게 설정

AWS Auto Scaling을 사용하면 직관적인 단일 인터페이스에서 여러 리소스에 대한 목표 사용률 수준을 설정할 수 있습니다. 다른 콘솔로 이동할 필요 없이 모든 확장 가능한 리소스의 평균 사용률을 신속하게 확인할 수 있습니다. 예를 들어, 애플리케이션에서 Amazon EC2와 Amazon DynamoDB를 사용하는 경우, AWS Auto Scaling을 사용해 애플리케이션의 모든 EC2 Auto Scaling 그룹과 데이터베이스 테이블에 대한 리소스 프로비저닝을 관리할 수 있습니다.

 

똑똑한 규모 조정 의사 결정

AWS Auto Scaling을 사용하면 서로 다른 리소스 그룹이 수요 변화에 대응하는 방법을 자동화하는 규모 조정 계획을 수립할 수 있습니다. 가용성과 비용을 최적화하거나 둘 사이의 균형을 적절하게 유지할 수 있습니다. AWS Auto Scaling에서는 사용자의 기본 설정에 따라 자동으로 모든 규모 조정 정책을 생성하고 목표를 설정합니다. AWS Auto Scaling에서는 애플리케이션을 모니터링하고, 수요 변화에 따라 실시간으로 리소스 그룹에 용량을 자동으로 추가하거나 제거합니다.

 

자동으로 성능 유지

AWS Auto Scaling을 사용하면 워크로드가 주기적으로, 예측 불가능하게 또는 지속적으로 변해도 최적의 애플리케이션 성능과 가용성을 유지할 수 있습니다. AWS Auto Scaling에서는 사용자가 원하는 성능 수준으로 운영되도록 애플리케이션을 지속적으로 모니터링합니다. 수요가 급증하면 AWS Auto Scaling이 제한된 리소스 용량을 자동으로 늘려 높은 서비스 품질을 유지합니다.

 

작동 방식

출처: https://aws.amazon.com/ko/autoscaling/
 

 

1. AutoScaling 생성 전 실습 환경 구성

1.1. 인스턴스 생성

2022.06.21 - [Cloud/AWS] - 4. AWS : 3tier Architecture 구성

 

4. AWS : 3tier Architecture 구성

3tier Archtecture 애플리케이션을 3개의 논리적 및 물리적 컴퓨팅 계층으로 분리하는 것을 의미하며, 기존의 클라이언트 서버 애플리케이션을 위한 주요 소프트웨어 아키텍처이다. 3tier Architecture로

mh-itstudy.tistory.com

 

 위 포스팅을 참고하여 Bastion Server와 WEB-A 인스턴스를 생성한다.

 

1.2. RDS 생성

2022.06.28 - [Cloud/AWS] - 12. AWS : RDS (Relational Database Service)

※ 위 포스팅을 참고하여 RDS를 생성한다.

 

 RDS 생성 시 초기 데이터베이스를 wordpress로 생성

 

1.3. Bastion Server 설정

※ 호스트에서 각 인스턴스에 접속하기 위한 private key Bastion 으로 보내기

 

※ Bastion에서 key 확인

 

 

※ 키 권한 변경

$ chmod 600 .ssh/id_rsa

 

 

1.4. WEB-A 인스턴스에 wordpress 설치

※ Bastion Server에서 WEB-A 인스턴스 접속 후 root 로그인

 

$ ssh ec2-user@10.0.0.148
$ sudo su -

 

 

※ wordpress 설치 스크립트 작성 후 실행

#! /bin/bash

yum install -y wget httpd
amazon-linux-extras enable lamp-mariadb10.2-php7.2
amazon-linux-extras install lamp-mariadb10.2-php7.2

wget https://ko.wordpress.org/latest-ko_KR.tar.gz
tar zxvf latest-ko_KR.tar.gz
cp -a wordpress/* /var/www/html/

sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php/g' /etc/httpd/conf/httpd.conf

cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
chown apache.apache /var/www/html/*
sed -i 's/database_name_here/wordpress/g' /var/www/html/wp-config.php
sed -i 's/username_here/admin/g' /var/www/html/wp-config.php
sed -i 's/password_here/It12345!/g' /var/www/html/wp-config.php
sed -i 's/localhost/RDS엔드포인트/g' /var/www/html/wp-config.php

cat > /var/www/html/health.html << EOF
<html><body><h1>MHAN WEBSERVER-health</h1></body></html>
EOF

systemctl enable httpd
systemctl start httpd

 

※ 참고) DB 접속

# mysql -uadmin -p -h [RDS 엔드포인트]

 

1.5. 웹 브라우저 접속

웹 브라우저에서 접속하여 워드프레스 설치

 


2. Auto Scaling 생성

2.1. 이미지 생성

Auto Scaling으로 생성할 인스턴스의 이미지를 생성한다.

 

설정 후 이미지 생성

 

 좌측 EC2 탭 → AMI → 생성 확인

 

2.2. 시작 템플릿 생성

인스턴스 → 시작 템플릿 생성

 

시작 템플릿 설정

 

위에서 생성한 AMI 선택

 

키 페어, 서브넷 설정

 

설정 완료했으면 시작 템플릿 생성

 

생성 확인

 

2.3. Auto Scaling 생성

Auto Scaling 그룹 → Auto Scaling 그룹 생성

 

Auto Scaling 그룹 이름 설정

 

위에서 생성한 시작 템플릿 선택

 

VPC, 가용 영역 설정

 

상태 확인 유예기간 설정

 

최소/최대 용량 설정 - 초반에는 무조건 최소 용량 이상의 개수로 인스턴스가 생성됨

 

크기 조정 정책 설정 - CPU 평균 사용률이 50% 가 넘어가면 인스턴스가 생성된다.

 

 

 

검토 후 Auto Scaling 그룹 생성

 

생성된 Auto Scaling 그룹 확인

 

Auto Scaling으로 생성된 인스턴스에 public IP 할당

 

웹 브라우저에서 접속해보기 - 위에서 이미지로 생성한 인스턴스 그대로 생성된 것을 확인할 수 있다.

 


3. Auto Scaling Test

 Bastion 서버에서 Auto Scaling으로 생성된 인스턴스 접속

 

root 로그인 후 epel, stress 설치

$ sudo su -
# amazon-linux-extras enable epel
# amazon-linux-extras intall epel

# yum install -y stress

 

stress 이용하여 stress 테스트를 진행

 

세션 복제하여 top 명령어로 CPU 점유율 확인

 

시간이 조금 지난 후에 Auto Scaling 그룹에서 확인해보면 인스턴스가 자동으로 생성된 것을 확인할 수 있다.

 

생성된 인스턴스 중 한 대에 퍼블릭 IP 연결

 

웹 브라우저에서 Auto Scaling으로 새로 생성된 인스턴스에 접속해보면 위에서 생성한 인스턴스와 동일하게 웹 페이지가 나오는 것을 확인할 수 있다.

 


Reference.

 

 

AWS Auto Scaling

AWS Auto Scaling은 애플리케이션을 모니터링하고 용량을 자동으로 조정하여, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지합니다. AWS Auto Scaling을 사용하면 몇 분 만에 손쉽게 여러

aws.amazon.com