로드 밸런싱

기술노트
Admin (토론 | 기여)님의 2025년 4월 17일 (목) 15:31 판 (컴퓨터 과학 용어 정리 - 로드 밸런싱 추가)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

로드 밸런싱

개념

로드 밸런싱(Load Balancing)은 여러 대의 서버에 네트워크 트래픽을 균등하게 분산시키는 기술입니다. 서버의 부하를 분산함으로써 시스템의 전체적인 성능, 가용성 및 안정성을 향상시키는 것이 주요 목적입니다.

로드 밸런싱의 필요성

  • 성능 향상: 트래픽을 여러 서버에 분산시켜 응답 시간 단축
  • 고가용성 보장: 서버 장애 발생 시 다른 정상 서버로 트래픽 자동 전환
  • 확장성 제공: 수요 증가에 따라 서버 추가로 시스템 용량 확장 가능
  • 중복성 확보: 단일 실패 지점(SPOF) 제거
  • 유지보수 용이성: 일부 서버 점검 시에도 서비스 중단 없이 작업 가능

로드 밸런싱 동작 방식

기본 구조

로드 밸런서는 클라이언트와 서버 사이에 위치하여 다음과 같이 동작합니다:

  1. 클라이언트가 로드 밸런서에 요청 전송
  2. 로드 밸런서가 사전 정의된 알고리즘에 따라 적절한 서버 선택
  3. 선택된 서버로 요청 전달
  4. 서버가 처리한 결과를 로드 밸런서를 통해 클라이언트에 반환

트래픽 분산 알고리즘

  • 라운드 로빈(Round Robin): 순차적으로 각 서버에 요청을 배분
  • 가중치 기반(Weighted): 서버 처리 능력에 따라 가중치를 부여하여 분산
  • 최소 연결(Least Connection): 현재 연결 수가 가장 적은 서버에 요청 전달
  • 응답 시간(Response Time): 응답 시간이 가장 빠른 서버에 요청 전달
  • IP 해시(IP Hash): 클라이언트 IP 주소를 해싱하여 항상 같은 서버로 요청 전달
  • URL 해시(URL Hash): 요청된 URL을 기준으로 서버 선택

로드 밸런서 유형

네트워크 계층에 따른 분류

  • L4 로드 밸런싱 (전송 계층)
    • TCP/UDP 포트 정보 기반으로 트래픽 분산
    • 패킷 헤더 정보만 확인하여 빠른 처리 가능
    • 패킷 내용 분석은 불가능
  • L7 로드 밸런싱 (애플리케이션 계층)
    • HTTP 헤더, 쿠키, URL 등 애플리케이션 데이터 기반으로 분산
    • 콘텐츠 기반 라우팅 가능 (예: 이미지는 특정 서버로, API 요청은 다른 서버로)
    • 보다 정교한 트래픽 관리 가능
    • L4 로드 밸런싱보다 상대적으로 리소스 소모 큼

구현 방식에 따른 분류

  • 하드웨어 로드 밸런서
    • 전용 장비로 구현 (예: F5 Networks, Citrix Netscaler)
    • 고성능, 높은 신뢰성
    • 고비용, 확장성 제한
  • 소프트웨어 로드 밸런서
    • 소프트웨어로 구현 (예: HAProxy, NGINX, LVS)
    • 저비용, 유연한 구성
    • 하드웨어 로드 밸런서보다 낮은 성능
  • 클라우드 기반 로드 밸런서
    • 클라우드 서비스 제공자가 관리하는 서비스 (예: AWS ELB, Azure Load Balancer)
    • 관리 부담 감소, 종량제 과금 방식
    • 자동 확장/축소 기능 지원

로드 밸런싱 기법

서버 헬스 체크

  • 능동적 헬스 체크: 로드 밸런서가 주기적으로 서버에 요청을 보내 상태 확인
  • 수동적 헬스 체크: 실제 클라이언트 요청에 대한 응답을 모니터링
  • 헬스 체크 매개변수: 타임아웃, 체크 간격, 실패 임계값, 성공 임계값 등

세션 유지 (Session Persistence)

  • 쿠키 기반: 로드 밸런서가 쿠키를 사용하여 클라이언트 요청을 같은 서버로 유지
  • IP 기반: 클라이언트 IP 주소에 따라 동일한 서버로 요청 전달
  • 애플리케이션 기반: 애플리케이션 레벨에서 세션 정보 관리 (Redis, Memcached 등 활용)

장애 대응 (Failover)

  • 수동 장애 복구: 관리자 개입으로 장애 서버 전환
  • 자동 장애 복구: 헬스 체크 실패 시 자동으로 정상 서버로 트래픽 전환
  • 장애 감지 시간: 빠른 장애 감지와 복구를 위한 헬스 체크 간격 조정

구성 패턴

액티브-패시브 (Active-Passive)

  • 하나의 서버가 활성화되어 모든 트래픽 처리
  • 장애 발생 시 대기 서버로 전환
  • 리소스 활용 효율은 낮지만 설정이 단순

액티브-액티브 (Active-Active)

  • 모든 서버가 동시에 트래픽 처리
  • 리소스 활용 효율 높음
  • 모든 서버가 동일한 데이터 접근 필요

글로벌 로드 밸런싱

  • 지리적으로 분산된 데이터 센터 간 트래픽 분산
  • DNS 기반 또는 애니캐스트 방식으로 구현
  • 지역별 사용자에게 가장 가까운 데이터 센터로 연결

로드 밸런싱 구현 사례

웹 서버 로드 밸런싱

  • NGINX, Apache 등의 웹 서버 앞에 로드 밸런서 배치
  • 정적 콘텐츠와 동적 요청 분리 처리 가능
  • 캐싱 전략과 함께 활용하여 성능 향상

애플리케이션 서버 로드 밸런싱

  • WAS(Web Application Server) 서버들 앞에 로드 밸런서 배치
  • 세션 유지 전략 중요
  • 스케일 아웃 방식으로 용량 확장

데이터베이스 로드 밸런싱

  • 읽기 전용 쿼리는 읽기 전용 복제본으로 분산
  • 쓰기 작업은 마스터 데이터베이스로 전달
  • 데이터 일관성 유지가 중요한 과제

클라우드 환경에서의 로드 밸런싱

AWS Elastic Load Balancing

  • ALB(Application Load Balancer): HTTP/HTTPS 기반 L7 로드 밸런싱
  • NLB(Network Load Balancer): TCP/UDP 기반 L4 로드 밸런싱
  • Auto Scaling과 연동하여, 트래픽에 따라 인스턴스 자동 확장/축소

기타 클라우드 서비스

  • Azure Load Balancer/Application Gateway
  • Google Cloud Load Balancing
  • Kubernetes의 Service 및 Ingress 리소스

로드 밸런싱 구현 시 고려사항

성능 고려사항

  • 로드 밸런서 자체가 병목이 되지 않도록 적절한 용량 설계
  • 연결 유지(Keep-Alive) 설정 최적화
  • 효율적인 SSL/TLS 처리

보안 고려사항

  • DDoS 방어 기능 구현
  • SSL/TLS 종료와 인증서 관리
  • 전송 계층 보안 설정

모니터링 및 운영

  • 로드 밸런서 성능 및 상태 모니터링
  • 트래픽 패턴 분석 및 용량 계획
  • 장애 상황 대응 자동화

관련 주제

  • 고가용성(High Availability) 시스템
  • 서버 클러스터링
  • 분산 시스템 설계
  • 오토 스케일링(Auto Scaling)
  • CDN(Content Delivery Network)
  • 컨테이너 오케스트레이션