
Auto Scaling이란?
Auto Scaling : 트래픽에 따라 자동으로 서버(EC2 인스턴스)의 개수를 조절해주는 기능(Scale out)
트래픽 양은 예측 불가능함 (서버 장애 vs 낭비되는 자원)
서비스를 안정적으로 제공하면서도 낭비되는 자원이 없도록 효율적으로 서버를 운영
ELB와 함께 사용함
Auto Scaling 기본 구조
클라이언트 요청 → ELB → ASG(Auto Scaling Group)으로 부하 분산
ASG는 AMI(Amazon Maching Image)를 필요로 함
ASG는 CloudWatch(클라우드 모니터링 서비스)를 사용해 서버의 용량을 늘릴지 줄일지 결정함
Auto Scaling 관련 용어
ASG(Auto Scaling Group) : Auto Scaling되는 EC2 인스턴스들의 집합 (사전에 설정한 값에 따라 EC2 인스턴스를 늘렸다 줄였다 하게 됨)
CloudWatch : AWS 서비스들을 모니터링하는 서비스, ASG는 CloudWatch와 연동하여 다양한 지표에 따라 인스턴스 개수 조절 가능
Launch Configuration(시작 구성) : Auto Scaling을 위한 EC2 인스턴스의 사전 설정 정보 (AMI, 인스턴스 유형, 스토리지, 보안 그룹 등을 선택)

AMI 생성하기

AMI 생성
인스턴스 재부팅 : 인스턴스가 잠시라도 중단되면 안 될 경우 비활성화, 대신 파일 시스템의 무결성을 보장하지 않음
이미지 생성 후 사용 가능 상태로 바뀌면 사용할 수 있음


Auto Scaling Group 생성하기










Auto Scaling 작동 테스트하기
시작 템플릿에서 설정한 대로 EC2 인스턴스가 생성됨
퍼블릭 IPv4 주소를 복사하여 ssh로 접속
WordPress 이미지의 기본 사용자 이름은 bitnami
터미널 사용 접속 시에는 ssh -i ~/Downloads/<키_이름>.pem bitnami@<IPv4_주소>
stress 프로그램을 통해 CPU에 부하 주기
sudo apt-get install stress → stress --cpu 4





WordPress 블로그에 글을 작성하기
<Auto Scaling 생성 인스턴스의 퍼블릭 IPv4 주소>/admin 접속
ssh 접속 터미널에서 cat bitnami_credentials로 사용자 이름과 비밀번호 확인 가능
이후 ELB의 DNS 이름으로 접속하면 작성한 글이 나오기도, 나오지 않기도 함
서로 다른 인스턴스로 부하를 분산시킴
각 EC2 인스턴스가 각각 로컬에 따로 설치된 MySQL 서버를 사용 중
별도의 DB 인스턴스를 만들고, 모든 EC2 인스턴스들이 해당 DB를 바라보도록 해야 함


📢 세 줄로 정리해보기!
1️⃣ Auto Scaling이란 트래픽에 따라 자동으로 서버(EC2 인스턴스)의 개수를 조절해주는 기능으로, 서비스의 안정적 제공과 효율적인 서버 운영을 위한 것이다.
2️⃣ Auto Scaling이 생성하는 EC2 인스턴스의 사전 정보는 시작 템플릿으로 설정하며, 이 과정에서 AMI를 사용할 수 있다.
3️⃣ Auto Scaling Group(ASG)의 가용 영역은 ELB의 대상 그룹(Target group)과 동일하게 설정한다. 이를 통해 ELB는 Auto Scaling으로 생성된 EC2 인스턴스에 부하를 분산시킬 수 있다.
참고 자료
└ 소플의 처음 만난 AWS
└ Auto Scaling 개념 원리 & 사용 세팅