로드밸런서
로드 밸런서(Load Balancer)는 네트워크나 애플리케이션 레벨에서 들어오는 트래픽(요청)을 여러 서버(또는 서비스 노드)로 효율적으로 분산하여, 전체적인 성능과 가용성을 높이고 장애나 과부하를 방지하는 핵심 인프라 컴포넌트임.
서버나 서비스 노드가 여러 대일 때, 단일 서버에만 부하가 집중되지 않도록 트래픽을 자동으로 분산함으로써 서비스 안정성과 확장성을 확보하는 것이 주된 목적임.
로드 밸런싱의 필요성
1. 가용성(Availability) 보장
하나의 서버에 장애가 발생하더라도, 로드 밸런서는 나머지 서버로 트래픽을 자동으로 우회시켜서 서비스 다운타임을 최소화함.
시스템 전체의 고가용성(High Availability, HA)을 위해 필수적인 구성 요소임.
2. 확장성(Scalability)
트래픽이 증가할 때, 서버 인스턴스를 추가적으로 증설(Scale-out)해도 로드 밸런서가 자동으로 새로 투입된 서버로 트래픽을 분산하기 때문에 서비스 확장이 용이함.
3. 성능(Performance) 향상
여러 서버로 부하를 골고루 분산하면, 각 서버가 처리해야 할 요청이 줄어들어 응답 시간이 단축되고, 전체 처리량(Throughput)이 증가함.
4. 유연성(Flexibility) 제공
특정 트래픽(예: 특정 지역의 사용자, 특정 API 요청 등)을 전용 서버 혹은 전용 풀(Pool)로 분리하거나, 버전 업그레이드 시 블루-그린(Blue-Green), 카나리(Canary) 배포 등에 유연하게 대응할 수 있음.
로드 밸런서의 작동 원리
로드 밸런서는 일반적으로 프록시(Proxy) 역할을 함.
클라이언트로부터 들어오는 요청을 대신 받아 백엔드 서버에게 전달(또는 재라우팅)함.
이때, 다음과 같은 핵심 기능을 수행함.
1. 헬스 체크(Health Check)
로드 밸런서는 정기적으로 백엔드 서버의 상태(Health)를 검사함.
헬스 체크를 통과하지 못하는 서버는 트래픽 분산 대상에서 제외하여 장애 서버로 인한 오류를 최소화함.
2. 트래픽 라우팅/분산
Load Balancing Algorithm을 사용해 트래픽을 여러 백엔드 서버로 분산함.
대표적인 알고리즘으로 Round Robin, Least Connections, IP 해시, 가중치 기반(Weight-based) 방식 등이 있음.
3. 세션 지속(Session Persistence, Sticky Sessions) 관리
웹 애플리케이션에서 세션 정보를 유지해야 할 경우, 특정 사용자의 요청을 동일 서버로 라우팅하도록 ‘세션 지속성’을 설정할 수 있음.
쿠키 기반, IP 기반 등 다양한 방식이 있음.
4. SSL/TLS 처리(종단, 복호화/암호화)
L7(애플리케이션 레벨) 로드 밸런서는 클라이언트 SSL 인증을 직접 처리할 수 있음(SSL Offloading 또는 Termination).
이를 통해 서버의 CPU 부하를 줄이고, TLS 인증서를 중앙집중적으로 관리할 수 있음.
OSI 모델 관점 : L4 vs L7 로드 밸런싱
로드 밸런서는 일반적으로 작동 레벨에 따라 L4(전송 계층) 로드 밸런서와 L7(애플리케이션 계층) 로드 밸런서로 구분됨.
1. L4 로드 밸런서
TCP/UDP 등 전송 계층 레벨에서 패킷을 기반으로 로드 밸런싱을 수행함.
소스 IP, 포트, 목적지 IP, 포트 등에 기반한 단순 라우팅을 통해 고성능, 고속 처리가 가능함.
상태 정보를 분석하기가 어렵고, 애플리케이션 레벨의 세부 정보(http 헤더, 쿠키 등)를 활용한 고도화된 라우팅이 제한적임.
2. L7 로드 밸런서
HTTP, HTTPS 등 애플리케이션 계층 프로토콜을 해석한 뒤, URL 경로, 도메인, 쿠키, 헤더 등의 정보를 기반으로 트래픽을 분산할 수 있음.
경로 기반, 호스트 기반 등의 세부 라우팅 규칙을 적용하여 마이크로서비스나 API 게이트웨이 등에 매우 적합함.
L4에 비해 세밀한 제어가 가능하지만, 트래픽 해석에 따른 오버헤드가 있어 성능 면에서는 L4보다는 낮을 수 있음.
하드웨어 vs 소프트웨어 로드 밸런서
1. 하드웨어 로드 밸런서
전용 장비(Appliance) 형태로 구성되며, F5 Big-IP, Citrix ADC(옛 NetScaler), A10 네트웍스 등의 제품이 대표적임.
고속 패킷 처리 칩셋, 전용 OS 및 펌웨어 최적화 등으로 매우 높은 성능을 제공하고, 트래픽 암복호화, DDoS 방어, WAF(Web Application Firewall) 등 다양한 네트워크 기능을 통합적으로 지원함.
장비당 높은 초기 비용과 벤더 종속성(Vendor Lock-in)이라는 단점이 있을 수 있음.
2. 소프트웨어 로드 밸런서
범용 서버(혹은 클라우드 인스턴스) 위에 소프트웨어로 구동되며, Linux 커널 또는 사용자 레벨에서 패킷을 처리함.
대표적인 오픈소스 솔루션으로 HAProxy, Nginx, Envoy, Traefik 등이 있으며, 클라우드 벤더 자체 서비스(예: AWS ELB/ALB, GCP GLB/ILB, Azure LB 등)도 있음.
확장성과 유연성이 높고, 초기 비용이 상대적으로 낮으며 DevOps/클라우드 환경에 적합함.
하지만 고성능 패킷 처리를 위한 최적화가 필요할 수 있음.
로드 밸런싱 알고리즘
1. Round Robin
각 서버로 차례차례 순환하면서 트래픽을 분산하는 가장 기본적인 방식임.
모든 서버가 동일 스펙일 때 효과적이나, 서버에 따라 성능 차이가 클 경우 효율이 떨어질 수 있음.
2. Weighted Round Robin
서버별 가중치(Weight)를 부여해 성능이 좋은 서버가 더 많은 트래픽을 처리하게 함.
서버 성능 차이가 큰 환경에서 유용함.
3. Least Connections
현재 연결(Connection) 수가 가장 적은 서버로 트래픽을 분산함.
실제 부하(로드)를 기반으로 균형 있게 분산할 수 있으나, 세션이 길어지는 환경에서 예측이 어려울 수 있음.
4. IP Hash (Source Hash)
클라이언트 IP를 해시하여 항상 동일한 서버로 라우팅함.
특정 사용자가 항상 같은 서버에 연결되어야 하는 경우(세션 지속성) 등에 사용함.
5. Least Response Time / Resource-based
서버의 현재 CPU, 메모리 사용률, 응답 시간 등을 종합적으로 고려해 트래픽을 분산함.
다양한 지표를 반영하므로 세밀한 로드 균형이 가능하지만, 구현 복잡도가 높아질 수 있음.
고급 기능
1. SSL 오프로딩(Offloading)
SSL/TLS 트래픽 처리를 로드 밸런서가 담당하여 백엔드 서버는 평문(HTTP)으로만 통신하도록 구성할 수 있음.
서버 CPU 부하를 줄이고 인증서 관리를 단순화할 수 있지만, 내부 네트워크 구간의 암호화 보안은 별도 고려가 필요함.
2. SSL 패스스루(Passthrough)
로드 밸런서가 SSL 복호화를 하지 않고 그대로 백엔드 서버로 트래픽을 전달함.
백엔드 서버까지 트래픽이 암호화 상태로 유지되어 보안 측면에서 안전하지만, L7 로드 밸런서 기능(HTTP 헤더 기반 라우팅 등)은 제한적임.
3. 세션 스티키(Session Sticky)
쿠키 기반 스티키, IP 기반 스티키 등으로 사용자의 세션 정보 일관성을 보장함.
스티키 사용 시 특정 서버로 트래픽이 편향되지 않도록 모니터링이 필요함.
4. 실시간 스케일링 및 동적 구성(Dynamic Configuration)
클라우드 환경이나 컨테이너 오케스트레이션(Kubernetes)에서 파드(Pod)/인스턴스가 동적으로 생성, 제거될 때, 로드 밸런서가 자동으로 구성을 갱신하여 트래픽을 적절히 분산해야 함.
5. 보안(보안 기능 통합)
DDoS 방어, 방화벽 규칙, WAF(Web Application Firewall), 봇 필터링 등 다양한 네트워크 보안 기능을 로드 밸런서 레벨에서 통합 제공하기도 함.
6. 모니터링 및 로깅
요청당 응답 시간, 에러율, 서버 상태 등을 모니터링하고 로그를 수집하여 장애를 빠르게 감지해야 함.
ELK(Stack), Prometheus/Grafana, 클라우드 벤더의 모니터링 서비스 등을 연동해 운영 가시성을 확보함.
실제 구성 예시
1. 클라우드 환경의 Managed LB
AWS Elastic Load Balancer (ELB)
Classic LB(L4 기반), ALB(L7 기반), NLB(L4 기반) 등 다양한 유형을 제공
자동 스케일링 그룹(ASG)과 연동 가능
GCP의 Global HTTP(s) Load Balancer, Internal Load Balancer
Azure Load Balancer, Application Gateway 등
2. 온프레미스/하이브리드 환경의 소프트웨어 LB
HAProxy: 오픈소스이면서 L4/L7 모두 지원, 매우 높은 성능과 풍부한 기능 제공
Nginx: 웹 서버 겸 로드 밸런서, Reverse Proxy로 많이 사용, L7 로드 밸런싱에 강점
Envoy: 최신 마이크로서비스 및 서비스 메시(Service Mesh)에서 주로 사용
Traefik: Kubernetes 환경에 최적화된 L7 로드 밸런서/Ingress Controller
3. 전용 하드웨어 LB
F5 Big-IP: 기업, 금융권 등에서 전통적으로 많이 쓰이며, WAF, SSL VPN 등 다양한 기능 통합
Citrix ADC(구 NetScaler), A10 Thunder Series 등
정리
로드 밸런서는 고가용성, 확장성, 성능, 보안을 실현하기 위한 핵심 인프라로서, 서버 및 서비스에 대한 중앙 진입점 역할을 수행함.
L4 수준부터 L7 수준까지 다양한 방식으로 트래픽을 분산할 수 있으며, 하드웨어 장비나 소프트웨어(오픈소스, 클라우드 매니지드 서비스) 형태로 구현 가능함.
헬스 체크, SSL 처리, 세션 스티키, 고급 라우팅 기능 등을 통해 트래픽 처리와 보안을 정교하게 제어할 수 있음.
클라우드 네이티브, 컨테이너 환경이 확산됨에 따라 로드 밸런서는 동적 환경에 실시간으로 대응해야 하며, 인프라 자동화 및 모니터링도 필수임.
종합하면, 로드 밸런서는 서버 부하를 분산하고 서비스 안정성을 향상시키는 데 필수적인 솔루션임.
서비스 규모나 아키텍처, 보안 요구사항, 운영 편의성, 비용 등을 종합적으로 고려하여 적합한 로드 밸런서 유형 및 구성을 선택하는 것이 중요함.
'Operating System > Computer' 카테고리의 다른 글
[Computer] 프로세스의 문맥 교환 (0) | 2025.01.28 |
---|---|
[Computer] 멀티프로세싱 및 멀티스레딩 (0) | 2025.01.27 |
[Computer] 프로세스와 스레드의 차이 (0) | 2025.01.27 |
[Computer] CPU 스케줄링 알고리즘 (0) | 2025.01.26 |
[Computer] 자바 표준 스펙 (1) | 2025.01.26 |