IT 공부

Load Balancing와 HAProxy란?

boobin 2024. 6. 26. 14:41

Load Balancing

Load Balancing 이란 말그대로 서버의 가해지는 부하(Load)를 분산(Balancing)해주는 장치 또는 기술이다. 

클라이언트 수가 늘어나게 되고 트래픽이 증가하면 기존 서버 수만으로는 감당할 수가 없게 된다. 그 때 대처할 수 있는 방법은 크게 두가지다. 

  • Scale up: 서버의 성능을 높이는 것
  • Scale out: 서버의 개수를 늘리는 것

Scale-out 방식의 경우 Load Balancing이 거의 필수적이다.

Load Balancing Algorithm

라운드 로빈:

  • 받은 요청을 서버에 순서대로 할당받는 방식
  • 첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버에 등등...
  • 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션 경우, 균등한 분산이 이루어지기 때문에 이 방법이 알맞다

가중 라운드 로빈:

  • 각 서버에 기중치를 부여하고 이 가중치가 높은 서버에 트래픽을 우선 배정한다
  • 서버의 성능이 다른 경우 사용한다

최소 연결:

  • 요청을 받은 순간 연결 수가 가장 적은 서버에 네트워크 연결방향을 배정하는 방식
  • 동적 분산 알고리즘으로 각 서버에 대한 현재 연결 수를 동적으로 카운트 할 수 있고,
  • 동적으로 변하는 요청에대하한 부하를 분산시킬 수 있다

Load Balancing의 종류

L4 :

  • Transport 계층을 사용, IP주소와 포트번호 부하 분산이 가능
  • Transport(전송) 계층: 프로세스 간의 데이터 전송
  • L7보다는 저렴한 편
  • 데이터 안을 보지 않고 패킷 레벨에서만 로드를 분산하기 때문에 속도가 빠르고 효율이 높다

L7 :

  • Application 계층을 사용, URL 또는 HTTP 헤더에서 부하 분산이 가능
  • Application(응용) 계층: 사용자와 네트워크 간의 연결, 데이터 생성 
  • 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능
  • 패킷 내용을 확인하고 그에 따라 맞는 섬세한 라우팅이 가능하다
  • 패킷 내용을 복호화 해야해서 비용이 많이 든다

 

HAProxy

Proxy Server란 시스템에 방화벽을 가지고 있는 경우 외부와의 통신을 위해 만들어놓은 서버이다.

Forward Proxy → 클라이언트 호스트들과 접근하고자 하는 원격 리소스의 사이에 위치함

Reverse Proxy → 인터넷 리소스 또는 인트라넷 리소스 앞에 위치함

 

HAProxy는 Scale-out을 위해 로드밸런싱을 해주는 소프트웨어라고 할 수 있다.

HAProxy는 기본적으로 Reverse Proxy 형태로 동적한다. Reverse Proxy는 서버로 들어오는 요청을 중간에서 받아서 서버에 전달하고 요청한 곳에 그 Response를 다시 전달해주는 중간다리 역할이다.

 

 

 

'IT 공부' 카테고리의 다른 글

DNS와 SSL 인증서  (0) 2024.07.19
토큰 기반 로그인 인증 방법 (JWT) 란?  (0) 2024.06.24
쿠키와 세션에 대해 알아보자  (0) 2024.06.20