들어가기 앞서 . . .
AWS 강의를 들으며, 로드 밸런서 관련 내용을 블로그에 남기고자 게시글을 작성하게되었다.
EC2, 보안 그룹, 리스너 및 대상 그룹 설정까지 ELB를 사용하기 위해 세팅을 하고 이후 실습까지 진행해보자!
기본 구성 세팅
AWS에 EC2를 검색해 들어간 뒤, 카테고리에서 로드밸런서 들어간다.
로드밸런서를 생성해준다.


로드밸런서가 3가지 유형이 존재한다.
실습에서는 Application Load Balncer를 사용할 예정이다.

로드 밸런서 이름을 입력해주고 체계와 IP 주소 유형은 아래와 같이 구성한다.
IPv4와 IPv6의 차이는 무엇일까?

우리가 기존에 알고있는 IP 형태는 IPv4이다.
13.211.211.211 이런식으로 구성되는데, 전 세계적으로 IPv4를 사용하다보니 IPv4의 고갈이 예상되었고, IP를 더 잘게 쪼개어서 만들어낸 IP가 IPv6이다.
그냥 쉽게 이해하자면 IPv4가 구 버전이고 IPv6가 신 버전이다.
가용 영역이란 리전에서 지역을 더 세부적으로 나눈 것인데,
입문자 입장에선 그닥 중요하지않으니 일단 다 체크하고 넘어가도록 하자.

보안그룹 셋팅
보안그룹을 셋팅해보자.
(참고로 보안그룹은 AWS에서 중요한 개념이니 잘 모른다면 다시 개념을 살펴보고 오자!)
EC2에 대한 보안그룹과 ELB에 대한 보안그룹은 별개이다.

왼쪽 카테고리에 네트워크 및 보안을 클릭하여 보안 그룹을 들어가자.

보안 그룹 이름은 직관적이게 설정해주자. 설명을 입력하지않으면 넘어가지않으니 설명을 간단히 입력해주자.
실습이라 설명은 보안 그룹 이름과 똑같이 설정해주었다.

인바운드 규칙을 추가해준다.
프로토콜 HTTPS을 설정해주고 추가해주자.
HTTPS를 추가해주는 이유는 ELB를 사용해서 인증서를 통해 HTTP를 HTTPS로 변환할 것이기 때문에 HTTPS로 들어오는 요청을 허용해주어야한다.
그러면 여기서 궁금한 점!(넘어가셔도 됩니다.)
그러면 HTTP 80번 포트는 왜 열어두어야할까?
ELB는 인터넷 사용자로부터 요청을 받아 EC2 인스턴스 등으로 전달하는 역할을 한다.
대부분의 웹 사이트는 보안을 위해 HTTPS를 사용하지만 기본적으로 도메인을 입력하면 HTTP로 접속하게 되어있기때문에 사용자가 https로 처음부터 입력을 해서 들어와야한다.
그래서 ELB에서 HTTP 80번 포트를 열어놓고, 내부에서 HTTPS로 리디렉션하는 경우가 많다.
그러면 EC2는 왜 ELB와 HTTP 포트로 요청을 보내고 받을까?
궁금증을 해결했으니 설정한대로 ELB에 보안 그룹을 설정하자.

로드 밸런서에 보안그룹을 선택해서 추가해줍니다!

리스너 및 라우팅 세팅
다음은 리스너 및 라우팅을 세팅해주자.

리스너란 로드 밸런서가 들어오는 요청을 기다리는 문이라고 생각하면 된다.
클라이언트가 80번 포트나 443번 포트로 요청을 보내면 리스너가 받게된다.
라우팅 규칙은 받은 요청을 어느 대상 그룹에 보낼지 결정하는것이다.
예를들어서 /api/* 요청을 보내면 API 서버 대상 그룹에게 보내게 되고, /admin/* 요청을 보내면 Admin 서버 대상 그룹에 보내게 된다.
대상그룹은 트래픽이 실제로 전달되는 대상들(EC2, Lambda 등)을 묶은 그룹이다.
대상그룹은 헬스체크를 수행하고, 상태 안 좋은 서버는 제외하고 트래픽을 분산한다.
대상그룹에 대해서는 아래서 조금 더 깊게 알아보자.
대상 그룹 생성을 눌러준다.

우리는 대상 그룹을 EC2 서버로 지정할 것이기 때문에 인스턴스로 선택해주자.

대상 그룹 이름을 적어주고 프로토콜을 HTTP로 설정한다.

상태 검사는 만약 ELB가 EC2 인스턴스 서버가 죽었는데 요청을 보내게되면, 사용자에게 오류가 발생하게된다.
이런 죽은 서버에 트래픽을 안 보내기 위해 ELB는 상태 검사(Health Check)를 30초마다 진행해 죽은 서버를 대상 그룹에서 일시 제외 시킨다.
- /actuator/health라는 엔드포인트에 30초마다 GET 요청을 보냄
- 200 OK 응답이 계속 오면 정상, 에러나 응답 없음이 지속되면 비정상으로 간주

강의에서는 /health 경로를 선택했다.
강사님과 같이 node.js를 사용하면 경로를 /health로 설정해도 괜찮지만 필자는 SpringBoot를 사용해서 actuator라이브러리를 통해 health를 체크할것이기때문에 상태 검사 경로를 /actuator/health로 변경해주었다.
이제 생성해주자.


성공적으로 생성되었다. 이제 적용해보자.


대상 그룹까지 설정했으면 로드 밸런서를 생성해주자.
이렇게 ELB를 생성하고 세팅하는 과정을 마쳤다.
마무리하며
이번 포스팅에서는 AWS의 로드 밸런서를 구성하고 설정하는 전체 과정을 따라가며 실습해보았다.
실습을 진행해보고자하는데, 강의코드가 node.js로만 작성되어있어, 다음 포스팅에서 직접 Springboot 코드를 작성하며 실습을 진행하려고한다.
'AWS' 카테고리의 다른 글
| [AWS] HTTPS 적용하기 (1) | 2025.06.07 |
|---|---|
| [AWS] ELB 배포한 Spring Boot 서버와 연결하기 (0) | 2025.06.06 |
| [AWS]ELB와 SSL/TLS & HTTPS 기초지식 (0) | 2025.02.26 |
| [AWS]AWS EC2 설정하기 (0) | 2025.02.14 |
| [AWS] AWS EC2 기초지식 (0) | 2025.02.13 |