Programming

[AWS, Certified Developer Associate] Load Balancer

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

Udemy - AWS Certified Developer Associate 시험 합격을 위한 모든 것!