ELB의 개요
ELB란
Elastic Load Balancing의 약자로,
AWS의 로드발란서 서비스
- 네트워크 트래픽을 EC2, 컨테이너, IP 주소 등 여러 대상으로 자동 분산 가능
- 애플리케이션의 가용성과 내구성을 높일 수 있음
- 로드발란서에서 비정상을 탐지하면, 비정상이 탐지된 대상으로의 라우팅을 중단하고 정상으로만 라우팅함
Load Balancer란?
네트워크 트래픽을 분산하는 역할 담당
ELB의 종류
- Application Load Balancer
- Layer 7
- HTTP, HTTPS
- HTTP Header Content로 라우팅 요청 처리
- 웹 애플리케이션, 서비스에 적합
- Network Load Balancer
- Layer 4
- TCP, UDP, TLS
- Protocol, Port Number를 사용해 라우팅 요청 처리
- 수백만의 대용량 트래픽 처리에 적합
- Gateway Load Balancer
- Layer 3
- Gateway Load Balancer Endpoint
- Layer 4
- Gateway Load Balancer
- GENEVE protocol을 사용해서 encapsulation 트래픽 전송
- Transparency한 네트워크 게이트웨이를 제공
- 보안 검사를 위한 방화벽. IPS, IDS 등의 원본 패킷의 데이터가 중요한 가상 어플라이언스에 적합
- Layer 3
- Classic Load Balancer
- Layer 4, Layer 7
- HTTP, HTTPS, TCP, TLS
- Protocol, Port Number를 사용해 라우팅 요청 처리
- 이전 세대의 EC2-Classic 네트워크에서 사용
ELB의 구성
Gateway Load Balancer 제외!
클라이언트에서 리스너로, 리스너에서 Target Group으로 요청
Client → Listener → Target Group
Listener
- 연결 요청을 확인하는 기능
- 리스너의 규칙에 따라 대상그룹에서 대상으로 라우팅하는 방법이 결정됨
- 연결을 위해 프로토콜 및 포트 번호로 구성
Target Group
- 대상(Target)의 모임
- Target
- EC2 인스턴스
- EC2 Auto Scaling Group
- IP 주소
- Lambda
- Application Load Balancer
고가용성과 확장성
확장성(Scalability)
수직적 확장
- 자원을 추가하는 방식
- ex) EC2 인스턴스 유형 변경: t2.micro → t2.large
수평적 확장
- 노드를 추가하는 방식
- 사용량에 따라 즉시 리소스를 확장, 축소 가능하기에 탄력성 있음
- ex) EC2 인스턴스 개수 늘리기
고가용성(High Availability) vs 내결함성(Fault Tolerance)
고가용성(High Availability)
- 서비스 중단 최소화
- 애플리케이션의 99.99% 실행이 목표
- 2개 이상의 가용영역에 애플리케이션이나 리소스를 운영하는 것
- 내결함성보다 설계가 덜 복잡하며, 비용이 상대적으로 적게 발생함
내결함성(Fault Tolerance)
- 서비스 중단 없음
- 애플리케이션의 지속적인 실행이 목표(zero downtime)
- 구성요소에 오류가 발생해도 계속 작동하도록 중복 하드웨어로 구성함
- 중복된 리소스를 구성하므로, 구성이 복잡하며 비용이 비교적 많이 발생함
Target Groups 개요 및 실습
대상 유형(Target Type)
- 인스턴스
- 개별 EC2 인스턴스
- EC2 Auto Scaling Groups
- IP 주소
- Lambda 함수
- Application Load Balancer만 연결 가능함
- Application Load Balancer
- Network Load Balancer만 연결 가능함
프로토콜
| Application Load Balancer | HTTP |
| HTTPS | |
| Network Load Balancer | TCP |
| TLS | |
| UDP | |
| TCP_UDP | |
| Gateway Load Balancer | GENEVE |
상태 검사(Health Checks)
등록된 대상(Target)에게 상태 확인 메시지를 보내서 대상의 상태를 확인할 수 있는 기능
속성 - HTTP/HTTPS
Application Load Balancer에서 사용
- 등록 취소 지연(Deregistration delay/Connecting Draining)
- 등록 취소된 인스턴스에 더 이상의 요청을 보내지 않도록 하는 기능
- 진행중인 요청이 있다면, 설정해 놓은 시간동안 연결이 유효상태가 되지 않으면 연결 요청 하지 않음
- 느린 시작 기간(Slow start duration)
- 기본적으로는 대상은 대상 그룹으로 등록되자마자 전체 요청을 받기 시작하여 초기 상태 확인을 전달함
- 느린 시작 모드에서는 로드밸런서가 대상으로 보낼 수 있는 요청 수를 선형으로 증가
- 알고리즘
- 라운드 로빈(Round-Robin): 일정 시간마다 라우팅 변경
- 최소 미해결 요청(Least Outstanding Requests): 처리하고 있는 요청이 가장 적은 대상에게 라우팅
- 고정(Stickness Sessions / Session Affinity)
- 세션이 유지된 상태면, 모든 요청을 동일한 인스턴스로 유지하는 기능
- 세션 데이터를 잃지 않으려는 상태 정보를 유지하는 서버에 적합
속성 - TCP/UDP/TLS
Network Load Balancer에서 사용
- 등록 취소 지연(Deregistration delay)
- 등록 취소된 인스턴스에 더 이상의 요청을 보내지 않도록 하는 기능
- 진행중인 요청이 있다면, 설정해 놓은 시간동안 연결이 유효상태가 되지 않으면 연결 요청 하지 않음
- 등록 취소시 연결 종료(Connection termination on deregistration)
- 등록 취소 지연에 도달하면 NLB가 활성 연결 종료
- 프록시 프로토콜 v2
- 클라이언트 IP 주소 보존(Preserve client IP address)
- 들어오는 모든 트래픽의 IP를 애플리케이션으로 전달
- 고정(Stickness Sessions / Session Affinity)
- 세션이 유지된 상태면, 모든 요청을 동일한 인스턴스로 유지하는 기능
- 세션 데이터를 잃지 않으려는 상태 정보를 유지하는 서버에 적합
고정 세션(Stickness Sessions / Session Affinity)
대상 그룹의 동일한 대상으로 트래픽을 라우팅하는 기능
- Application Load Balancer, Network Load Balancer 모두 사용 가능
- ALB의 경우, 세션 유지를 위해 쿠키를 사용하므로 클라이언트에서 쿠키를 지원해야 함
교차 영역 로드 밸런싱(Cross-Zone Load Balancing)
교차 영역 로드 밸런싱 비활성화
- 가용영역 내의 타겟에만 트래픽 분배
교차 영역 로드 밸런싱 활성화
- 모든 가용영역의 등록된 모든 타겟 인스턴스에 동일하게 트래픽 분배
Application Load Balancer
Application Load Balancer
HTTP, HTTPS 프로토콜을 사용하는 애플리케이션 로드 밸런싱에 사용
- 리스너 규칙을 기반으로 라우팅 설정 가능
- HTTPS 프로토콜 사용시 SSL/TLS 인증서 배포해야 함
- ACM(AWS Certificate Manager) or 클라이언트 인증서
- AWS Web Application Firewall(WAF)와 통합하여 로드 밸런서 뒤의 웹 애플리케이션을 공격으로부터 보호 가능
Listener 규칙
host-header(호스트 헤더)
- 각 요청의 호스트 이름을 기반으로 라우팅
path-pattern(경로)
- 요청의 URL 경로 패턴을 기반으로 라우팅
http-header(HTTP 헤더)
- 각 요청의 HTTP 헤더를 기반으로 라우팅
http-request-method(HTTP 요청 메서드)
- 각 요청의 HTTP 요청 메서드를 기반으로 라우팅
query-string(쿼리 문자열)
- 쿼리 문자열의 키/값 페어 또는 값을 기반으로 라우팅
source-ip(소스 IP)
- 각 요청의 소스 IP 주소를 기반으로 라우팅
Network Load Balancer(NLB)
TCP, UDP, TLS 요청을 로드밸런싱 해야 하는 경우에 사용
- 초당 수백만 개의 요청과 갑작스럽고 변동성이 높은 트래픽 패턴을 처리하도록 설계됨
- 대기 시간이 매우 짧음
- 고도의 성능이 요구되거나 대기 시간이 낮아야 하는 애플리케이션에 적합
- 게임 등의 수백만의 동시 사용자 처리에 적합
- 고정 IP 주소 할당 가능
- TLS 프로토콜 사용시 SSL/TLS 인증서 배포해야 함
- ACM(AWS Certificate Manager) or 클라이언트 인증서
Gateway Load Balancer
방화벽, 침입 탐지 및 방지 시스템, 심층 패킷 검사 시스템과 같은 가상 어플라이언스를 배포, 확장 및 관리
'김동주' 카테고리의 다른 글
| 지란스터디 4기 계획 (0) | 2025.08.03 |
|---|---|
| AWS EC2에 대해서 (0) | 2025.06.25 |