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