1. 로드 밸런싱(Load Balancing)이란?
로드 밸런서는 트래픽을 여러 대의 다운스트림 서버(EC2 인스턴스)로 전달하는 서버입니다.
핵심 개념: 사용자는 로드 밸런서의 단일 접점(DNS)을 통해 애플리케이션에 접근하며, 내부에 몇 대의 서버가 있는지 알 필요가 없습니다.
2. 로드 밸런서를 사용하는 이유
- 부하 분산: 여러 다운스트림 인스턴스에 부하를 분산
- 단일 접점 제공: 애플리케이션에 대한 단일 DNS 접점 노출
- 장애 처리: 다운스트림 인스턴스의 장애를 원활하게 처리
- Health Check: 인스턴스에 대한 정기적인 상태 확인 수행
- SSL Termination: 웹사이트에 대한 HTTPS SSL 종료 제공
- 쿠키 고정성: 쿠키를 통한 Stickiness 강제 적용
- 고가용성: 여러 가용 영역에 걸친 고가용성 제공
- 트래픽 분리: 공용 트래픽과 사설 트래픽 분리
3. Elastic Load Balancer를 사용하는 이유
ELB는 AWS 관리형 로드 밸런서입니다.
AWS 보장사항:
- AWS가 작동을 보장
- 업그레이드, 유지보수, 고가용성을 AWS가 담당
- 제한된 구성 옵션만 제공 (간편함)
비용 효율성: 다른 AWS 서비스와의 통합으로 설정 비용 절감
- EC2, Auto Scaling Groups, Amazon ECS
- AWS Certificate Manager (ACM), CloudWatch
- Route 53, AWS WAF, AWS Global Accelerator
4. Health Checks (상태 확인)
Health Check는 로드 밸런서에게 중요한 기능입니다.
목적: 로드 밸런서가 트래픽을 전달하는 인스턴스가 요청에 응답할 수 있는지 확인
작동 방식:
- 특정 포트와 경로에서 상태 확인 수행 (일반적으로
/health)
- 응답이 200 (OK)이 아니면 인스턴스를 Unhealthy로 판단
- Unhealthy 인스턴스에는 트래픽을 보내지 않음
5. AWS 로드 밸런서의 4가지 종류
AWS는 4가지 관리형 로드 밸런서를 제공합니다.
Classic Load Balancer (CLB) - v1 (구세대):
- HTTP, HTTPS, TCP, SSL (secure TCP) 지원
Application Load Balancer (ALB) - v2 (신세대):
- HTTP, HTTPS, WebSocket 지원
- Layer 7에서 작동
Network Load Balancer (NLB) - v2 (신세대):
- TCP, TLS (secure TCP), UDP 지원
- Layer 4에서 작동, 초고성능
Gateway Load Balancer (GWLB):
- Layer 3 (Network layer) - IP Protocol에서 작동
- 방화벽, IDS/IPS 등 네트워크 가상 어플라이언스용
권장사항: 더 많은 기능을 제공하는 신세대 로드 밸런서 사용 권장
배치 옵션: 모든 로드 밸런서는 Internal (private) 또는 External (public)로 설정 가능
6. 로드 밸런서 보안 그룹 설정
로드 밸런서 보안을 위한 보안 그룹 간 참조 방식이 핵심입니다.
ELB 보안 그룹:
- 포트: 80 (HTTP), 443 (HTTPS)
- 소스: 0.0.0.0/0 (어디서든 접근 허용)
- 사용자가 어디서든 로드 밸런서에 접근 가능
EC2 보안 그룹:
- 포트: 80 (HTTP)
- 소스: 로드 밸런서의 보안 그룹 ID (IP 범위가 아님)
- EC2 인스턴스를 로드 밸런서의 보안 그룹에 연결
보안 효과: EC2 인스턴스는 로드 밸런서를 통해서만 트래픽을 받을 수 있어 강화된 보안 메커니즘을 제공합니다.
💡 핵심 포인트
- ELB는 관리형 서비스라 AWS가 알아서 확장(Scaling)과 유지보수를 다 해줌
- Health Check 경로를 단순히 /로 두기보다, 애플리케이션의 로직이나 DB 연결 상태까지 체크하는 별도의 /health 경로를 만드는 게 실무에서 더 확실함
- NLB는 정적 IP(Static IP)를 가질 수 있다는 점이 ALB와의 큰 차이. 화이트리스트 관리가 필요한 환경이라면 NLB를 고려