ELB (Elastic Load Balancer)
- 트래픽을 여러 서버(ex. EC2 인스턴스)에 전달하는 역할
- EC2 인스턴스로 가는 부하를 분산
- 유저는 어떤 서버로 요청이 전송되는지 알지 못함 (ELB 하나의 엔드포인트에서 부하 분산)
- LB 보안그룹은 HTTP, HTTPS 모두 허용
- EC2 보안그룹은 HTTP 트래픽만 허용,Source는 LB 보안그룹만 허용
Load Balancer가 필요한 이유
- 부하를 다수의 다운스트림 인스턴스로 분산
- 단일 액세스 포인트 (DNS)를 가질 수 있음
- 상태 확인을 통해 다운된 서버를 알고 이를 핸들링 가능
- SSL을 붙여 암호화된 웹사이트 -> HTTPS 트래픽을 가질 수 있음
- 고가용성 제공
- 클라우드 내에서 private 트래픽 / public 트래픽 분리 가능
ELB가 필요한 이유
- 관리형 로드밸런서로, 관리가 편리 (AWS가 관리)
- AWS 서비스와 통합이 용이
AWS에서 LB 종류
- CLB (Classic Load Balancer) (v1 - old)
- ALB (Application Load Balancer) (v2)
- Layer 7 전용 로드밸런서 (HTTP)
- EC2 여러 애플리케이션에 부하분산
- 타겟 그룹(EC2 instance, ECS task, Lambda functions, IP 주소)으로의 라우팅 기능도 지원 (url, 쿼리, 도메인)
- /users -> 1번 서버
- /posts -> 2번 서버
- redirect 지원 (HTTP to HTTPS)
- 마이크로 서비스 / 컨테이너 기반 애플리케이션에 적합한 LB
- 포트 맵핑 기능을 통해 ECS 인스턴스의 동적 포트로 리디렉션 가능
- WebSocket도 지원
- 고정 호스트 이름이 부여됨 (xxx.region.elb.amazonaws.com)
- 클라이언트의 IP는 서버가 직접 보지 못하며, X-Forwarded-For 헤더에 삽입됨
- NLB (Network Load Balancer) (v2)
- Layer 4 로드밸런서
- TCP, UDP 트래픽 처리
- 고성능으로, 초당 수백만건 요청 처리 가능, 지연율 낮음
- AZ 당 하나의 고정 IP
- 각 AZ에 Elastic IP 배정 가능
- 여러 고정 IP가 있는 애플리케이션을 노출해야 할 때 유용
- 타겟그룹
- EC2 Instance (NLB가 EC2 인스턴스로 리디렉션, TCP/UDP 트래픽 자체를 전송 가능)
- IP 주소
- ALB (ALB 앞에 둘 수도 있음, 고정 IP를 NLB를 통해 얻고 ALB를 통해 HTTP 로드밸런싱)
- Health Check는 TCP, HTTP, HTTPS 지원
- GWLB (Gateway Load Balancer)
- Layer 3에서 동작 (Network Layer) - IP protocol
- 방화벽, 침입 탐지 및 방지 시스템에 사용
- 트래픽 검사
- 유저 트래픽 -> GWLB -> 써드파티 보안 가상 어플라이언스에 보안검사 -> 실패 시 드랍 / 성공 시 GWLB -> 애플리케이션
- 모든 트래픽에 대해 단일 엔트리 / 출구의 역할 및 가상 어플라이언스에 트래픽 분산
- 6081 포트의 GENEVE 프로토콜 사용
- 타겟그룹
- 타사 어플라이언스 (EC2 or IP)
Reference
'Programming' 카테고리의 다른 글
[AWS, Certified Developer Associate] RDS - Storage Auto Scaling, Read Replica, Multi-AZ (0) | 2024.05.01 |
---|---|
[AWS, Certified Developer Associate] ASG (0) | 2024.04.29 |
[AWS, Certified Developer Associate] EC2 - AMI, Instance Store, EBS, EFS (1) | 2024.04.28 |
[AWS, Certified Developer Associate] EC2 - 정의, 인스턴스 유형, 보안그룹 (0) | 2024.04.28 |
[AWS, Certified Developer Associate] IAM (0) | 2024.04.28 |