로드 밸런싱 (Load Balancing)
여러 서버나 컴퓨터 자원에 작업을 고르게 분산하여 처리하는 것을 말함
서버의 규모가 커지고, 이용자 수가 늘어났을 때 대처할 수 있는 방법은 크게 두 가지가 있음
- 기존 서버의 성능을 향상시키는 [Scale-Up 방식]
- 서버를 여러 대 추가하여 시스템을 확장하는 [Scale-Out 방식]
[Scale-Out 방식]은 여러 대의 서버로 트래픽을 균등하게 분산해주는 [로드 밸런싱]이 필요
로드 밸런서 (Load Balancer)
클라이언트와 서버 Pool 또는 네트워크 허브 사이에 위치해서 서버의 부하를 분산시키는 하드웨어나 소프트웨어를 의미
로드 밸런서의 종류
-
L4 Load Balancer (전송 계층)
네트워크 계층(IP, IPX)이나 전송 계층(TCP, UDP)의 정보(IP 주소, 포트 번호, MAC 주소, 전송 프로토콜)를 바탕으로 요청(로드)을 분산 패킷 레벨에서만 요청을 분산하기 때문에 속도가 빠르고 효율이 높음 섬세한 라우팅이 불가능하지만, L7 로드 밸런서보다 가격이 저렴 -
L7 Load Balancer (응용 계층)
L4 로드 밸런서의 기능을 포함 응용 계층(HTTP, FTP, SMTP)에서 요청을 분산하기 때문에 HTTP 헤더, 쿠키 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산할 수 있음 섬세한 라우팅이 가능하고 비정상적인 트래픽을 사전에 필터링하여 서비스 안정성이 높음 패킷 내용을 복호화해야 하기에 비용이 더 높음
로드 밸런싱 알고리즘
정적 로드 밸런싱 (Static load balancing)
고정된 규칙을 따르며, 현재 서버 상태와 무관하게 서버에 들어오는 부하를 분산
-
라운드 로빈 (Round Robin)
클라이언트 요청을 여러 대 서버에 순차적으로 분배
서버 연결(세션)이 오래 지속되지 않거나, 여러 대 서버가 동일 스펙일 때 적합 -
가중 라운드 로빈 (Weighted Round Robin)
서버 별로 가중치를 지정 가중치가 높은 서버는 더 많은 요청을 받음 -
IP 해시 (IP Hash)
클라이언트 IP 주소를 특정 서버에 매핑하여 요청을 처리
사용자가 항상 동일한 서버에 연결됨을 보장
동적 로드 밸런싱 (Dynamic load balancing)
서버의 현재 상태(CPU, 메모리 등)를 조사한 뒤에 부하를 분산
-
최소 연결 방식 (Least Connection)
가장 적은 연결 상태인 서버에 우선 트래픽을 배분 세션 길이가 길거나 요청 시간이 다를 때 적합 -
가중치 최소 연결 방식 (Weighted Least Connection)
서버별 성능이나 처리 능력을 가중치로 반영
활성 연결 수를 가중치로 나눈 값이 가장 낮은 서버에 할당 -
최소 응답 시간 방식 (Least Response Time)
현재 연결 상태와 응답 시간을 고려 가장 적은 연결과 짧은 응답 시간을 보이는 서버에 배분 -
리소스 기반 방식 (Resource Based)
서버 부하(CPU, 메모리, 네트워크 등)를 분석해 트래픽을 분산
각 서버에 에이전트를 설치하여 사용량을 계산 처리에 필요한 리소스 양이 다를 때 적합