Gateway Load Balancer(GWLB)

도은호·2025년 10월 7일

AWS SAA

목록 보기
17/53

GWLB = “투명 게이트웨이 + L3/L4 로드밸런서”를 합친 서비스. GENEVE(UDP/6081) 캡슐화를 써서 가상 어플라이언스(방화벽/IDS/IPS/DPI 등) 로 트래픽을 인라인(핑거 인 더 와이어)으로 보냈다가 다시 돌려보내며, Gateway Load Balancer Endpoint(GWLBE) 로 VPC 간/계정 간에도 쉽게 삽입할 수 있음 (AWS Documentation)


1) 핵심 개념

  • 무엇을 하나요?
    GWLB는 모든 포트의 IP 패킷(L3) 을 받아 타깃 어플라이언스로 분산하고, 트래픽 수요에 맞춰 수평 확장합니다. 어플라이언스와는 GENEVE(UDP 6081) 로 트래픽을 캡슐화/복호화해 주고받음 (AWS Documentation)

  • GWLBE(= Gateway Load Balancer Endpoint)
    PrivateLink 기반 VPC Endpoint 타입으로, 소비자 VPC의 라우트 테이블에서 다음 홉을 GWLBE로 지정하면 트래픽이 제공자 VPC의 GWLB를 거쳐 어플라이언스로 전달됩니다(크로스 VPC/계정 아키텍처). (AWS Documentation)

  • 대표 유즈케이스
    North–South 인입/이그레스 검사, East–West VPC 간 트래픽 검사, 서드파티 방화벽/IDS/IPS/DLP/DPI 인라인 삽입 등. (AWS Documentation)


2) 구성 요소 & 동작

  • Listener/Target Group(프로토콜: GENEVE, 포트 6081)
    GWLB는 GENEVE로 원 패킷을 캡슐화해 Target(어플라이언스)로 보냄. TLV 필드에 메타데이터를 실어 전달(어플라이언스가 파싱). (AWS Documentation)

  • Health Check
    Target Group 기본 Health Check = TCP(프로토콜/파라미터 제약 존재). 어플라이언스의 상태를 헬스체크 포트로 확인. (awslabs.github.io)

  • Flow Stickiness(연결 고정)
    기본은 5-tuple(SRC/DST IP, SRC/DST Port, L4 Protocol). 필요 시 3-tuple 또는 2-tuple로 변경 가능. 단, Idle timeout 커스텀은 5-tuple일 때만 가능(UDP는 120s 고정). (AWS Documentation)

  • Cross-Zone Load Balancing
    기본 비활성화(false). 활성화 시 모든 AZ의 Healthy 타깃으로 분산 가능(교차-AZ 과금 고려). (AWS Documentation)

  • MTU 주의
    GWLB 인터페이스 MTU는 최대 8,500바이트. 캡슐화 오버헤드 고려하여 어플라이언스 MTU를 조정하세요. (AWS Documentation)


3) 트래픽 경로(아키텍처)

(Consumer VPC)           (Provider VPC)
App Subnet ──route──▶ GWLBE ──PrivateLink──▶ GWLB ──GENEVE──▶ Appliances(EC2)
      ▲                                                     │
      └───────────────────────(Decap/Return)◀───────────────┘
  • Route Table: App Subnet의 특정 프리픽스(예: 0.0.0.0/0 혹은 검사 대상 CIDR)를 GWLBE로 라우팅
  • Provider VPC: GWLB + Target Group(방화벽/IPS/자체 어플라이언스)
  • 왕복: 어플라이언스가 다시 GWLB로 응답을 보내면 디캡슐화되어 원 경로로 복귀

Transit Gateway 연동(East–West 검사): Appliance Mode(대칭 라우팅 보장)를 활성화하세요. 비대칭 흐름은 상태풀 어플라이언스에서 문제를 유발(특히 5-tuple 권장). (AWS Documentation)


4) 배치 패턴

  • One-Arm / Two-Arm 방화벽
    요구사항(SSL/TLS 인스펙션, 이그레스/인그레스)과 네트워크 단순성 간 트레이드오프를 고려해 선택. AWS 베스트 프랙티스 문서에 패턴이 정리돼 있음. (Amazon Web Services, Inc.)

  • 다중 AZ
    각 AZ에 GWLBE를 만들고, 필요 시 GWLB Cross-Zone을 고려하여 AZ별 수용량 불균형을 완화하되 교차-AZ 과금을 감안. (Amazon Web Services, Inc.)


