개발일지

로드밸런싱이란? 본문

CS, WEB

로드밸런싱이란?

lyjin 2024. 2. 7.

로드밸런싱 (Load Balancing)

사용자가 늘고 트래픽이 증가하다보면 하나의 서버로 감당하기 힘든 순간이 올 것이다. 이때 트래픽 관리를 위해 서버를 확장하게 되는데 확장 방법으로 스케일 업, 그리고 스케일 아웃이 있다.

스케일 업 (Scale-up): 단일 서버 그 자체의 성능을 업그레이드 하는 방식
스케일 아웃 (Scale-out): 서버를 증설하여 전체 시스템 성능을 향상하는 방식

 

스케일 아웃 방식을 선택했다면 트래픽을 여러 서버로 균등하게 분산하기 위한 기술이 필요한데 이때 사용하는게 로드밸런싱 이다.



로드밸런서 동작 방식

  1. 도메인 주소를 입력하면 클라이언트는 DNS 쿼리를 로컬 DNS로 전송한다.
  2. 로컬 DNS는 로드밸런서의 가상 IP 주소(Virtual IP)를 찾아 클라이언트에 반환한다.
  3. 클라이언트는 VIP 주소로 HTTP(S) 요청을 보낸다.
  4. 로드밸런서는 내부 알고리즘으로 선택한 하나의 서버에 요청을 전달한다.
  5. 로드밸런서는 서버의 응답 결과를 받아 클라이언트에 전송한다.



L4 로드밸런서 vs. L7 로드밸런서

주로 L4 로드밸런서와 L7 로드밸런서를 사용하는데 이는 전송계층(L4)부터 IP와 Port를 기반으로 한 부하 분산이 가능하기 때문이다.

  • L4 로드밸런서는 네트워크(IP/Port) 또는 전송 계층(TCP/UDP) 정보를 바탕으로 부하를 분산한다. 패킷 레벨에서만 부하를 분산하기 때문에 속도가 빠르고 효율이 높다.
  • L7 로드밸런서는 TCP/UDP는 물론 HTTPS, FTP 등 애플리케이션 계층의 부하 분산 관리가 가능하다. 더 세밀한 제어가 가능하지만 그만큼 더 높은 비용이 발생한다.

 


로드밸런싱 알고리즘

로드밸런서는 더 적합한 서버에 부하를 분배하기 위해 미리 설정된 분산 알고리즘을 적용하여 부하 분산을 관리한다. 크게 정적 로드밸런싱과 동적 로드밸런싱, 두 범주로 나뉜다.

 

 

정적 로드밸런싱 vs. 동적 로드밸런싱

  • 정적 로드밸런싱은 미리 정해진 규칙에 맞춰 로드밸런싱이 이루어진다. 주로 서비스 시작 시점에 설정되어 그 뒤에는 변경되지 않는 경우가 많다. 라운드 로빈 등이 속한다.
  • 동적 로드밸런싱은 요청이 들어올 때 각 서버의 상태에 따라 할당할 서버를 결정하는 방식이다. 최소 연결 방식, 최소 응답 방식 등이 속한다.

 

라운드 로빈 방식 (Round Robin)

  • 서버에 요청이 들어온 순서대로 분배하는 방식
  • 서버 간의 성능 및 부하 차이가 크지 않을 경우
  • 서버들 간의 요청 처리 시간이 비슷할 경우

 

가중 라운드 로빈 방식 (Weighted Round Robin)

  • 서버마다 가중치를 할당하여 가중치가 높은 서버에 더 많은 트래픽을 분배하는 방식
  • 서버 간의 성능 및 부하 차이가 클 경우

 

최소 연결 방식 (Least Connections)

  • 연결된 Connection 수가 가장 적은 서버에 트래픽을 분배하는 방식
  • 서버 간 성능 차이가 크지 않을 경우
  • 서버 간 트래픽 부하가 일정하지 않을 경우
  • 연결 지속 시간이 긴 경우 ex) 실시간 웹 소켓 통신

 

가중 최소 연결 방식 (Weighted Least Connections)

  • 서버에 가중치를 할당하고 연결된 Connection과 가중치를 고려하여 트래픽을 분배하는 방식
  • 서버 간의 성능 및 부하 차이가 크고, 현재 Connection 수를 고려하여 트래픽을 동적 관리해야할 경우

 

최소 응답 시간 방식 (Least Response Time)

  • 서버의 응답 시간을 측정하고 응답 속도가 가장 빠른 서버에 트래픽을 분배하는 방식
  • 서버 간의 성능, 부하, 응답시간이 일정하지 않고 예측이 어려운 경우
  • 빠른 응답 시간이 중요한 경우 ex) 실시간 서비스, 대화형 애플리케이션

 

IP 해시 방식 (IP Hash)

  • 클라이언트 IP 주소를 해싱한 결과에 따라 특정 서버와 매핑하는 방식
  • IP 주소는 고정된 값이기 때문에 동일한 서버와의 연결을 보장 함

 


 

참고한 글

https://post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903
https://aws.amazon.com/ko/what-is/load-balancing/
https://steady-coding.tistory.com/535

'CS, WEB' 카테고리의 다른 글

DNS(Domain Name System) 알아보기  (0) 2024.08.24
프로세스와 스레드  (0) 2024.02.28
OAuth 2.0 알아보기  (0) 2022.12.12
PASETO (Platform-Agnostic SEcurity TOkens)  (0) 2022.11.25
JWT(Json Web Token)  (0) 2022.11.20