AWS EC2 오토스케일링 🚀
EC2 Auto Scaling을 처음 접하는 분들을 위한 실습 가이드입니다.
AMI 생성부터 부하 테스트, 자원 삭제까지 전 과정을 정리했습니다.
📋 목차
- 서비스 환경 구축
- 오토스케일링 실습 순서
- 조정 정책(Scaling Policy) 설정법
- 부하 테스트
- 자원 삭제 방법
1. 서비스 환경 구축
오토스케일링 실습 전에 기본 서비스 환경을 먼저 구성합니다.
| 순서 | 작업 내용 |
|---|---|
| 1 | 네트워크(VPC) 구축 |
| 2 | EC2 인스턴스 2대 생성 |
| 3 | EC2 → 대상 그룹(Target Group) 생성 |
| 4 | 로드 밸런서(ALB) 생성 |
| 5 | 로드 밸런서 DNS로 웹 접속 확인 |
| 6 | 웹서버 1대를 AMI 이미지로 저장 |
주요 설정 포인트
VPC 구성 (서울 리전)
- AZ 2개, 퍼블릭 서브넷 2개
- VPC 자동 생성 기능 활용
EC2 생성 시 주의사항
- 퍼블릭 IP 자동 할당 활성화
- 고급 세부정보 → 사용자 데이터에 웹서버 설치 스크립트 입력
- HTTP(80) 트래픽 허용 보안 그룹 설정
AMI 이미지 생성
- 인스턴스 우클릭 → 이미지 생성
- 이 이미지가 오토스케일링의 "붕어빵 틀" 역할을 합니다
2. 오토스케일링 실습 순서
핵심 흐름: AMI → 시작 템플릿 → 오토스케일링 그룹
1단계: AMI(이미지) 생성
- 서비스 환경 구축 단계에서 완료
- 자동 복제될 원본 서버 이미지를 만드는 작업
2단계: 시작 템플릿(Launch Template) 생성
EC2 → 시작 템플릿 → 생성
이름: agame-web02-temp
AMI: 내 AMI (1단계에서 생성한 이미지)
인스턴스 유형: t3.small
키 페어: 기존 키 선택
보안 그룹: Default SG
3단계: 오토스케일링 그룹(ASG) 생성
EC2 → Auto Scaling 그룹 → 생성
이름: agame-web02-auto
시작 템플릿: agame-web02-temp
VPC: auto-vpc
가용 영역 서브넷: 2개 이상 선택 (권장)
로드 밸런서: auto-tg 연결
그룹 크기 설정:
- 원하는 용량 (Desired): 2
- 최소 용량 (Minimum): 1
- 최대 용량 (Maximum): 10
4단계: 조정 정책(Scaling Policy) 설정
- 정책 유형: 대상 추적 조정 정책 선택
- 지표: 평균 CPU 사용률
- 대상 값: 50% (실습 테스트용이라면 1%로 낮게 설정)
5단계: 동작 확인
- ASG 생성 후
원하는 용량만큼 EC2 인스턴스가 자동 생성되는지 확인 - [작업 기록] 탭에서 Scale-out 이벤트 로그 확인
⚠️ 주의: 실습 후 ASG를 먼저 삭제해야 합니다.
인스턴스만 수동 종료하면 ASG가 자동으로 다시 살려내기 때문에 요금이 계속 발생합니다!
3. 조정 정책(Scaling Policy) 설정법
"언제, 어떤 기준으로 서버를 늘리고 줄일 것인가"를 결정하는 규칙입니다.
정책 유형 비교
① 대상 추적 조정 (Target Tracking) ⭐ 가장 권장
특정 지표 목표값을 설정하면 AWS가 자동으로 인스턴스 수를 조절합니다.
정책 유형: 대상 추적 조정
지표 유형: 평균 CPU 사용률
대상 값: 50
준비 시간(Warm-up): 300초
장점: 설정이 간편하고, 부하 증감 모두 자동 대응
② 단계별 조정 (Step Scaling)
상황별로 다른 규모의 확장이 필요할 때 사용합니다.
예시:
- CPU 70~80% 구간 → 인스턴스 1대 추가
- CPU 80% 이상 → 인스턴스 2대 추가
장점: 갑작스러운 트래픽 폭증에 유연하게 대응 가능
③ 예약된 작업 (Scheduled Scaling)
트래픽 패턴이 예측 가능할 때 사용합니다.
예시:
- 매일 09:00 → 서버 5대로 증가 (업무 시작)
- 매일 18:00 → 서버 2대로 감소 (업무 종료)
⏱️ 쿨다운(Cooldown) 설정 주의사항
서버가 추가된 후 시스템이 안정될 때까지 추가 조정을 잠시 멈추는 시간입니다.
- 기본값: 300초
- 너무 짧게 설정하면 서버가 준비 중인데 또 추가하는 "과잉 증설" 발생 위험
🔄 인스턴스 유지 관리 정책
서버 교체/업데이트 시 서비스 중단과 비용 중 무엇을 우선할지 결정합니다.
| 옵션 | 동작 방식 | 추천 상황 |
|---|---|---|
| 가용성 우선 | 새 서버 먼저 띄우고 → 기존 서버 종료 | 운영 환경 (중단 불가) |
| 비용 제어 | 기존 서버 먼저 종료 → 새 서버 생성 | 개발/테스트 환경 |
| 혼합 방식 | 기본값. 재분균형 시 선 실행 후 종료 | 일반적인 범용 설정 |
💡 실습 추천: 학습 중이라면 "혼합 방식" 또는 "비용 제어" 선택
4. 부하 테스트
방법 1: Apache Benchmark (ab) 툴
# ab 설치
sudo dnf install httpd-tools -y
# 기본 부하 테스트 (총 10,000번 요청, 동시 100명)
ab -n 10000 -c 100 http://[ALB-DNS-주소]/
# 강한 부하 테스트 (총 20,000번 요청, 동시 1,000명)
ab -n 20000 -c 1000 http://[ALB-DNS-주소]/
방법 2: 반복 curl 요청 (0.05초 간격)
while true; do
curl -s -o /dev/null -w "HTTP 응답 코드: %{http_code} | 시간: $(date +%H:%M:%S)\n" \
http://[ALB-DNS-주소]/
sleep 0.05
done
방법 3: stress-ng로 CPU 부하
# stress-ng 설치 (Amazon Linux 2023)
sudo dnf install stress-ng -y
# CPU 10코어에 6000초 동안 부하
stress-ng --cpu 10 --timeout 6000s
방법 4: 무한 루프 스크립트 (설치 없이 즉시 실행)
cat <<EOF > load.sh
#!/bin/bash
while true; do openssl speed; done
EOF
chmod +x load.sh
./load.sh &
# 종료 시
pkill -f load.sh
📊 부하 테스트 중 확인 포인트
부하를 건 직후 서버가 바로 늘어나지는 않습니다. 아래 순서로 확인하세요.
- CloudWatch 경보 → CPU가 임계치 초과 시
In alarm상태로 변경 - ASG 작업 기록(Activity) →
"Launching a new EC2 instance"메시지 확인 - EC2 인스턴스 목록 →
Pending→Running상태 변화 확인
5. 자원 삭제 방법
실습 후 비용 방지를 위해 반드시 아래 순서대로 삭제합니다.
삭제 순서
① 오토스케일링 그룹(ASG) 먼저 삭제
EC2 → Auto Scaling 그룹 → 체크 → Actions → 삭제
- ASG 삭제 시 관리 중인 모든 EC2 인스턴스가 자동 종료됩니다
- 인스턴스를 개별 종료할 필요 없음
② 시작 템플릿 삭제
EC2 → 시작 템플릿 → 선택 → 작업 → 템플릿 삭제
③ AMI 및 스냅샷 삭제 (비용 주의!)
EC2 → 이미지 → AMI → 등록 취소
EC2 → 스토리지 → 스냅샷 → 삭제
✅ 최종 삭제 체크리스트
- EC2 인스턴스: 모두
Terminated상태 확인 - Auto Scaling 그룹: 목록에서 사라졌는지 확인
- 로드 밸런서(ALB): 별도 삭제 (시간당 비용 발생)
- 대상 그룹(Target Group): 삭제 확인
- AMI: 등록 취소 완료
- 스냅샷: 삭제 완료
🎯 핵심 요약
AMI 생성 → 시작 템플릿 → 오토스케일링 그룹 → 조정 정책 설정 → 부하 테스트 → 삭제
- 대상 추적 조정 정책이 가장 간편하고 권장되는 방식
- 쿨다운은 기본 300초 유지
- 실습 후 ASG를 먼저 삭제해야 인스턴스가 다시 생성되지 않음
- AMI와 스냅샷은 인스턴스 종료와 무관하게 비용 발생 → 별도 삭제 필수
'SK플래닛 ai활용 데이터엔지니어 과정 2기 > AWS' 카테고리의 다른 글
| AWS - 3 (0) | 2026.03.19 |
|---|---|
| AWS - 2 (1) | 2026.03.18 |
| AWS -1 (1) | 2026.03.18 |