들어가며
VPC를 통해 Private, Public 서버를 각각 설정하고 각 서브넷안에 EC2를 생성해 접속해보는 실습을 진행하였다. 이번에는 ELB 와 Auto scaling 기능을 직접 사용해보며 AWS 에서 제공하는 서비스에 대해 공부해 볼 것이다.
ELB (Elastic Load Balancer)
ELB란 클라이언트의 서비스 요청 트래픽을 여러 서버로 분산시켜주는 서비스이다.

또한 ELB의 경우 완전 관리형 서비스로 시스템에 대한 업그레이드, 가용성, 관리 등은 AWS에서 지원해준다.
그럼 어떻게 동작하나?
ELB 에서 중요한것은 Health Check 과정이다. Health Check를 HTTP 요청을 통해 진행하며 만약 200 응답이 오지않으면 트래픽을 그쪽으로 주지 않는다.
ELB 실습
서버가 여러대는 아니라 부하분산은 하지는 않지만 이제 ALB를 통해 접속을 하는것을 확인해 볼 것이다.
앞서 했던 실습의 경우는 Bastion 서버를 통해 web 서버에 접속하였는데 이번 실습에서는 ELB 중에 ALB를 통해 접속하는과정을 확인해 볼 것이다.

EC2 → 보안그룹 → 보안그룹생성
인바운드 규칙 HTTP, HTTPS → Any IPv4 로 보안그룹 생성, 아웃바운드 규칙 모든트래픽 any IPv4 허용

EC2 → 대상그룹 → 대상그룹생성

VPC는 직접만든 VPC로 설정
상태검사 경로는 / 를 설정해준다.

대상그룹은 web 서버로 둔다.
(아래에 보류 중인것으로 포함) 버튼 누르기.

아래처럼 target 그룹을 생성할 수 있다.

EC2 → 로드런밸싱 → 로드밸런서 → 로드밸런서 생성 → ALB 생성 (lab-edu-alb-web)

이때 체계의 경우 내부 LB도 사용할 수 있는데 3-Tier 구조에서 주로 사용한다. WAS 서버를 따로 있을때 내부 트래픽이 커지면 사용
네트워크 매핑→ VPC(사용하는 VPC)
가용영역은 두개 다 사용

리스너 및 라우팅
대상그룹 → 직접 만든 대상그룹 (가중치는 백분율로 얼마나 접근할지 정하는것이다. 실습에서는 1개)

아래 처럼 LB가 생성된다.

AWS 로드 밸런서는 트래픽이 늘어나거나 줄어듦에 따라 자동으로 규모를 조절(Scaling)하고 이 과정에서 내부 IP 주소가 수시로 변경될 수 있어서 DNS 이름을 통해 접근한다.
그럼 직접 접속해보면(LB의 DNS 주소)

접속되는것을 볼 수 있다.
Auto scaling
서비스 트래픽 변화에 맞춰 EC2 인스턴스 수량을 자동으로 조절하는 기능이다.
EC2 Instance Auto Scaling
Auto scaling 의 구성 요소를 보면
그럼 어떤 흐름으로 진행될까?
트래픽/지표 증가로 Scale Out
반대로 트래픽이 감소하면?
Alarm 조건 충족 → Scale In으로 인스턴스 수 감소
실습
EC2 → 이미지 생성할 서버 선택 → 작업 → 이미지 생성

이미지 생성 확인

인스턴스 → 시작템플릿
내 AMI 선택

auto scaling 을 할때 하나의 가용영역 안에서만 만들면 가용성이 낮아지기때문에 두개 이상의 서브넷을 둔다.

보안 그룹 = web server
auto 로 만들어질때 해당 웹서버임을 알리는 태그추가


EC2 → 오토스케일링 그룹 생성(lab-edu-template-autoscaling-web)


모니터링 확인

정책

Auto scaling은 대부분 상시적으로 유지보다는 이벤트가있을때 사용한다
최소 용량 1개는 원본 서버를 제외하고 Auto Scaling 그룹(ASG)이 새로 만든 서버만 계산한 숫자

이외에 설정은 다 기본값으로 설정
ec2로 오면 초기화 되어있는 ec2 인스턴스를 확인할수있다.
(오토스케일링으로 생성된 인스턴스)

서버 두개가 LB가 잘 되는지 확인해보면


두개 서버가 새로고침 했을때 바뀌는것을 볼 수 있다.
부하 주기 (Stress Tool)

EC2 모니터링을 보면 순간적으로 부하가 오른것을 볼 수 있다.
(CPU 사용량 30 이상이면 Auto scaling 하도록 설정)

auto scaling 으로 서버가 늘어난것을 볼 수있다.

실습의 흐름을 보면
1단계: 원본 서버(EC2) 구성 및 AMI 생성
2단계: 시작 템플릿(Launch Template) 작성
3단계: Auto Scaling Group(ASG) 및 로드밸런서(ALB) 연동
4단계: 부하 감지 (Scale Out 테스트)
5단계: 부하 감소 및 서버 축소 (Scale In)
마무리
직접 ELB를 설정하고 Auto scaling 을 해보면서 서버의 증가와 감소를 직관적으로 보니 이해가 쉽게 되었다. 아직 실습으로 간단하게 진행했지만 추후에 프로젝트를 진행하면서 이때 배웠던 개념을 실습해보고 싶다. 또한 이 과정을 하면서 접속이 안되고 오류도 나고 healthy 도 unhealthy 가 자주되고 하면서 스트레스를 받았는데 찾아서 고쳐보니 서버안의 80 포트가 listen 중이지 않거나 보안그룹이 잘 못 되어있거나 하면서 작은 실수 하나들이 오랜시간을 잡았었다. 그래서 더더욱 보안그룹과 VPC 설정 등 기초적인 세팅을 잘하는것이 정말 중요하다는것을 느꼈다.