
[사진 출처 : A Guide to setup Amazon AWS VPC, Subnet, Load Balancer, Route Table, Security Group, NAT and EC2. Just to run your simple app 🤯]
AWS VPC 구성에서의 Load Balance는 ELB
ELB (Elastic Load Balancer) 역할은?
-
트래픽 분산
인터넷 게이트웨이(IGW)를 통해 들어오는 요청을 받아 백엔드 EC2 인스턴스로 분산
사설 서브넷(Private Subnet) 내 EC2 인스턴스로 요청을 전달
-
보안
외부에서 직접 Private Subnet의 EC2에 접근하지 못하도록 보호
Public Subnet에서만 인터넷과 직접 통신하도록 구성
-
고가용성 및 확장성
여러 가용 영역(AZ)에 걸쳐 EC2 인스턴스를 배포하여 트래픽 부하를 분산
장애 발생 시 자동으로 다른 인스턴스로 트래픽을 라우팅하여 서비스 안정성 유지
내가 아는 Load Balancer는 Nginx인데..
AWS ELB 와 Nginx LB 의 차이가 뭐야?
1. AWS ELB
클라우드 네이티브한 관리형 서비스
역할
- AWS에서 클라우드 네이티브하게 제공하는 로드 밸런서
- 외부 트래픽을 받아서 Private Subnet 내부의 EC2 인스턴스로 전달
- AWS에서 자동으로 관리, 뛰어난 확장성과 가용성
- Auto Scaling 그룹과 연동 가능하여 EC2 인스턴스를 자동으로 추가/삭제 가능
사용 목적
- 공용 트래픽 분산 : 인터넷에서 오는 요청을 여러 EC2로 분배
- 고가용성 보장 : 특정 인스턴스가 다운되면 자동으로 다른 인스턴스로 트래픽 전달
- AWS 관리형 서비스 : 유지보수 부담이 적고, AWS 내부에서 최적화
아키텍처 예시
인터넷 → ELB (Public Subnet) → EC2 (Private Subnet)
2. Nginx LB
더 세부적인 트래픽 제어와 내부 로드 밸런싱을 위한 소프트웨어
역할
- Nginx는 소프트웨어 기반 로드 밸런서로, 직접 EC2 인스턴스에 설치하는 방식
- 내부 트래픽을 분산하거나, ELB의 보조 역할 수행
- 커스텀 설정이 가능, 정적인 콘텐츠 제공, 리버스 프록시 기능도 수행 가능
- ELB와 달리, 직접 서버 운영 및 설정이 필요
사용 목적
- 내부 로드 밸런싱: ELB에서 받은 요청을 내부의 여러 EC2 인스턴스로 추가 분배
- 리버스 프록시 역할: 캐싱, 압축, 보안 등 추가 기능 수행 가능
- 세부적인 트래픽 컨트롤: 특정 API 요청을 특정 서버로 보내는 등 커스텀 가능
아키텍처 예시
인터넷 → ELB (Public Subnet) → Nginx (Private Subnet) → 여러 EC2 인스턴스
주요 차이점 비교
| 항목 | AWS ELB | Nginx LB |
|---|
| 운영 방식 | AWS에서 관리 | 직접 EC2에 설치 |
| 트래픽 유형 | 외부 트래픽(인터넷 → EC2) | 내부 트래픽(서버 간 부하 분산) |
| 자동 확장 | 자동 지원 | 직접 구성 필요 |
| 보안 및 인증 | AWS 보안 설정 활용 (IAM, WAF) | 직접 SSL/TLS 설정 필요 |
| 추가 기능 | ALB/WAF/Lambda와 연동 가능 | 캐싱, 리버스 프록시, API Gateway 역할 수행 가능 |
| 설정 및 유지보수 | AWS가 관리 (설정 간단) | 직접 설정하고 유지보수해야 함 |
| 비용 | 사용량 기반 과금 | EC2 비용만 발생 |
각각 언제 사용해야해?
1. ELB를 사용해야 할 경우
- AWS에서 자동으로 관리되는 로드 밸런서가 필요할 때
- 외부에서 오는 트래픽을 처리해야 할 때
- Auto Scaling과 연동하여 가용성을 극대화하고 싶을 때
2. Nginx 로드 밸런서를 사용해야 할 경우
- 내부 서비스 간 트래픽을 분산해야 할 때 (Private Subnet 내에서)
- 캐싱, 압축, API Gateway 역할을 추가로 수행해야 할 때
- 세부적인 로드 밸런싱 설정이 필요할 때 (예: 특정 API 요청을 특정 서버로 분배)
3. 둘을 함께 사용해야 할 경우
- ELB를 퍼블릭 엔드포인트로 사용하고, 내부에서는 Nginx를 사용
- ELB → Nginx → EC2 구조로 배포하여 트래픽을 2단계로 최적화
- ELB는 인터넷 트래픽 처리, Nginx는 내부 서비스 로드 밸런싱 + 추가 기능 수행