Load Balancer(로드밸런서)

최다슬·2022년 2월 26일
0

📝Study

목록 보기
9/11

로드밸런서란?

트래픽이 증가하면 서버에 가해지는 부하를 분산해주는 장치 및 기술
부하분산 이라고도 불림

로드밸런서의 필요성

사용자가 한, 두명 일 경우에는 서버가 여유롭게 사용자가 원하는 결과를 응답해줄수있지만,
사용자가 많아질수록 서버는 모든 사람들에 대해 응답을 해주지 못하여 동작이 멈추게됨

이러한 경우 증가하는 트래픽에 대처할 수 있는 방법 2가지 존재

Scale-up 과 Scale-out

  • Scale-up : Server가 더 빠르게 동작하기 위해 하드웨어 성능을 올리는 방법(업그레이드)

  • Scale-out : 하나의 Server 보다는 여러 대의 Server가 나눠서 일을 하는 방법

    서버를 여러대로 나눈다면 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요하게 됨!


로드밸런싱의 주요 기능

  • NAT : Private IP를 Public IP로 바꿈
  • Tunneling :데이터를 캡슐화하여 연결된 노드만 캡슐을 해제할 수 있게 만듦
  • DSR : 요청에 대한 응답을 할 때 로드밸런서가 아닌 클라이언트의 IP로 응답

주요 기능에 대해선 추가 공부 필요

로드밸런서의 종류

OSI 7계층을 기준으로 어떻게 부하를 분산하는지에 따라 종류가 나뉘게 됨
상위 계층으로 갈수록 더욱 정교한 부하 분산이 가능하지만 가격이 비싸지고
하위 계층으로 갈수록 간단한 부하 분산이 가능하고 가격이 저렴함
부하 분산에는 L4 로드밸런서와 L7 로드밸런서가 가장 많이 활용

  • L2 : Mac주소를 바탕으로 Load Balancing
  • L3 : IP주소를 바탕으로 Load Balancing
  • L4 : Transport Layer(IP와 Port) Level에서 Load Balancing
    - IP 주소와 포트 번호 부하 분산이 가능
    - 네트워크 계층(IP 주소)이나 트랜스포트 계층(TCP, UDP)의 정보를 바탕으로 분산하는것
  • L7 : Application Layer(사용자의 Request) Level에서 Load Balancing
    - URL 또는 HTTP 헤더에서 부하 분산이 가능
    - TCP, UDP 는 물론, 애플리케이션 계층에서 분산하기 때문에 HTTP, HTTPS의 URL, FTP의 파일명, 쿠기정보 등과 같은 사용자의 요청을 기준으로 분산하는것이 가능 -> 요청에 대해 세분화해서 서버에 전달 할 수 있음

로드밸런서가 서버를 선택하는 기준

  • Round Robin : 클라이언트로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식(첫번째 요청은 첫번째 서버로, 두번째 요청은 두번째 서버로 할당하는것)
    - 로드밸러싱 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어지기 때문에 이 방식을 사용
  • Weighted Round Robin Method(가중 라운드 로빈 방식) : Round Robin 방식으로 분배하지만, 서버의 가중치에 따라 요청을 더 분배하기도, 덜 분배하기도 하는 방식
    - 서버 가중치는 사용자가 지정 가능
    - 서버의 트래픽 처리 능력이 상이한 경우 사용
  • Least Connection(최소 연결 방식) : 서버마다 연결된 커넥션이 몇개인지 체크하여 커넥션이 가장 적은 서버로 요청을 분배하는 방식
    - 트래픽으로 인해 세션이 길어지는 경우, 서버에 분배된 트래픽들이 일정하지 않은 경우 사용
  • Weighted Least Connections : Least Connection 방식으로 분배하지만, 서버 가중치에 따라 요청을 더 분배하기도, 덜 분배하기도 하는 방식
  • Fastest Response Time : 서버가 요청에 대해 응답하는 시간을 체크하여 가장 빠른 서버로 요청을 분배하는 방식
  • IP Hash Method(IP 해시 방식) : 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식

References
https://deveric.tistory.com/91
https://nesoy.github.io/articles/2018-06/Load-Balancer
https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/
https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903

0개의 댓글