AWS 로드 밸런서 준비하기 2025-06-09

sso·2025년 6월 9일

AWS

목록 보기
7/34

Server B에서 Web까지 접속 가능하도록 구성 후 프라이빗 서브넷에 위치한 EC2인 Web에서 dnf -y install httpd로 웹 서버 설치

인스턴스 2개 생성(public, private)
private 인스턴스에서 외부와 통신해야 하므로 NAT(탄력적 IP) 생성

나의 공인 ip 확인, 탄력적 IP와 동일한 것을 확인

curl ifconfig.me

sudo dnf -y install httpd
sudo systemctl --now enable httpd
curl localhost


이제 웹서버가 준비되었으므로 인터넷에 공개되지 않은 상태임.
로드밸런서를 이용하여 외부(웹 브라우저)에서 확인할 수 있게 하기.

로드밸런서(Load Balancer)

🔧 배경 설명부터 시작해보자!
어떤 웹사이트(예: 네이버)에 사람들이 몰리면, 그 웹사이트를 처리하는 웹 서버 한 대만으로는 감당이 안 될 수 있어요.
👉 예: 갑자기 수천 명이 동시에 접속하면, 서버가 느려지거나 멈출 수 있어요.

🧱 해결책: 스케일 아웃 (Scale-Out)
그래서 웹 서버를 여러 대로 늘려서 나눠서 처리하게 만들어요.
이걸 스케일 아웃(Scale-Out) 이라고 해요.
(스케일 업은 한 서버의 성능을 올리는 거고, 스케일 아웃은 서버 숫자를 늘리는 거!)

❗ 그런데 문제가 생겨!
웹 서버를 여러 대로 늘리기만 해서는 안 되는 게 있어요.

왜냐하면 일반적으로 PC나 스마트폰의 브라우저는
"어떤 웹 서버로 접속해야 하는지"를 알 수 없어요.
→ 무조건 하나의 IP 주소(혹은 도메인)로만 접속하려 해요.

🧠 그래서 등장하는 게 로드밸런서
로드밸런서(Load Balancer)는 말 그대로 ‘부하를 나눠주는 장치’예요.

사용자가 접속하면 로드밸런서가 먼저 요청을 받고,
그걸 뒤에 있는 여러 대의 웹 서버 중 하나에 알아서 분산시켜 줘요.
예를 들어:

사용자 A → 웹서버 1

사용자 B → 웹서버 2

사용자 C → 웹서버 1

사용자 D → 웹서버 3

✅ 한 줄 정리
"웹 서버 여러 대로 나누기만 해선 안 되고, 그 사이에 로드밸런서라는 장치를 넣어서 사용자 요청을 적절히 분산시켜야 웹 서비스가 끊김 없이 잘 작동한다!"


① 🌐 웹은 주로 80번(HTTP), 443번(HTTPS) 포트를 쓴다
인터넷에서 웹사이트를 열면, 기본적으로 포트 80(HTTP) 또는 포트 443(HTTPS) 를 사용해요.

예: 네이버(https://www.naver.com)는 포트 443을 씀 (보안 연결)

② 🔁 로드밸런서는 요청을 ‘바꿔서’ 서버에 전달해요 (요청 라우팅)
사용자가 https://myapp.com에 접속하면:

외부에서는 HTTPS (443) 를 쓰지만,

로드 밸런서는 그걸 내부의 웹 서버로 보낼 땐 HTTP(예: 포트 8080) 으로 바꿔서 보내요.

🧠 이걸 요청 라우팅(request routing) 이라고 해요.
즉, "겉은 HTTPS, 속은 HTTP" 이런 식으로 바꿔주는 거예요.

③ 🔐 왜 이런 복잡한 일을 할까?
▶ HTTPS → HTTP로 바꾸는 이유:
암호화/복호화는 CPU를 많이 써요.

웹 서버에서 이걸 다 처리하면 부담이 커요.

그래서 로드밸런서가 대신 처리해주고, 웹 서버는 가벼운 HTTP로 처리하게 해요.

▶ 포트 번호를 바꾸는 이유:
0~1023번 포트는 root 권한이 있어야 사용 가능해요.

root로 웹서버를 돌리면 보안에 취약해요.

그래서 웹 서버에서는 보통 1024번 이상 포트를 사용해요.

자바: 8080

루비: 3000
이건 그냥 관습적인 번호예요.

✅ 요약 한 줄로!
로드밸런서는 사용자 요청(HTTPS 443 등)을 받아서, 내부 웹 서버에는 보안도 고려해서 HTTP(예: 8080)로 바꿔서 전달해줘요.


2개 이상의 퍼블릭 서브넷이 필요함

sudo su -
vi /var/www/html/index.html
4gl web test elb


삭제

profile
오늘도 하나씩 해결해 나가자!

0개의 댓글