로드밸런싱
- 서버에 가해지는 부하를 여러 서버에 분산시키는 것
- 특정 서버의 과부하를 방지하고, 서비스의 안정성과 성능을 향상시키기 위함
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
- 역할 : 주로 웹서버, 리버스 프록시 / L7 (HTTP) 로드밸런서
- 장점 : (1) 콘텐츠 기반 분산 가능 (경로, 헤더 기반 등) (2) SSL 종료, 캐시, 압축, 웹서버 역할도 수행, (3) 설정 간단하고 학습 곡선 낮음
- 단점 : L4 성능은 제한적 (stream 모듈만으로는 부족), 고급 로드밸런싱 기능 제한
- 추천 상황 : API 게이트웨이, 웹서버 프론트, 소규모 L7 분산
HAPROXY
- 역할 : L4와 L7 모두 가능한 전문 로드밸런서
- 장점 : (1) TCP/HTTP 모두 고성능 처리 (2) 세션 스티키, 커넥션 제한, 재시도, 장애 감지 등 강력한 기능 (3) Prometheus 연동 등 모니터링 용이
- 단점 : 설정 복잡, 초기 학습 필요
- 추천 상황 : (1) 고성능 웹 서비스 로드밸런싱 (2) 다중 백엔드 상태 관리 및 트래픽 제어 필요할 때 (3) Nginx로 부족한 상황
Comments