inblog logo
|
DailyCoding
    Docker

    7. 로드 밸런서 (Load Balancer)

    박은서's avatar
    박은서
    May 01, 2026
    7. 로드 밸런서 (Load Balancer)
    Contents
    도커 로드밸런서 (Docker Load Balancer) 노트 정리1️⃣ 로드밸런서란 무엇인가2️⃣ 도커에서 로드밸런싱이 필요한 이유3️⃣ 전체 구조 (핵심 흐름)4️⃣ 대표적인 방식 (중요)5️⃣ Docker + Nginx 로드밸런서 구성 개념6️⃣ Docker Compose에서의 구성7️⃣ 장점 vs 한계8️⃣ 중요한 실무 포인트 (이건 반드시 이해)9️⃣ 한 줄 핵심 정리🔥 주의할 점

    도커 로드밸런서 (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
    Contents
    도커 로드밸런서 (Docker Load Balancer) 노트 정리1️⃣ 로드밸런서란 무엇인가2️⃣ 도커에서 로드밸런싱이 필요한 이유3️⃣ 전체 구조 (핵심 흐름)4️⃣ 대표적인 방식 (중요)5️⃣ Docker + Nginx 로드밸런서 구성 개념6️⃣ Docker Compose에서의 구성7️⃣ 장점 vs 한계8️⃣ 중요한 실무 포인트 (이건 반드시 이해)9️⃣ 한 줄 핵심 정리🔥 주의할 점

    DailyCoding

    RSS·Powered by Inblog