로드 밸런서는 특정 서버에 요청이 몰려 부하가 발생하는 것을 방지하기 위해 여러 서버에 트래픽을 분산시키는 장치 또는 소프트웨어이다.
로드 밸런서는 웹 서버의 앞단에 위치하며, 들어오는 요청을 적절한 서버로 라우팅해주고, 웹 서버가 뱉어낸 응답을 클라이언트에 다시 전달한다. 이 과정에서 로드 밸런서는 특정한 로드 밸런싱 알고리즘
을 사용하여 요청을 수신해야 하는 웹 서버를 결정한다. 알고리즘은 각 서버의 사용량, 용량 및 전송된 요청 유형과 같은 요소를 고려한다.
로드 밸런서는 웹 서버의 앞단에 위치하기 때문에, 트래픽 분산 뿐만 아니라 보안 역할도 수행할 수 있다.
앞서 말했듯, 로드 밸런서가 서버로 요청을 넘겨줄 때 라우팅 알고리즘을 사용해 요청을 넘겨줄 서버를 결정한다.
가장 많이 사용되는 라우팅 알고리즘은 라운드 로빈 알고리즘
, 최소 연결 방식
등이 있다.
라운드 로빈 방식에서는 먼저 로드 밸런서가 들어오는 요청을 각 서버에 번갈아가며 보낸다.
서버가 3개 있다고 가정했을 때, 로드 밸런서는 요청 1을 서버 1로, 요청 2를 서버 2로, 요청 3을 서버 3으로 보낸 뒤 순환 루프를 시작한다. 즉, 요청 4는 다시 서버 1에서 처리하는 방식으로 계속 진행된다. 이를 통해 시간이 흐름에 따라 각 서버가 거의 동일한 수의 요청을 수신하도록 한다.
이는 각 서버의 성능이 동일하고, 요청 처리 시간이 짧은 애플리케이션의 경우에 균등하게 분산할 수 있다는 장점이 있다.
최소 연결 방법에서는 로드 밸런서가 각 서버의 현재 연결 수를 추적한다.
요청이 들어오면 활성 연결이 가장 적은 서버, 즉 현재 연결 수가 가장 적은 서버로 요청을 보낸다
. 동적인 분산 알고리즘으로 각 서버에 대한 현재 연결 수를 동적으로 카운트할 수 있고, 이를 통해 서버 부하를 분산시킬 수 있다.
로드 밸런서는 어떤 것을 기준으로 요청을 분산시키느냐
에 따라 네 가지 종류로 나뉠 수 있다.
종류 | 로드밸런싱 기준 |
---|---|
L2 | 데이터 전송 계층에서 Mac 주소를 바탕으로 로드 밸런싱 |
L3 | 네트워크 계층에서 IP 주소를 바탕으로 로드 밸런싱 |
L4 | 전송 계층에서 동작, IP주소와 Port를 바탕으로 로드 밸런싱 |
L7 | 응용 계층에서 동작, 클라이언트의 요청을 바탕으로 로드 밸런싱. ex) endpoint |
이 중 L4와 L7이 대표적인데, 핵심 내용을 정리하면 다음과 같다.
TCP, UDP 포트 정보를 바탕으로 한다.
장점
ALB(애플리케이션 로드 밸런서)
라고 불린다.
장점
단점
따라서 L7 로드 밸런서는 요청 내용에 따라 들어오는 트래픽을 분배하며, 세션 상태를 유지하거나 컨텐츠 기반 라우팅이 필요한
복잡한 애플리케이션
에 유용할 수 있다. 또한 SSL/TLS Termination과 같은 고급 기능을 제공 할 수도 있다.
SSL Termination이란?
SSL로 암호화된 데이터 트래픽이 해독되는 프로세스로서, Load Balancer가 SSL을 Termination 하게 되면 웹 서버에 부하를 줄여줄 수 있다는 장점이 있다.
참고 : https://sepiros.tistory.com/50