Listener
리스너
프로토콜과 포트로 연결을 받고, 규칙에 따라 대상 그룹으로 넘깁니다. GWLB는 리스너가 하나뿐이고 프로토콜 · 포트를 지정하지 않습니다.
Elastic Load Balancing · ALB · NLB · GWLB
Elastic Load Balancing은 들어오는 트래픽을 여러 가용 영역의 정상 대상으로 나눕니다. HTTP 요청은 Application Load Balancer가, TCP · UDP 연결은 Network Load Balancer가, 보안 어플라이언스로 보낼 IP 패킷은 Gateway Load Balancer가 맡습니다. 이 페이지는 공통 개념과 비교표에 이어 세 유형을 하나씩 살펴봅니다.
세 유형 모두 리스너, 대상 그룹, 헬스 체크라는 같은 구성 요소를 씁니다.
로드 밸런서 유형 (ALB · NLB · GWLB)
GWLB와 어플라이언스 사이 GENEVE 포트
GWLB 인터페이스 최대 패킷 크기 (bytes)
ALB 상호 TLS 인증 (passthrough · verify)
Common building blocks
로드 밸런서는 대상의 상태를 계속 확인하고 정상인 대상에만 트래픽을 보냅니다. Auto Scaling 그룹이나 컨테이너가 바뀌어도 클라이언트가 쓰는 주소는 그대로입니다. 세 유형은 아래 구성 요소를 공통으로 씁니다.
Listener
프로토콜과 포트로 연결을 받고, 규칙에 따라 대상 그룹으로 넘깁니다. GWLB는 리스너가 하나뿐이고 프로토콜 · 포트를 지정하지 않습니다.
Target group
instance, ip 같은 대상 유형을 정하고 대상을 등록합니다. 대상 유형은 생성 후 바꿀 수 없고, 헬스 체크와 속성도 대상 그룹마다 따로 둡니다.
Health check
정상 대상에만 보내되, 정상 대상이 하나도 없으면 모든 대상에 보냅니다. ALB · NLB는 최소 정상 대상 수나 비율로 DNS failover와 라우팅 failover 기준을 정할 수 있습니다.
Cross-zone
켜면 각 노드가 모든 가용 영역의 대상에 나눕니다. ALB는 로드 밸런서 수준에서 항상 켜져 있고, NLB · GWLB는 기본으로 꺼져 있습니다.
Deregistration delay
등록을 취소한 대상은 draining 상태로 진행 중인 요청을 마칩니다. 기본 300초이고, 지나면 unused가 됩니다.
LCU reservation
예상되는 급증 전에 최소 용량을 예약합니다. 예약 후에도 트래픽에 따라 확장하되 예약치 아래로 줄지 않습니다. NLB · GWLB는 1 LCU를 2.2 Mbps로 환산합니다.
Type selection
트래픽을 어느 계층에서 보고 결정해야 하는지가 선택 기준입니다.
| 항목 | ALB | NLB | GWLB |
|---|---|---|---|
| OSI 계층 | L7 · 요청 단위 | L4 · 연결 · 흐름 단위 | L3 · 패킷 단위 (투명 게이트웨이) |
| 리스너 프로토콜 | HTTP · HTTPSHTTP/2 · gRPC는 HTTPS 리스너 | TCP · TLS · UDP · TCP_UDP · QUIC · TCP_QUIC | 모든 포트의 IP 패킷어플라이언스와는 GENEVE (UDP 6081) |
| 대상 유형 | instance · ip · lambda | instance · ip · alb | instance · ip |
| 대상 선택 | round robin(기본), least outstanding requests, weighted random | 프로토콜, IP · 포트, TCP 시퀀스 번호 기반 flow hash | 5-tuple(기본), 3-tuple, 2-tuple 흐름 고정 |
| 고정 IP | DNS 이름으로 접근. 고정 IP가 필요하면 NLB 뒤에 ALB를 둠 | 가용 영역마다 고정 IP, 인터넷 연결 시 Elastic IP 지정 가능 | 라우팅 테이블에서 GWLB endpoint를 다음 홉으로 지정 |
| 보안 그룹 | 로드 밸런서에 연결 | 생성할 때 연결한 경우에만 이후 변경 가능 | 없음. 어플라이언스의 보안 그룹 · NACL로 제어 |
| TLS | HTTPS 리스너에서 종료, mTLS 지원 | TLS 리스너에서 종료(ALPN 정책), 또는 TCP로 패스스루 | 종료하지 않음. 패킷을 그대로 어플라이언스에 전달 |
| 교차 영역 분산 | 항상 켜짐. 대상 그룹 수준에서 끌 수 있음 | 기본 꺼짐 | 기본 꺼짐 |
| 대표 용도 | 웹 · API · 마이크로서비스, 앞단 인증 | 고성능 TCP · UDP, 고정 IP, PrivateLink 서비스 | 방화벽 · IDS/IPS 같은 인라인 검사 |
Application Load Balancer · L7
ALB는 클라이언트 연결을 받아 종료하고, 요청의 호스트, 경로, 헤더, 메서드, 쿼리 문자열, 출발지 IP를 기준으로 대상 그룹을 고른 뒤 대상과 별도 연결로 요청을 보냅니다.
ALB당 규칙 (기본 규칙 제외, 조정 가능)
forward 액션 하나에 묶는 대상 그룹
ALB당 대상 (조정 가능)
ALB당 리스너 (조정 가능)
ALB · Listener rules
리스너 규칙은 우선순위가 낮은 번호부터 평가하고, 처음 일치한 규칙의 액션을 실행합니다. 조건은 host-header, path-pattern, http-header, http-request-method, query-string, source-ip 여섯 가지이고, host-header · path-pattern · http-header는 와일드카드 대신 정규식으로도 매칭할 수 있습니다.
규칙마다 forward, redirect, fixed-response 중 하나의 라우팅 액션이 마지막에 있어야 합니다. HTTPS 리스너에서는 authenticate-cognito, authenticate-oidc, jwt-validation 액션을 그 앞에 둘 수 있습니다. 기본 규칙이 아닌 규칙에는 대상에 보내기 전 요청을 고쳐 쓰는 transform(host-header-rewrite, url-rewrite)을 하나씩 붙일 수 있습니다. 규칙 하나에 조건 값은 5개, 와일드카드는 6개까지 씁니다.
ALB · Features
Authentication
HTTPS 리스너 규칙의 authenticate-oidc · authenticate-cognito 액션이 로그인을 처리하고, 인증된 사용자 정보를 헤더에 담아 대상에 넘깁니다.
JWT validation
jwt-validation 액션이 JWKS 엔드포인트의 공개 키로 서명을 확인하고 iss와 추가 클레임을 검사합니다. JWKS 응답은 150 KB, 키 10개까지입니다.
mTLS
verify 모드는 트러스트 스토어의 CA로 클라이언트 인증서를 검증하고, passthrough 모드는 인증서 체인을 헤더로 대상에 넘깁니다. verify 모드 리스너는 ALB당 2개입니다.
Transforms
규칙의 transform이 정규식으로 경로, 쿼리 문자열, Host 헤더를 바꿔 대상에 보냅니다. 애플리케이션 코드나 별도 프록시 없이 URL 체계를 옮길 수 있습니다.
Weighted target groups
forward 액션 하나가 최대 5개 대상 그룹에 가중치로 요청을 나눕니다. 대상 그룹 수준 고정 세션을 켜면 클라이언트가 처음 배정된 그룹에 머뭅니다.
Sticky sessions
ALB가 만드는 AWSALB 쿠키(duration-based)나 애플리케이션 쿠키(application-based)로 같은 대상에 보냅니다. 교차 영역 분산을 끈 대상 그룹에서는 쓸 수 없습니다.
Algorithms · Slow start
slow start는 새 대상의 요청량을 30~900초 동안 선형으로 늘립니다(round robin 전용). weighted random에서는 ATW가 오류율이 튀는 대상의 트래픽을 자동으로 줄입니다.
Lambda targets
HTTP 요청을 JSON 이벤트로 바꿔 함수를 호출합니다. lambda 대상 그룹에는 함수 하나만 등록하고, 함수가 돌려주는 응답 JSON은 1 MB까지입니다.
HTTP/2 · gRPC
HTTPS 리스너 뒤 대상 그룹의 프로토콜 버전을 gRPC나 HTTP2로 두면 그대로 전달합니다. WebSocket 연결은 업그레이드를 수락한 대상에 계속 머뭅니다.
Target Optimizer를 켜면 대상에 설치한 에이전트가 대상별 최대 동시 요청 수를 강제합니다. 대상 그룹을 만들 때만 켤 수 있고, 켜면 알고리즘은 round robin만 쓰며 고정 세션은 지원하지 않습니다.
Network Load Balancer · L4
NLB는 TCP · UDP 흐름을 flow hash로 한 대상에 고정하고, 가용 영역마다 고정 IP를 가집니다. TLS 리스너가 아니면 페이로드를 열지 않고 넘기며, 초당 수백만 건의 요청을 처리하도록 확장됩니다.
dns_record.client_routing_policy로 같은 영역 선호도를 100 · 85 · 0%로 정합니다.NLB당 대상 (교차 영역 분산을 켜면 500)
NLB당 가용 영역별 대상 (조정 가능)
TCP 유휴 제한 시간 기본값
NLB당 리스너
NLB · Features
Protocols · QUIC
QUIC · TCP_QUIC 리스너는 QUIC v1 트래픽을 복호화 없이 대상에 넘깁니다. Connection ID의 Server ID로 대상을 고정해 모바일 클라이언트의 연결 이전을 유지합니다.
Static IP
NLB 노드는 가용 영역마다 고정 IP를 가집니다. 인터넷 연결 NLB는 서브넷마다 Elastic IP 하나를 붙일 수 있어, 클라이언트 쪽 허용 목록을 고정할 수 있습니다.
Source IP
기본값은 instance 대상 켜짐, ip 대상의 TCP · TLS 꺼짐입니다. UDP · TCP_UDP · QUIC · TCP_QUIC는 끌 수 없습니다. Transit Gateway를 거치는 대상에는 쓸 수 없으니 Proxy Protocol v2로 IP를 전달합니다.
PrivateLink
NLB를 VPC endpoint service로 등록하면 소비자 VPC의 인터페이스 엔드포인트가 NLB로 들어옵니다. PrivateLink 트래픽에 보안 그룹 인바운드 규칙을 적용할지 고를 수 있습니다.
Security groups
생성할 때 보안 그룹을 연결해야 이후에도 바꿀 수 있습니다. 대상 보안 그룹에서 NLB 보안 그룹을 출처로 참조하면 데이터와 헬스 체크를 함께 허용합니다.
TLS · ALPN
TLS 리스너가 ACM 인증서와 보안 정책으로 TLS를 종료합니다. ALPN 정책은 HTTP1Only, HTTP2Only, HTTP2Optional, HTTP2Preferred, None 중에서 고릅니다.
Weighted TG
NLB 리스너 하나가 여러 대상 그룹에 0~999 가중치로 트래픽을 나눕니다. instance · ip · alb 대상 그룹 모두 쓸 수 있어 블루/그린, 카나리 배포에 맞습니다.
Zonal shift · DNS failover
ARC zonal shift로 한 가용 영역을 트래픽에서 뺍니다. 영역 헬스 체크에 실패하면 그 영역의 DNS 레코드가 빠지고, ZonalHealthStatus 지표로 확인합니다.
ALB as target
alb 대상 그룹에 ALB 하나를 등록해 ALB 앞에 고정 IP와 PrivateLink를 둡니다. 할당량 계산에서 ALB 하나는 대상 50개(교차 영역 분산 시 100개)로 셉니다.
듀얼 스택 NLB에서는 기본 규칙 외에 리스너 규칙을 추가해 출발지 IP 주소 유형(IPv4 · IPv6)에 따라 다른 대상 그룹으로 보낼 수 있습니다. 규칙마다 forward 액션 하나가 있어야 합니다.
Gateway Load Balancer · L3
GWLB는 모든 포트의 IP 패킷을 받아 GENEVE로 감싸 방화벽, IDS/IPS, DPI 같은 가상 어플라이언스 플릿에 나눕니다. 하나의 진입점이자 출구인 투명 게이트웨이로 동작하고, 어플라이언스 수를 수요에 맞춰 늘리고 줄입니다.
GENEVE 대상 그룹 프로토콜 · 포트
8,500 bytes 패킷을 받기 위한 어플라이언스 MTU
GWLB당 대상 (조정 불가)
GWLB당 리스너
GWLB · Features
GENEVE
GENEVE 헤더는 Option Class 0x0108의 TLV에 흐름 정보를 담고, 어플라이언스는 이를 풀어 원래 패킷을 처리합니다. 듀얼 스택에서도 IPv4 GENEVE 헤더를 씁니다.
MTU
GWLB 인터페이스는 8,500 bytes까지 받고 더 큰 패킷은 버립니다. IP 단편화를 지원하지 않고 "fragmentation needed" ICMP도 만들지 않아 PMTUD가 동작하지 않습니다.
GWLB endpoint
라우팅 테이블의 다음 홉이 되는 VPC 엔드포인트입니다. PrivateLink로 공급자 VPC의 어플라이언스와 소비자 VPC를 연결해, 검사 플릿을 여러 VPC · 계정이 함께 씁니다.
Flow stickiness
기본은 5-tuple이고, source_ip_dest_ip_proto(3-tuple)나 source_ip_dest_ip(2-tuple)로 바꿀 수 있습니다. 3 · 2-tuple에서는 유휴 제한 시간을 바꿀 수 없습니다.
Target failover
target_failover를 rebalance로 두면 대상이 비정상이 되거나 등록 취소될 때 기존 흐름도 다른 대상으로 옮깁니다. 기본값은 no_rebalance이고 두 속성은 같은 값이어야 합니다.
Idle timeout
TCP 흐름은 기본 350초(60~6,000초)이고 UDP는 120초 고정입니다. 350초보다 늘리면 대상 ENI의 연결 추적 제한 시간도 그 이상으로 맞춥니다.
TGW appliance mode
보안 VPC 어태치먼트에 appliance mode를 켜면 TGW가 흐름 해시로 한 ENI를 골라 왕복 트래픽을 같은 가용 영역으로 보냅니다. 보안 VPC에는 TGW를 하나만 연결합니다.
Route design
스포크 VPC는 TGW로 기본 경로를 보내고, TGW는 보안 VPC 어태치먼트로 보냅니다. 보안 VPC의 TGW 어태치먼트 서브넷은 GWLB endpoint로, 엔드포인트 서브넷은 다시 TGW로 향합니다.
Partners
ELB 파트너로 등록된 벤더는 어플라이언스를 GWLB와 통합 · 검증했습니다. 다만 어플라이언스 소프트웨어를 고르고 검증할 책임은 사용자에게 있습니다.
GWLB는 첫 패킷을 처리한 흐름의 응답이 GWLB를 거치지 않는 비대칭 흐름은 허용하지만 권장하지 않습니다. 첫 패킷을 보지 못한 흐름의 응답만 GWLB로 오는 경우는 지원하지 않습니다.
Reference architecture · ALB
CloudFront와 AWS WAF를 거친 요청을 두 AZ에 걸친 internet-facing ALB가 ACM 인증서로 받습니다. 리스너 규칙이 host · path 조건으로 ECS Fargate, EC2, Lambda 대상 그룹에 나누고, 필요하면 Cognito · OIDC로 먼저 인증합니다.
좁은 화면에서는 다이어그램을 좌우로 밀어서 보세요.
Reference architecture · NLB
internet-facing NLB는 AZ마다 Elastic IP를 하나씩 붙여, 온프레미스 방화벽이 고정 IP로 허용 목록을 만들 수 있습니다. 대상은 EC2 인스턴스, IP, ALB 중에서 고르고, 다른 계정에는 internal NLB를 엔드포인트 서비스로 만들어 PrivateLink로 제공합니다.
좁은 화면에서는 다이어그램을 좌우로 밀어서 보세요.
Reference architecture · GWLB
보안 VPC의 GWLB를 엔드포인트 서비스로 두고, 각 VPC의 GWLB endpoint를 라우팅 다음 홉으로 씁니다. 인바운드는 IGW 수신 라우팅이, 스포크 VPC의 아웃바운드는 Transit Gateway가 엔드포인트로 보내고, 어플라이언스를 다녀온 트래픽만 목적지로 갑니다.
좁은 화면에서는 다이어그램을 좌우로 밀어서 보세요.
Getting started
세 유형 모두 같은 순서로 만듭니다. 차이는 리스너 프로토콜과 대상 유형, 그리고 GWLB의 경우 엔드포인트와 라우팅 테이블입니다.
비교표로 유형을 정하고, 가용 영역마다 서브넷을 하나씩 고릅니다. 인터넷 연결 여부와 IP 주소 유형(IPv4 · 듀얼 스택)도 이때 정합니다.
ALB와 NLB에 보안 그룹을 연결합니다. NLB는 생성할 때 연결해야 나중에 바꿀 수 있습니다. GWLB는 어플라이언스 보안 그룹에서 GENEVE 6081을 허용합니다.
대상 유형과 프로토콜을 정하고 대상을 등록합니다. 헬스 체크 경로, 등록 취소 지연, 고정 세션 같은 속성을 맞춥니다.
ALB · NLB는 리스너와 인증서, 규칙을 만듭니다. GWLB는 엔드포인트 서비스와 GWLB endpoint를 만들고 라우팅 테이블에 다음 홉으로 넣습니다.
Route 53 alias 레코드로 도메인을 연결하고, CloudWatch 지표와 액세스 로그로 대상 상태와 용량 단위 사용량을 확인합니다.
Pricing
세 유형 모두 로드 밸런서 실행 시간과 용량 단위(LCU · NLCU · GLCU) 사용량으로 과금됩니다. 용량 단위는 시간마다 여러 측정 항목 중 사용량이 가장 큰 항목 하나로 계산합니다.
| 과금 항목 | 용량 단위 1개의 기준 | 참고 |
|---|---|---|
| 로드 밸런서 시간 | ALB · NLB · GWLB가 실행된 시간 (1시간 미만도 1시간) | 유형별 단가가 다릅니다 |
| ALB LCU | 새 연결 25/초 · 활성 연결 3,000/분 · 처리 1 GB/시간 · 규칙 평가 1,000/초 | 처리한 규칙 중 처음 10개는 무료. mTLS는 활성 연결 1,500/분, Lambda 대상은 0.4 GB/시간 기준 |
| NLB NLCU | TCP 새 연결 800/초 · 활성 100,000/분 UDP 새 흐름 400/초 · 활성 50,000/분 TLS 새 연결 50/초 · 활성 3,000/분 | 처리 바이트는 세 프로토콜 모두 1 GB/시간 |
| GWLB GLCU | 새 연결 · 흐름 600/초 · 활성 60,000/분 · 처리 1 GB/시간 | GWLB endpoint는 엔드포인트 시간과 처리 GB로 AWS PrivateLink 요금에서 청구됩니다 |
| 용량 예약 | 예약한 용량 단위-시간 | Load Balancer Capacity Unit Reservation 사용 시. 예약을 넘는 사용량은 따로 과금됩니다 |
| 관련 요금 | 다른 서비스에서 청구 | 데이터 전송(Amazon EC2 요금), 로드 밸런서가 쓰는 퍼블릭 IPv4 주소(Amazon VPC 요금) |
요금 단가는 리전과 사용량에 따라 다릅니다. 최신 단가는 Elastic Load Balancing 요금 페이지에서 확인하세요.
Next step
프로토콜, 고정 IP 필요 여부, 인증 방식, 검사 요구 사항을 정리해 오시면 ALB · NLB · GWLB 배치를 함께 검토합니다.