System DesignNginx시뮬레이션

Load Balancing 완벽 이해

로드 밸런싱 알고리즘, Health Check, Failover를 직접 체험합니다.

왜 알아야 하나요?

서버 1대로 버티기 힘들어요!

"이벤트 때 트래픽이 10배로 늘었는데, 서버가 죽었어요..."

서버를 늘리면?

서버 3대로 늘렸는데, 어떻게 트래픽을 나눌까요?

로드 밸런서가 해결!

트래픽을 여러 서버에 분산하고, 장애 시 자동으로 다른 서버로 전환합니다.

한눈에 보기

Client
Load Balancer
트래픽 분산
Server 1
Server 2
Server 3

요청을 여러 서버에 분산하여 부하를 나누고 가용성을 높입니다.

핵심 알고리즘

Round Robin

서버를 순서대로 돌아가며 선택

예: 1 → 2 → 3 → 1 → 2 → 3 ...

장점: 단순, 균등 분배

단점: 서버 성능 차이 무시

Weighted Round Robin

가중치(성능)에 따라 분배량 조절

예: 서버1(3) : 서버2(2) : 서버3(1)

고성능 서버에 더 많은 요청 할당

Least Connections

현재 연결이 가장 적은 서버 선택

실시간 부하를 고려한 동적 분배

장점: 실제 부하 기반

단점: 연결 추적 오버헤드

IP Hash (Sticky Session)

같은 클라이언트는 항상 같은 서버

세션 유지가 필요한 경우 사용

예: 로그인 세션, 장바구니

Health Check & Failover

Health Check

주기적으로 서버 상태를 확인합니다.

  • - HTTP 요청으로 /health 엔드포인트 확인
  • - 연속 N번 실패 시 서버 제외
  • - 복구 시 자동으로 다시 포함

Failover

장애 서버를 자동으로 제외합니다.

  • - 장애 감지 → 라우팅 제외
  • - 다른 정상 서버로 자동 전환
  • - 서비스 중단 없이 운영

Nginx 설정 예시

upstream backend {
    # Weighted Round Robin
    server 192.168.1.1:8080 weight=3;  # 고성능
    server 192.168.1.2:8080 weight=2;  # 중간
    server 192.168.1.3:8080 weight=1;  # 저성능

    # Least Connections
    # least_conn;

    # IP Hash (Sticky Session)
    # ip_hash;

    # Health Check
    server 192.168.1.1:8080 max_fails=3 fail_timeout=30s;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

직접 체험하기

각 알고리즘의 분배 결과를 비교하고, 장애 상황에서 Failover를 관찰하세요.

Load Balancer 실습

로드 밸런서는 여러 서버에 요청을 분산합니다. 각 알고리즘마다 분산 방식이 달라요.

서버 상태

더 알아보기

L4 vs L7 로드밸런서

  • L4: TCP/UDP 레벨 (빠름)
  • L7: HTTP 레벨 (URL 기반 라우팅)
  • - AWS ALB: L7
  • - AWS NLB: L4

관련 도구

  • - Nginx, HAProxy (오픈소스)
  • - AWS ELB/ALB/NLB
  • - Kubernetes Ingress
  • - Envoy Proxy