로드 밸런싱(Load Balancing)

Kkd·2025년 1월 17일

AWS

목록 보기
5/11

로드 밸런싱이란?

로드 밸런싱(Load Balancing)은 여러 서버(또는 노드)에 트래픽(또는 작업 부하)을 고르게 분산하여 서버 과부하를 방지하고 서비스 가용성과 성능을 향상시키는 기술입니다. 클라이언트 요청이 급증하더라도 특정 서버에 부하가 집중되지 않도록 하여 신뢰성과 확장성을 확보할 수 있습니다.


로드 밸런싱의 주요 목적

  1. 성능 향상
    - 여러 서버에 작업을 고르게 분산하여 각 서버의 처리 부담을 완화하고 전체 응답 속도를 개선.

  2. 고가용성(HA, High Availability)
    - 특정 서버에 장애가 발생하더라도, 트래픽을 자동으로 다른 서버로 분산하여 서비스 중단 시간을 최소화.

  3. 확장성(Scalability)
    - 트래픽이 증가하면 서버를 추가하여 쉽게 확장 가능. 로드 밸런서는 자동으로 새로운 서버로 트래픽을 분산.

  4. 유연성
    - 특정 서버(또는 노드)를 점검하거나 업데이트할 때, 트래픽을 다른 서버로 우회함으로써 무중단 배포가 가능.


로드 밸런싱 동작 원리

  1. 클라이언트 요청
    - 사용자가 웹사이트나 API에 접속하려고 할 때, DNS 혹은 로드 밸런서의 IP로 요청을 보냄.

  2. 로드 밸런서 확인
    - 로드 밸런서는 현재 어떤 서버가 가용한지, 어떤 서버가 과부하 상태인지 확인.

  3. 서버 선택 및 요청 전달
    - 로드 밸런서는 특정 알고리즘(예: 라운드 로빈, 가중치 기반 등)을 사용해 서버를 선택한 뒤, 클라이언트의 요청을 해당 서버로 전달.

  4. 서버 응답
    - 선택된 서버는 요청을 처리하고, 결과를 로드 밸런서를 통해 클라이언트에게 반환.


로드 밸런싱 알고리즘

  1. Round Robin (라운드 로빈)
    - 트래픽을 순차적으로 각 서버에 분산.
    - 예: Server1 → Server2 → Server3 → Server1 → …

  2. Weighted Round Robin
    - 각 서버에 가중치(Weight)를 부여하여, 고성능 서버에 더 많은 트래픽을 분산.

  3. Least Connections
    - 현재 접속 중인 세션(연결 수)이 가장 적은 서버로 트래픽을 보냄.

  4. IP Hash
    - 클라이언트 IP를 해시하여 특정 서버로 라우팅. 같은 클라이언트 IP는 항상 동일한 서버로 연결될 가능성이 높음.

  5. Least Response Time / CPU 사용량 기반
    - 서버의 실시간 상태(응답 시간, CPU 사용량 등)에 따라 트래픽 분산.


로드 밸런서 유형

  1. 하드웨어 로드 밸런서
    - F5, Citrix NetScaler와 같은 전문 네트워크 장비. 성능이 뛰어나지만 비용이 높음.

  2. 소프트웨어 로드 밸런서
    - Nginx, HAProxy, Envoy 등. 일반 서버나 클라우드 환경에서 실행 가능하며, 설정이 유연.

  3. 클라우드 로드 밸런서
    - AWS ELB, GCP Load Balancing, Azure Load Balancer 등. 클라우드에서 제공하는 매니지드 로드 밸런싱 서비스.


로드 밸런싱 방식

  1. L4 (Layer 4) 로드 밸런싱
    - OSI 7계층 중 전송 계층(TCP/UDP) 기반으로 패킷을 라우팅.
    - IP, 포트 정보만 확인하고 트래픽 분산.

  2. L7 (Layer 7) 로드 밸런싱
    - 애플리케이션 계층에서 동작. HTTP 헤더, 쿠키, URL 경로 등을 분석해 더 세밀한 라우팅 가능.
    - 예: /images 요청은 이미지 서버로, /videos 요청은 동영상 서버로 분산.


로드 밸런싱 구성 예시

1. Nginx로 소프트웨어 로드 밸런싱

http {
    upstream backend_servers {
        server backend1.example.com weight=3;
        server backend2.example.com weight=2;
        server backend3.example.com weight=1;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend_servers;
        }
    }
}

- upstream 블록에서 서버 목록과 가중치를 설정.
- proxy_pass로 클라이언트 요청을 여러 서버로 분산.

2. AWS ELB (Elastic Load Balancer)

- ALB(Application Load Balancer), NLB(Network Load Balancer) 중 선택.
- ALB는 L7 레벨에서 HTTP 헤더 분석 가능.
- NLB는 L4 레벨에서 TCP/UDP 트래픽 분산.


로드 밸런싱 장점과 단점

장점

  1. 성능 개선
    - 트래픽을 여러 서버에 분산해 빠른 응답 가능.
  2. 고가용성
    - 서버 중 일부가 장애를 일으켜도 나머지 서버가 요청을 처리.
  3. 수평 확장성
    - 트래픽 증가 시 서버를 추가해 확장 용이.

단점

  1. 추가 인프라 비용
    - 로드 밸런서 자체 구축 및 운영 비용 발생.
  2. 설정 복잡성
    - 알고리즘, 보안, SSL 인증서, 캐시 정책 등 고려해야 할 설정이 많음.
  3. 싱글 포인트 장애(SPoF)
    - 로드 밸런서 장애 시 전체 서비스에 영향을 줄 수 있으므로 이중화가 필요.

로드 밸런싱 모범 사례

  1. 헬스 체크(Health Check)
    - 서버의 상태를 주기적으로 확인하여 장애 서버를 자동으로 트래픽 대상에서 제외.

  2. 이중화 구성
    - 로드 밸런서가 단일 장애 지점이 되지 않도록 액티브-액티브나 액티브-스탠바이로 이중화.

  3. 보안 설정
    - SSL/TLS 종료, 방화벽, WAF(Web Application Firewall) 연동 등을 고려.

  4. 모니터링
    - 서버 CPU, 메모리, 네트워크, 응답 시간 등을 모니터링하여 균등 분산 여부 확인.

  5. 오토스케일링
    - 클라우드 환경에서는 서버 인스턴스를 자동으로 늘리고 줄이면서 동적으로 부하를 처리.


요약

로드 밸런싱은 여러 서버 간 트래픽 분산을 통해 성능, 가용성, 확장성을 높이는 핵심 기술입니다. 트래픽 패턴, 비용, 보안, 유지보수 편의성 등을 고려하여 적절한 로드 밸런서(하드웨어/소프트웨어/클라우드)와 알고리즘(L4, L7 등)을 선택하는 것이 중요합니다.

profile
🌱

0개의 댓글