로드밸런싱을 둘 이상의 CPU나 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미합니다.

요즘엔 웹사이트 트래픽이 수없이 많죠. 그래서 1대의 서버로는 감당이 안됩니다.

해법은? 하드웨어의 성능을 올리는 Scale up방식과 서버가 나누어 일하는 Scale out방식이 있죠. 다만, 스케일업은 비용이 많이들어, 스케일아웃방식으로 이를 해결하는게 효과적입니다.

이때 여러 서버에게 균등하게 트래픽을 분산시켜주는 것이 바로 로드밸런싱입니다.

로드밸런서가 서버를 선택하는 방식

  1. 라운드 로빈 : CPU스케쥴링의 라운드 로빈 방식을 활용하는 방법입니다.
  2. Least Connections : 연결 갯수가 가장 적은 서버를 선택하는 방법입니다.

→ 이 경우는 트래픽으로 인해 세션이 길어지는 경우 권장되는 방식입니다.

  1. Source : 사용자의 IP를 해싱하여 분배하는 것입니다. 특정 사용자가 항상 같은 서버로 연결되는 것을 보장할 수 있죠. Stateful한 서비스를 제공하기 위해 사용하면 좋은 방법입니다.

라우팅과 로드밸런싱, 스위칭의 차이점

로드밸런싱은 부하분산을 위해 여러대의 서버로 나누어 요청을 보내는 과정입니다. 반면 라우팅은 데이터를 보낼 최적의 경로를 선택하는 과정입니다.

스위칭은 데이터의 목적지를 파악하여 적합한 경로로 스위칭해주는 역할입니다. MAC주소를 기반으로 동작하죠.

스위칭과 라우팅을 비교하자면 스위칭은 2계층인 데이터링크계층에서 일어나는 과정이고 라우팅은 3계층인 네트워크계층에서 일어나는 과정입니다. 스위치는 MAC주소를 기반으로 동작하며, 라우팅은 IP주소를 기반으로 동작하게됩니다.

동작방식에도 다른 차이점이 있습니다. 스위치는 목적지가 불분명할 경우 브로드캐스팅을 통해 모든 포트로 데이터를 보내나, 라우터는 목적지가 불분명할 경우 해당 데이터를 버리도록 동작합니다.

참고

일반적으로 로드밸런서는 이중화를 통해 대비합니다. 서버를 분배하는 로드밸런서에 문제가 생길 수 있기 때문이죠