[SW Architect] 로드 밸런서(Load Balancer)

mandu·2025년 9월 20일

[SW Architect]

목록 보기
10/10

1. 로드밸런서 정의

  • Load Balancer(로드밸런서): 들어오는 트래픽(요청)을 여러 서버 또는 리소스로 효율적으로 분산해 성능과 가용성을 확보하기 위한 하드웨어 장치 또는 소프트웨어
  • 목적: 부하 분산, 성능 향상, 서비스 안정성 확보

즉, “하나의 서버로 모든 요청이 몰리는 문제를 방지하고, 여러 서버가 효율적으로 요청을 처리하도록 관리하는 장치”


2. 필요한 이유

  1. 고가용성 확보

    • 단일 서버 과부하 방지
    • 서버 일부 장애 시 나머지 서버가 요청 처리
  2. 성능 향상

    • 요청을 여러 서버로 분산 → 응답 시간 단축
  3. 유연한 스케일 아웃(수평 확장) 지원

    • 기본적인 스케일 아웃 및 Auto-scaling과 연계하여 서버 수에 맞게 트래픽 조정 가능

Auto-scaling
필요할 때마다 시스템을 동적으로 확장하고 축소할 수 있는 기능
→ 자원을 더욱 경제적이고 탄력적으로 이용
대부분의 클라우드 서비스 업체의 경우 지원


3. 구현 방식

  • 하드웨어 로드밸런서: L4, L7 스위치 등 네트워크 장비 기반

  • 소프트웨어 로드밸런서: 일반 호스트에서도 소프트웨어를 통해 구현 가능

    • 예: Nginx, HAProxy, LVS, AWS ELB
  • 장점: 유연성, 비용 효율, 클라우드 환경과 연동 용이


4. 로드밸런싱 알고리즘

알고리즘특징
Round Robin요청을 순차적으로 서버에 배분
Least Connections연결 수가 가장 적은 서버에 배분
IP Hash클라이언트 IP 기반 → 동일 클라이언트 동일 서버 연결
Weighted Round Robin서버별 가중치 적용 → 성능 좋은 서버에 더 많은 요청 배분
Weighted Least Connections연결 수 + 서버 가중치 고려
  • 가중치(Weight)를 부여하면 서버 성능에 따라 트래픽 비율 조절 가능
  • Auto-scaling과 연동하면 서버 추가/제거에 따라 동적으로 트래픽 분산 가능

5. NginX 사용해보기

  • NginX: 웹 서버 프로그램
  • 포워드 프록시나 리버스 프록스 지원
  • 콘텐츠 캐싱, 보안을 위한 접근 제안, 로드 밸런싱, 리다이렉션 기능 수행 가능

포워드 프록시와 리버스 프록시
프록시 서버: 클라이언트와 서버 사이에서 중계 역할을 하는 서버

구분역할위치목적
Forward Proxy클라이언트 대신 요청클라이언트 측내부 사용자 보호, 접근 제어, 캐싱
Reverse Proxy서버 대신 응답 처리서버 측로드밸런싱, 보안 강화, SSL 종료, 캐싱
http {
    upstream backend {
        server 10.10.10.2:80 weight=3;
        server 10.10.10.3:80 weight=2;
        server 10.10.10.4:80 weight=1;
    }

    server { # 웹 서버 관련 설정
        listen 80; # 80번 포트를 LISTEN 대기 상태로
		server_name localhost; # 서버 이름을 localhost로 삼겠다
        location / {  # 특정 경로 (/)에 대한 설정
            proxy_pass http://backend;
            proxy_set_header Host $host; # 원래 요청한 호스트 이름을 유지
            proxy_set_header X-Real-IP $remote_addr; # 클라이언트의 실제 IP 주소를 내부 서버에 전달
        }
    }
}
  • weight: 서버별 트래픽 비율 지정 (기본값 1, 생략 가능)

    • backend1: 3/6 → 50%
    • backend2: 2/6 → 33%
    • backend3: 1/6 → 17%
  • Auto-scaling과 연계 시, upstream에 서버 추가/제거 후 reload 하면 트래픽 자동 분배

업스트림과 다운스트림
오리진 서버를 최상위에 위치한 서버라고 가정했을 때,

용어의미방향
업스트림(Upstream)데이터나 요청을 클라이언트에서 상위 서버로 보내는 방향클라이언트 → 서버 또는 서버 간 상위 계층
다운스트림(Downstream)데이터나 요청을 상위 서버에서 클라이언트로 데이터를 보내는 방향서버 → 클라이언트 또는 하위 계층
  • 헷갈리면 업로드와 다운로드를 생각
profile
만두는 목말라

0개의 댓글