5) 운영 팁 & 모범 사례

  • Stickiness 선택 가이드

    • 상태풀(방화벽/Proxy): 일반적으로 5-tuple 유지(Idle Timeout도 조정 가능).
    • TGW Appliance Mode 사용: 5-tuple만 지원(2/3-tuple은 제약). (AWS Documentation)
  • Idle Timeout
    TCP 60–6000초로 조정 가능(기본 350초). 장수명 연결은 Keep-Alive 조정 권장. UDP는 120초 고정. (AWS Documentation)

  • 대칭 라우팅
    RT, TGW, GWLBE 배치를 AZ 대칭으로 하고, Appliance Mode유입/유출 경로 일치. (AWS Documentation)

  • 장애/스케일 시나리오
    Cross-Zone을 끄면 AZ 내 타깃만 사용, 켜면 모든 AZ Healthy 타깃으로 분산(과금 주의). 어플라이언스/AZ 장애 시 동작을 미리 테스트. (AWS Documentation)


6) 비용(개요)

  • GWLB 자체 비용: 시간 단위(각 AZ) + 데이터 처리(GB) 과금.
  • GWLBE 비용: Endpoint-hour + 데이터 처리(GB) 과금.
    (정확한 단가는 리전/시점별 상이 → 공식 가격 페이지 확인 권장) (Amazon Web Services, Inc.)

7) 언제 GWLB를 고를까? (선택 기준)

  • 서드파티 가상 어플라이언스인라인으로 스케일 아웃해야 한다.
  • VPC/계정 간투명 삽입이 필요(PrivateLink/GWLBE).
  • L3/L4 수준의 트래픽 검사가 필요하고, ALB/NLB로는 해결이 어렵다. (AWS Documentation)

8) 빠른 구축(요약 CLI)

# 1) Target Group (GENEVE/6081)
aws elbv2 create-target-group \
  --name tg-gwlb \
  --protocol GENEVE --port 6081 \
  --vpc-id vpc-xxxxxxxx \
  --target-type instance

# 2) GWLB 생성
aws elbv2 create-load-balancer \
  --name gwlb-inspection \
  --type gateway \
  --subnets subnet-azA subnet-azB

# 3) 리스너 연결
aws elbv2 create-listener \
  --load-balancer-arn arn:aws:elasticloadbalancing:...:loadbalancer/gateway/gwlb-inspection/... \
  --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:...:targetgroup/tg-gwlb/...

# 4) Endpoint Service(제공자 VPC)로 GWLB 게시
aws ec2 create-vpc-endpoint-service-configuration \
  --gateway-load-balancer-arns arn:aws:elasticloadbalancing:...:loadbalancer/gateway/gwlb-inspection/...

# 5) 소비자 VPC에서 GWLBE 생성 후, App Subnet 라우트의 Next Hop을 GWLBE로
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-consumer \
  --service-name com.amazonaws.vpce.<region>.vpce-svc-xxxx \
  --vpc-endpoint-type GatewayLoadBalancer \
  --subnet-ids subnet-app-azA subnet-app-azB

라우팅: 검사 대상 프리픽스(예: 0.0.0.0/0 또는 특정 CIDR)를 vpce-xxxx(GWLBE)로 가리키도록 Route Table을 수정.
보안: 어플라이언스 인스턴스는 UDP/6081(GENEVE) 수신 가능해야 함. (Amazon Web Services, Inc.)


9) 트러블슈팅 체크리스트

  • 세션 깨짐/비대칭: TGW Appliance Mode ON, 라우트 양방향 일치 확인. (AWS Documentation)
  • 성능 저하: Idle Timeout/Keep-Alive 조정, MTU 8500 고려, Cross-Zone 필요성 검토. (AWS Documentation)
  • 헬스 체크 실패: TCP Health Check 포트/SG/NACL 확인. (awslabs.github.io)

10) 시험/인터뷰 포인트

  • GENEVE(UDP 6081)어플라이언스와 트래픽 교환. (AWS Documentation)
  • GWLBE(PrivateLink)라우트 테이블 다음 홉 지정 → VPC/계정 간 삽입. (AWS Documentation)
  • Flow Stickiness: 5-tuple(기본)/3-tuple/2-tuple, Idle Timeout 커스텀=5-tuple만. (AWS Documentation)
  • Cross-Zone LB: 기본 Off, 필요 시 On(과금 주의). (AWS Documentation)
  • TGW 연동 시 Appliance Mode(대칭 라우팅 보장). (AWS Documentation)

요약

  • GWLB인라인 보안/네트워크 어플라이언스쉽게 스케일시키는 L3 게이트웨이형 로드밸런서.
  • GWLBE(PrivateLink) 를 통해 VPC/계정 경계를 깔끔하게 넘나듭니다.
  • 5-tuple Stickiness + Appliance Mode대칭 흐름을 유지하고, 필요 시 Cross-Zone으로 AZ 불균형을 완화하세요. (AWS Documentation)
profile
`•.¸¸.•´´¯`••._.• 🎀 𝒸𝓇𝒶𝓏𝓎 𝓅𝓈𝓎𝒸𝒽💞𝓅𝒶𝓉𝒽 🎀 •._.••`¯´´•.¸¸.•`

0개의 댓글