Application Load Balancer (ALB) 개요
- Application Load Balancer (ALB)는 AWS의 고급 로드 밸런싱 솔루션으로, OSI 모델의 7계층에서 작동하며 HTTP/HTTPS 트래픽을 효율적으로 처리합니다.
주요 특징
1. HTTP/HTTPS 트래픽 처리
- ALB는 7계층에서 작동하여 웹 애플리케이션 트래픽을 세밀하게 관리합니다.
2. 다중 애플리케이션 지원
- 동일한 EC2 인스턴스 상의 여러 애플리케이션에 트래픽을 분산시킬 수 있습니다.예시:
`text단일 EC2 인스턴스:
- 포트 80: 웹 서버
- 포트 8080: API 서버
- 포트 9000: 관리 인터페이스`
3. 고급 라우팅 기능
URL 기반 라우팅
- 요청의 URL 경로에 따라 다른 대상 그룹으로 트래픽을 라우팅합니다.예시:
text/api/* → API 서버 대상 그룹 /admin/* → 관리 서버 대상 그룹 /* → 기본 웹 서버 대상 그룹
호스트 기반 라우팅
- HTTP 헤더의 호스트 필드를 기반으로 라우팅합니다.예시:
textapi.example.com → API 서버 대상 그룹 admin.example.com → 관리 서버 대상 그룹 www.example.com → 웹 서버 대상 그룹
쿼리 문자열 기반 라우팅
URL의 쿼리 파라미터를 기반으로 라우팅합니다.예시:
textexample.com?language=ko → 한국어 버전 대상 그룹 example.com?language=en → 영어 버전 대상 그룹
4. 포트 매핑
- 인스턴스의 다른 포트로 트래픽을 전달할 수 있습니다.예시:
textALB 포트 80 → EC2 인스턴스 포트 8080
대상 그룹 (Target Group)
- 대상 그룹은 ALB가 요청을 라우팅할 대상들의 논리적 그룹입니다.구성 요소:
- EC2 인스턴스
- ECS (Elastic Container Service) 태스크
- Lambda 함수
- IP 주소 (반드시 프라이빗 IP)
예시:
`text웹 서버 대상 그룹:
- EC2 인스턴스 1 (10.0.1.10:80)
- EC2 인스턴스 2 (10.0.1.11:80)
API 서버 대상 그룹:
- ECS 태스크 1 (10.0.2.10:8080)
- ECS 태스크 2 (10.0.2.11:8080)
백엔드 처리 대상 그룹:
- Lambda 함수 "process-data"`
추가 개념
리스너
- 지정된 프로토콜과 포트를 사용하여 연결 요청을 확인합니다.예시:
textHTTP:80 HTTPS:443
규칙
- 리스너에 연결된 규칙은 요청을 어떤 대상 그룹으로 라우팅할지 결정합니다.예시:
text규칙 1: If path is /api/*, Then forward to API 서버 대상 그룹 규칙 2: If host is admin.example.com, Then forward to 관리 서버 대상 그룹 규칙 3: If true, Then forward to 기본 웹 서버 대상 그룹
상태 확인
- ALB는 주기적으로 대상의 상태를 확인하여 트래픽을 정상 대상으로만 라우팅합니다.예시:
text프로토콜: HTTP 경로: /health 포트: 80 간격: 30초 임계값: 2
SSL/TLS 종료
- ALB에서 SSL/TLS 암호화를 처리하고, 백엔드로는 암호화되지 않은 트래픽을 전송할 수 있습니다.예시:
text클라이언트 → ALB: HTTPS (443) ALB → 백엔드: HTTP (80)