AWS

VPC를 구성하고 Load Balancing과 Auto Scaling 적용하기

JAEJUNG 2021. 8. 11. 18:04

지금까지 EC2_hands-onVPC_hands-on을 통해 기본적인 인스턴스 생성과 VPC 구성을 실습했다.

이제 이 웹 서버를 운영하면서 생기는 장애 상황을 대비하여 ELB(Elastic Load Balancer)를 통한 부하분산과

Auto Scaling 서비스를 통한 인스턴스 자동 확장을 실습해보자.

 

Overview

1. VPC 구성하기

2. ELB를 통해 부하분산 처리하기

3. Auto Scaling을 통해 인스턴스 자동 확장하기

 

Step1. VPC 구성하기

기본적인 VPC 구성 과정은 생략하도록 한다.

Subnet

Routing Table

 

이제 인스턴스를 생성해주자

 

앞서 만들었던 VPC에 생성하기 위해 [네트워크], [서브넷] 부분을 아래와 같이 선택해주자.

퍼블릭 IP 자동 할당도 "활성화"로 변경해주자

 

아래 [고급 세부 정보]-[사용자 데이터]에서 아래 정보를 입력하자.

(시작하면 자동으로 Apache 웹 서버를 설치하고 시작하기 위한 값이다.)

#include
https://kr-id-general.workshop.aws/sh/start.sh

 

구분을 위해 태그도 추가해주자

 

웹 서버 접속을 위한 80 port도 추가해주자

 

[검토 및 시작] - [시작하기]를 누른 후 [기존 키 페어 선택]에서 사용했던 키를 선택해주자

 

인스턴스가 다 생성됐으니 퍼블릭 DNS 주소를 통해 웹 서버로 접속해보자

 

아래와 같이 잘 접속되는 것을 확인할 수 있다.

 

이제 퍼블릭이 아닌 프라이빗 서브넷에 인스턴스를 생성하고, ELB(Elastic Load Balancer)를 통해 로드 밸런싱 하는

실습을 진행해보자

 

조금 전 생성했던 인스턴스를 이미지로 생성하여 Private Subnet에 생성한다.

"재부팅 안 함" 옵션을 활성화하지 않으면 이미지를 생성하고자 하는 서버가 Stop 되고 이미지를 생성한 후,

다시 서버가 start 되므로 해당 옵션을 활성화시켜준다.

 

생성된 이미지로 인스턴스를 시작해준다.

 

변경할 사항은 [네트워크]의 VPC와 [서브넷] 부분의 private-subnet01로 변경해준다.

두 번째 인스턴스는 private-subnet02를 선택해주면 된다.

 

태그는 private 1a를 할당해주자(두 번째 인스턴스는 private 1c)

 

새로운 보안 그룹을 생성해준다.

 

[시작하기]를 통해 인스턴스를 생성해준다.

두 번째 인스턴스도 생성해준다.

 

Step2. ELB를 통해 부하분산 처리하기

이제 해야할 것은 ELB를 생성해주고 인스턴스 두 개를 로드밸런싱 해보자

 

[Load Balancer 생성]을 클릭한다.

 

HTTP 트래픽에 대한 부하 분산을 처리해야 하기 때문에 "Application Load Balancer"를 선택한다.

 

이름을 WEB-ALB로 설정하고

가용영역에서 VPC를 선택한 후 public-subnet을 각각 선택한다.

 

스크롤을 아래로 내려 태그도 하나 지정해준다.

 

[보안 설정 구성]은 SSL 설정인데 이번 실습에선 적용하지 않으므로,  [보안 그룹 구성]으로 넘어간다.

새 보안 그룹을 생성한 후 [라우팅 구성]으로 넘어간다.

 

라우팅할 대상 그룹을 설정하는 부분이다.

이름을 TargetGroup으로 지정하고 다음으로 넘어간다.

 

private-subnet에 위치한 두개의 인스턴스를 추가해주자

 

이제 Load Balancer가 생성됐다.

로드밸런서의 상태가 "활성"으로 변경될 때까지 기다린다.

 

로드 밸런서가 활성화되면 dns 이름을 통해 웹 서버를 접속해보자

 

새로고침을 할 때마다 각각 다른 가용영역의 웹 서버로 접속하는 것을 확인할 수 있다.

 

현재 2c -> 2a -> 2c -> 2a와 같이 번갈아서 접속되는데 이를 Round-Robin 방식이라 하는데,

자세한 내용은 추후 포스팅을 통해 다루도록 한다.

 

Step3. Auto Scaling을 통해 인스턴스 자동 확장하기

Auto Scaling 기능을 사용하면 EC2 인스턴스의 수를 자동으로 확장/축소하는 것이 가능하다.

웹 서버를 운영하면서 트래픽이 언제 몰릴지, 혹은 줄어들지 예측하기 어렵기 때문에 자동으로 필요한 컴퓨팅 자원을

조절함으로써 가용성과 탄력성을 보장해주고, 비용효율적으로 클라우드 서비스를 이용할 수 있다.

 

[Auto Scaling]에서 [시작 구성 생성]을 통해 새로운 Auto Scaling을 설정한다.

 

AMI에서 아까 생성했던 이미지를 선택해주고, 인스턴스 유형은 t2.micro를 선택한다.

 

[보안 그룹]은 private-sg를 선택한다.

 

기존 키 페어를 선택하고 [시작 구성 생성]을 클릭한다.

 

Auto Scaling 정책을 생성했으니 이제 이 정책을 할당할 Auto Scaling Group을 생성해보자

[Auto Scaling 그룹 생성]을 클릭한다.

 

[시작 구성]을 클릭하여 조금 전 생성했던 auto scaling 정책을 클릭한다.

[네트워크]에선 VPC와 private-subnet01을 선택한다.

 

생성해두었던 기존 로드 밸런서와 연결한다.

 

[그룹 크기]에서 최대 용량을 4로 설정한다.

 

이제 검토 후 [Auto Scaling 그룹 생성]을 클릭한다.

 

현재 아키텍처는 아래와 같다.

 

Auto Scaling 정책에 의해 생성된 인스턴스를 확인한다.

 

로드 밸런서의 DNS로 접속해보자.

 

웹 서버로 접속되며 LOAD TEST를 통해 부하 테스트를 할 수 있다.

클릭해보자.

 

현재 cpu 사용률이 100%인 상태로 변경된다.

[모니터링]을 통해 인스턴스의 cpu 사용률이 증가한 것을 확인한다.

 

로드 밸런싱의 [대상 그룹]을 확인하면 인스턴스 1대가 추가된 것을 확인할 수 있다.

 

웹 서버를 접속하면 확장된 인스턴스와 번갈아가면서 접속이 되는 것을 확인할 수 있다.

 

이것으로 실습을 마치도록 한다.

길었던 실습인 만큼 Auto Scaling, Load Balancer, 인스턴스, 스냅샷, VPC 모두 삭제해야 한다.

'AWS' 카테고리의 다른 글

RDS_hands-on  (0) 2021.08.14
CloudFront를 활용한 S3 앱 배포하기  (0) 2021.08.12
AWS CLI를 통한 Amazon S3 데이터 업로드  (0) 2021.08.11
VPC_hands-on  (0) 2021.08.10
S3_hands-on  (0) 2021.08.10