로드 밸런싱이란 서버가 처리해야 할 요청을 여러 대의 서버로 나누어 처리하는 것을 의미한다.
한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최고의 효율을 낼 수 있도록 하는 것이 목적입니다.
서비스의 규모가 커짐에 따라 이용자수가 늘어나게 되면 더 이상 기존의 서버로 원활한 대처가 불가능하게 되고, 이에 대처할 수 있는 방법은 크게 두 가지로 나뉩니다.
- Scale up 방식
- Scale out 방식
이때 서버를 여러 개 추가하여 서버의 성능을 올리는 Scale out 방식을 채택한다면 서버의 트래픽을 균등하게 분산해주는 로드 밸런싱이 반드시 필요합니다.
로드 밸런싱 기법은 여러 가지가 있다. 서버의 능력과 상황에 맞추어 적절한 방법을 선택해야 한다.
선착순으로 돌아가며 배정하는 방식이다. 클라이언트의 요청을 순서대로 분배하여 서버가 동일한 스펙을 갖고, 서버와의 연결이 오래 지속되지 않는 경우에 활용합니다.
서버마다 가중치를 매겨 배정하는 방식이다. 각 서버마다 가중치가 매겨지고 이 순서대로 클라이언트의 요청을 배분하는 방식입니다. 주로 서버의 성능이 다를 경우 사용되는 방식입니다.
예를 들어 A서버가 가중치 5를 갖고 B서버가 가중치 2라면 로드 밸런스는 라운드 로빈 방식으로 A서버에 5개 B서버에 2개의 요청을 전달합니다.
IP 주소를 특정 서버로 매핑 해 처리하는 방식이다.
사용자의 IP를 해싱하여 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장합니다.
요청이 들어온 시점에 트래픽이 낮은 서버에 우선적으로 배분한다. 세션이 자주 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식입니다.
가장 적은 연결 상태와 짧은 응답 시간을 보이는 서버에 우선적으로 배분한다. 서버의 현재 연결 상태와 응답 시간(서버에 요청을 보내고 최초 응답을 받을 때까지의 시간)을 모두 고려하여 트래픽을 배분합니다.