개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

ELB — 로드 밸런서 (ALB / NLB)

2026년 3월 5일
AWSELBALB로드밸런서

AWS ELB(Elastic Load Balancing)는 들어오는 트래픽을 여러 대상(EC2, Lambda, 컨테이너 등)에 자동으로 분산하는 관리형 로드 밸런서 서비스입니다. 단일 서버에 트래픽이 몰리는 것을 방지하고, 가용 영역을 넘나드는 트래픽 분산으로 고가용성을 확보합니다. 대상의 상태를 주기적으로 점검하여 정상 인스턴스에만 트래픽을 전달합니다.

ELB는 ALB, NLB, CLB(레거시), GWLB 네 종류를 제공합니다. 현재 실무에서는 ALB와 NLB가 주로 사용됩니다.

ALB (Application Load Balancer)

ALB는 OSI 7계층(애플리케이션 계층)에서 동작하는 로드 밸런서입니다. HTTP/HTTPS 트래픽을 처리하며, URL 경로, 호스트 헤더, 쿼리 파라미터 등의 요청 내용을 보고 트래픽을 분기할 수 있습니다.

클라이언트 요청
      |
    [ALB]
      |
      |-- /api/*       --> Target Group A (API 서버)
      |-- /images/*    --> Target Group B (이미지 서버)
      |-- /admin/*     --> Target Group C (관리 서버)

웹 애플리케이션, REST API, 마이크로서비스 라우팅에 적합합니다. WebSocket과 HTTP/2도 지원합니다. ECS(컨테이너)와 통합이 매끄러워 컨테이너 기반 아키텍처에서 자주 사용됩니다.

NLB (Network Load Balancer)

NLB는 OSI 4계층(전송 계층)에서 동작하는 로드 밸런서입니다. TCP, UDP, TLS 트래픽을 처리하며, 요청 내용을 분석하지 않고 커넥션 레벨에서 초저지연으로 분산합니다.

클라이언트 TCP 연결
      |
    [NLB]  <-- 고정 IP 주소 제공
      |
      +----------+----------+
      |          |          |
   Target 1   Target 2   Target 3

초당 수백만 건의 요청을 밀리초 이하의 지연으로 처리할 수 있으며, 고정 IP 주소를 제공합니다. 게임 서버, IoT 데이터 수집, 금융 시스템 등 극저지연이 요구되는 서비스에 적합합니다.

ALB vs NLB 비교

항목ALBNLB
동작 계층7계층 (HTTP/HTTPS)4계층 (TCP/UDP/TLS)
라우팅 기준URL, 헤더, 쿼리 파라미터IP, 포트
성능초당 수만 건초당 수백만 건
고정 IP미제공 (DNS만)제공
WebSocket지원지원
주요 용도웹 앱, API저지연, 고성능

Listener

Listener는 로드 밸런서가 특정 프로토콜과 포트에서 클라이언트 요청을 기다리는 프로세스입니다. Listener에는 수신 조건과 대상 Target Group을 지정하는 Rule이 등록됩니다.

ALB Listener: HTTPS:443
  Rule 1: Host = api.example.com  --> Target Group A
  Rule 2: Path = /static/*        --> Target Group B
  Rule 3: (기본)                  --> Target Group C

ALB는 하나의 Listener에 여러 Rule을 우선순위 순으로 평가하여 일치하는 Target Group으로 요청을 전달합니다.

Target Group

Target Group은 로드 밸런서가 트래픽을 보낼 대상의 집합입니다. EC2 인스턴스, Lambda 함수, IP 주소를 대상으로 등록할 수 있습니다.

Target Group 단위로 Health Check 설정이 적용됩니다. 하나의 Target Group에 여러 가용 영역의 인스턴스를 등록하면 AZ 간 트래픽 분산이 이루어집니다.

Health Check

Health Check는 Target Group 내 각 대상의 정상 여부를 주기적으로 확인합니다. 지정한 경로(예: /health)로 요청을 보내 응답 코드가 200~299 범위이면 정상으로 판단합니다.

ALB --GET /health--> EC2 인스턴스
        |-- 200 OK       --> 정상, 트래픽 전달
        |-- 타임아웃/5xx --> 비정상, 트래픽 제외

비정상 인스턴스는 트래픽 대상에서 자동으로 제외되며, 정상으로 돌아오면 다시 트래픽을 받습니다. Auto Scaling Group과 결합하면 비정상 인스턴스를 종료하고 새 인스턴스를 자동으로 추가하는 자가 복구(Self-healing) 구조를 만들 수 있습니다.

← 이전 글RDS — 관리형 관계형 데이터베이스
다음 글 →Auto Scaling — 트래픽에 따라 서버 자동 조절