로드밸런싱

  • 서버에 가해지는 부하를 여러 서버에 분산시키는 것
  • 특정 서버의 과부하를 방지하고, 서비스의 안정성과 성능을 향상시키기 위함

Nginx, L4 스위치, HA Proxy 비교

항목 L4 스위치 Nginx HAProxy
HW/SW HW SW SW
역할 로드밸런싱 - 웹서버
- 리버스 프록시
- 로드밸런싱
- 로드밸런싱
동작 계층 - L4 (TCP/UDP) - L7 (HTTP/HTTPS)
- L4 (stream, 제한적)
- L4 + L7 모두 지원
분산 기준 - IP
- 포트
- 프로토콜
- 세션 등
- URI
- 쿠키
- 헤더
- 콘텐츠 등
 
유연성 - 단순한 분산 - 정교한 분산 가능  
처리 방식 - 패킷 기반 - 요청 기반  
성능 - 매우 높음 - 상대적으로 낮음 - 매우 높음
프로토콜 지원 - TCP/UDP - HTTP(S)
- TCP 일부
- TCP
- HTTP, HTTPS
- WebSocket 등
로드밸런싱 알고리즘 - 라운드로빈
- 해시
- 세션 등
- 라운드로빈
- IP
- 해시 등
- 다양한 알고리즘
- 커스터마이징 가능
세션 스티키 - 지원 - 제한적 - 강력하게 지원
상태 체크 - 기본 지원 - 가능 (L7 기준) - 고급 건강 체크 기능 제공
설정 난이도 - 하드웨어 전용
→ 고비용
비교적 쉬움 - 중간~높음
- (복잡성은 있지만 강력함)
실시간 모니터링 - 전용 장비 필요 - 제한적 - 풍부한 통계 및 대시보드
장점 - 고성능
- 네트워크 레벨 트래픽 처리
- 매우 빠른 응답 시간
- 콘텐츠 기반 분산 가능
- 웹 서버 역할 수행
- 설정 간단
- TCP / HTTP 모두 고성능 처리
- 세션 스티키
- 커넥션 제한
- 재시도 및 장애 감지
- 프로메테우스 연동
단점 - L7 분기 불가
- 비용 비쌈
- 유지보수 어려움
- L4 로드밸런싱 제한적
- 고급 로드밸런싱 기능 제한적
(웹서버에 주안점)
- 설정 복잡
- 학습 곡선 가파름
추천 상황 - 대규모 서비스
- 데이터센터 간 트래픽 분산
- 극한 성능
- API 게이트웨이
- 웹서버 앞단
- 소규모 로드밸런싱
- 빠르게 구축해야 할 때
- 고성능 웹 서비스 로드밸런싱
- 다중 백엔드 상태 관리
- 다중 백엔드 트래픽 제어
- Nginx 로는 부족한 경우
- 고성능과 고유연성

L4 스위치

  • 역할 : TCP/UDP 패킷 수준에서 빠른 분산 처리
  • 특징 : 하드웨어 기반, 수십~수백만 QPS 처리
  • 장점 : 고성능, 네트워크 레벨의 트래픽 처리, 매우 빠른 응답 시간
  • 단점 : L7 분기 불가 (경로, 쿠키 등 조건 분기 불가), 비용 비쌈, 유지보수 어려움
  • 추천 상황 : 대규모 서비스의 첫 관문, 데이터센터 간 트래픽 분산

Nginx

Nginx DOC

  • 역할 : 주로 웹서버, 리버스 프록시 / L7 (HTTP) 로드밸런서
  • 장점 : (1) 콘텐츠 기반 분산 가능 (경로, 헤더 기반 등) (2) SSL 종료, 캐시, 압축, 웹서버 역할도 수행, (3) 설정 간단하고 학습 곡선 낮음
  • 단점 : L4 성능은 제한적 (stream 모듈만으로는 부족), 고급 로드밸런싱 기능 제한
  • 추천 상황 : API 게이트웨이, 웹서버 프론트, 소규모 L7 분산

HAPROXY

HAProxy Doc

  • 역할 : L4와 L7 모두 가능한 전문 로드밸런서
  • 장점 : (1) TCP/HTTP 모두 고성능 처리 (2) 세션 스티키, 커넥션 제한, 재시도, 장애 감지 등 강력한 기능 (3) Prometheus 연동 등 모니터링 용이
  • 단점 : 설정 복잡, 초기 학습 필요
  • 추천 상황 : (1) 고성능 웹 서비스 로드밸런싱 (2) 다중 백엔드 상태 관리 및 트래픽 제어 필요할 때 (3) Nginx로 부족한 상황

Comments