네트워크 기술의 일종으로, 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위해 사용되는 기술이다.
로드 밸런싱을 수행하는 소프트웨어나 하드웨어를 로드 밸런서(Load Balancer)라고 하며, 로드 밸런싱 서비스를 통해 외부에서 발생되는 많은 인터넷 트래픽을 여러 웹 서버나 장비로 부하를 분산하여 처리할 수 있다.
일반적인 웹 트래픽 증가에 대한 처리 방식
Scale-Up을 통해 CPU, 메모리, 디스크 등의 기능을 업그레이트 하는 방식: 기존보다 높은 성능을 보유한 웹 서버로 시스템을 업그레이드함으로써 문제를 해결하는 방식으로, 필요로 하는 성능이 높아질수록 비용이 기하급수적으로 늘어나는 단점이 있다. 또한 하나의 서버에서 웹 서비스를 제공하여 서버 중지 및 장애로 인한 웹 서비스 가용성에 문제가 발생할 수 있다.
Scale-Out을 통해 저렴한 노드 여러 개를 하나의 Cluster로 구성하는 방식: Cluster로 구성하는 경우 Cluster 내 하나의 노드에 문제가 발생하여도 웹 서비스가 중단되지 않으므로 가용성이 높은 웹 서비스를 구성할 수 있다. 로드 밸런싱은 Scale-Out 방식의 웹 서비스 구성에 주로 사용되며, 네트워크 트래픽을 서비스의 Port 단위로 제어하고, 트래픽을 분산 처리함으로써 높은 가용성과 부하 분산을 통한 고효율 웹 서비스를 제공한다.
로드 밸런싱의 방식
Round Robin: Real 서버로의 Session 연결을 순차적으로 맺어주는 방식이다. 연결되어 있는 Session 수에 상관없이 순차적으로 연결시키는 방식으로, Session에 대한 보장을 제공하지 않는다.
Hash: Hash 알고리즘을 이용한 로드 밸런싱 방식이다. Client와 Server 간에 연결된 Session을 계속 유지해 주는 방식으로, Client가 특정 Server로 연결된 이후 동일 서버로만 연결되는 구조로 Session에 대한 보장을 제공한다.
Least Connection: Session 수를 고려하여 가장 작은 Session을 보유한 서버로 Session을 맺어주는 연결 방식으로, Session에 대한 보장을 제공하지 않는다.
Response Time: 서버 간의 Resource와 Connection의 차이가 있는 환경에서 사용되는 방식으로, 응답시간을 고려하여 빠른 응답시간을 제공하는 서버로 Session을 맺어주는 방식이며, Session에 대한 보장을 제공하지 않는다.