본문 바로가기

여러가지/Docker & AWS

[섹션 4] Auto Scaling을 통한 확장성 및 탄력성 구현

● 개요

: 가상 서버의 용량을 자동으로 증가 또는 축소하는 기능을 사용하여 인프라에 확장성과 탄력성 구현

 

 

● 서비스

- Auto Scaling

 

 

● 아키텍처 다이어그램

 

 

● 구현 순서

 

ㄱ. Auto Scaling을 위한 Launch Template 및 Application Load Balancer 구성

1) Private Subnet의 EC2에 대한 Custom AMI 생성

2) Auto Scaling을 위한 Launch Template 생성

- AMI

- Key pair

- Network

- Storage

...

3) Auto Scaling을 위한 Application Load Balancer 구성 (+) Target Group

 

ㄴ. Auto Scaling Group 및 Scaling Policy 구성

1) Auto Scaling Group 생성

-  Launch Options

- Group size

- Tags

...

2) Scaling Policy 구성

3) 콘솔 및 웹 브라우저를 통해 Auto Scaling Group 시작 확인

 

ㄷ. Auto Scaling Scale-Out 테스트

-> 인스턴스 생성

1) Apache Bench Test를 위한 패키지(httpd-tools) 설치

2) Application Load Balancer에 부하(로드) 테스트

3) CloudWatch를 통해 CPU Utilization rate 증가 확인

4) Scale-Out으로 EC2 증가 확인

 

ㄹ. Auto Scaling Scale-In 및 Termination Policy 살펴보기

1) Scale-In으로 EC2 감소 확인

2) Auto Scaling Group의 Termination Policy 확인

 

 

● 구현

ㄱ. Auto Scaling을 위한 Launch Template 및 Application Load Balancer 구성

1) Private Subnet의 EC2에 대한 Custom AMI 생성

EC2 > private-ec2-a1 > (오른쪽)우클릭 > 이미지 및 템플릿 > 이미지 생성

이미지 이름: ami-private-ec2

[v] 활성화

(+) private-ec2-[a/c]1 중지

2) Auto Scaling을 위한 Launch Template(시작 템플릿) 생성

- AMI

- Key pair

- Network

- Storage

...

시작 템플릿 이름: lab-vpc-asg-lt

AMI: ami-private-ec2

인스턴스 유형: t2.micro

키페어: ec2-private-seoul

서브넷: 시작 템플릿에 포함하지 않음  // 생성되는 인스턴스를 특정 서브넷에 국한시키지 않기 위함

보안 그룹: private-ec2-sg

3) Auto Scaling을 위한 Application Load Balancer 구성 (+) Target Group

a. Target Group 생성

이름: lab-vpc-alb-asg-tg

=> Auto Scaling에 연결되는 Application Load Balancer의 타켓 그룹이므로 Auto Scaling을 통해 생성되는 인스턴스가 자동 등록됨

b. Application Load Balancer의 보안 그룹 생성

이름: lab-vpc-alb-asg-sg

c. Application Load Balancer 생성

이름: lab-vpc-alb-asg

 

보안 그룹: lab-vpc-alb-asg-sg

대상 그룹: lab-vpc-alb-asg-tg

 

ㄴ. Auto Scaling Group 및 Scaling Policy 구성

1) Auto Scaling Group 생성

-  Launch Options

- Group size

- Tags

...

이름: lab-vpc-asg

시작 템플릿: lab-vpc-asg-lt

[v] 기존 로드 밸런서에 연결

기존 로드 밸런서 대상 그룹: lab-vpc-alb-asg-tg

상태 확인 유효 기간: 60초

[v] CloudWatch 내에서 그룹 지표 수집 활성화

원하는 용량: 2

원하는 최소 용량: 2

원하는 최대 용량: 4

[v] 대상 추적 크기 조정 정책

크기 조정 정책 이름: lab-policy-01

대상 값: 7

인스턴스 워밍업: 60초

키: Name

값: asg-ec2  // 생성될 인스턴스 이름

2) 콘솔 및 웹 브라우저를 통해 Auto Scaling Group 시작 확인

lab-vpc-asg > 활동 > 작업 기록

대상 그룹 > 대상 > 등록된 대상

 

ㄷ. Auto Scaling Scale-Out 테스트

(public-ec2-a1)  // 그 외 이전에 생성한 3개의 인스턴스 중지

1) Apache Bench Test를 위한 패키지(httpd-tools) 설치  // 생략

2) Application Load Balancer에 부하(로드) 테스트

> ab -n 2000000 -c 1000 http://lab-vpc-alb-asg-1782061063.ap-northeast-2.elb.amazonaws.com/ 

// 로드밸런서 lab-vpc-alb-asg 의 DNS 이름

// 부하 주는 코드

3) CloudWatch를 통해 CPU Utilization rate 증가 확인

CloudWatch > 지표 > EC2

CPUUtilization 검색

4) Scale-Out으로 EC2 증가 확인

< ctrl + c >  // 테스트 종료

 

ㄹ. Auto Scaling Scale-In 및 Termination Policy 살펴보기

1) Scale-In으로 EC2 감소 확인

2) Auto Scaling Group의 Termination Policy 확인

Auto Scaling Group > 세부 정보 > 고급 구성

 

 

! 반드시 생성한 자원 삭제한다 !

1. Auto Scaling Group

2. Launch Template

3. Application Load Balancer

4. Target Group

5. EC2 Instance

6. RDS

7. DB Subnet Group

8. EFS

9. NAT Gateway

10. CloudFront

11. S3

12. Elastic IP

13. VPC

14. AMI

15. EBS Snapshot

16. Key pair