7. 로드 밸런서 (Load Balancer)

박은서's avatar
May 01, 2026
7. 로드 밸런서 (Load Balancer)

도커 로드밸런서 (Docker Load Balancer) 노트 정리


1️⃣ 로드밸런서란 무엇인가

notion image

1) 개념

  • 여러 서버에 들어오는 요청을 나눠주는 역할
  • 한 서버에만 요청이 몰리는 것을 방지

2) 왜 필요한가

  • 트래픽 증가 시 서버 하나로는 감당 불가
  • 장애 발생 시 서비스 중단 방지
  • 응답 속도 개선 (분산 처리)

2️⃣ 도커에서 로드밸런싱이 필요한 이유

1) 컨테이너 특성

  • 도커는 같은 앱을 여러 개 띄우기 쉬움
  • 예: app 컨테이너 3개

2) 문제 상황

  • 클라이언트 → 어느 컨테이너로 갈지 모름
  • 특정 컨테이너에만 요청이 몰릴 수 있음
➡️ 그래서 중간에 로드밸런서가 필요

3️⃣ 전체 구조 (핵심 흐름)

notion image

1) 흐름

사용자 요청 ↓ 로드밸런서 (Nginx 등) ↓ 여러 개의 컨테이너 (app1, app2, app3)

2) 역할 분리

구성
역할
클라이언트
요청 보내는 사용자
로드밸런서
요청 분배
컨테이너들
실제 처리

4️⃣ 대표적인 방식 (중요)

1) Reverse Proxy 방식 (가장 많이 사용)

  • 로드밸런서가 모든 요청을 대신 받음
  • 내부 서버로 전달
  • 대표 도구
    • Nginx
    • HAProxy
➡️ 실무에서 거의 이 구조

2) Round Robin 방식

  • 요청을 순서대로 분배
요청1 → app1 요청2 → app2 요청3 → app3 요청4 → app1
➡️ 가장 단순한 알고리즘

3) 기타 방식 (참고)

  • Least Connections (연결 적은 서버로)
  • IP Hash (같은 사용자 → 같은 서버)

5️⃣ Docker + Nginx 로드밸런서 구성 개념

1) 핵심 아이디어

  • Nginx도 컨테이너로 띄운다
  • 내부 네트워크로 app 컨테이너 연결

2) 구조

[nginx container] ← 외부 접속 (포트 80) ↓ [app container 1] [app container 2] [app container 3]

3) 핵심 설정 (개념 수준)

upstream backend { server app1:8080; server app2:8080; server app3:8080; } server { location / { proxy_pass http://backend; } }
➡️ upstream이 로드밸런싱 대상

6️⃣ Docker Compose에서의 구성

1) 핵심 포인트

  • 같은 네트워크에 묶으면
  • 컨테이너 이름으로 통신 가능

2) 예시 구조

services: nginx: image: nginx ports: - "80:80" app1: build: . app2: build: . app3: build: .
➡️ nginx → app1/app2/app3로 분배

7️⃣ 장점 vs 한계

장점

  • 확장 쉬움 (컨테이너만 추가)
  • 장애 대응 가능
  • 트래픽 분산

한계

  • 설정 복잡 (초반 진입장벽 있음)
  • 상태 관리 어려움 (세션 문제)

8️⃣ 중요한 실무 포인트 (이건 반드시 이해)

1) Stateless 설계 필요

  • 서버마다 상태가 다르면 문제 발생
  • 해결:
    • DB 사용
    • Redis 세션 저장

2) Health Check

  • 죽은 컨테이너로 요청 보내면 안됨
  • Nginx / HAProxy에서 체크 가능

3) 스케일링

  • 컨테이너 개수 늘리면 자동 확장 효과

9️⃣ 한 줄 핵심 정리

도커 로드밸런서는
여러 컨테이너로 요청을 분산시켜 안정성과 성능을 확보하는 구조다.

🔥 주의할 점

❌ “도커만 쓰면 자동으로 로드밸런싱 된다”

➡️ 직접 Nginx 같은 걸 붙여야 한다

❌ “컨테이너 여러 개 띄우면 끝”

➡️ 트래픽 분배 없으면 의미 없음

❌ “로컬에서만 해보면 된다”

→ 위험한 생각
➡️ 실제는 네트워크, 세션, 장애 대응 → 이게 핵심
Share article