개발 일지/CS

[Cloud] Load Balancer

미숫가루설탕많이 2023. 4. 6. 13:30

 서비스에 너무 많은 사용자(클라이언트)가 접속하면 서버에는 과부하가 오게 된다. 이때, 과부하를 해결하기 위한 방법으로는 크게 서버의 하드웨어를 업그레이드하는 방법과 서버의 개수를 늘리는 방법이 있다.

 

 물리적으로 서버의 사양을 높이는 방법인 Scale-Up은 서버의 수를 늘리지 않고 프로그램 구현에 있어 변화가 필요 없다는 장점이 있다. 하지만 높은 비용이 들고 업그레이드에는 한계가 있기 때문에, 클라이언트의 요청이 더욱 많아진다면 다시 부하는 발생하게 될 것이다.

 

 두 번째로 서버의 갯수를 늘리는 Scale-Out은 여러 대의 서버가 나눠서 처리하기 때문에 사양을 높이지 않고도 비교적 저렴한 비용으로 부하를 처리할 수 있다. 이때, 클라이언트로부터 온 요청을 여러 서버에 나눠 처리할 수 있도록 교통정리를 해줄 역할이 필요한데, 이 역할을 하는 것이 바로 '로드 밸런서(Load Balancer)'이고 여러 서버에 교통정리를 해주는 기술 혹은 프로그램을 로드 밸런싱이라고 한다.

 

 로드 밸런서는 대규모 서비스에서 필수적인 요소 중 하나로, 서버의 부하를 분산하여 서버의 안정성과 가용성을 향상시키며, 서비스의 성능을 개선한다. 보통 애플리케이션 계층과 네트워크 계층에서 동작하는데, 애플리케이션 계층 로드 밸런서는 HTTP, HTTPS, FTP, SMTP 등의 프로토콜을 지원하며, 네트워크 계층 로드 밸런서는 IP 주소와 포트 번호를 기반으로 트래픽을 분산한다.

 

 로드 밸런서의 선택과 구성은 서비스의 성능과 안정성에 큰 영향을 미치므로, 조심스럽게 고려해야 한다.

 

 

 

 

종류

 로드 밸런서는 클라이언트의 요청을 어떤 것을 기준으로 분산시키냐에 따라 네 가지의 종류로 나뉜다.

 

  • L2
    : 데이터 전송 계층에서 Mac 주소를 바탕으로 로드 밸런싱한다.

  • L3
    : 네트워크 계층에서 IP 주소를 바탕으로 로드 밸런싱한다.

  • L4
    : 전송 계층에서 IP 주소와 Port를 바탕으로 로드 밸런싱한다.

  • L7
    : 응용 계층에서 클라이언트의 요청을 바탕으로 로드 밸런싱한다.

 

 

 

 

구현

 로드 밸런서는 다양한 방법으로 구현될 수 있다.

 

  • Round Robin
    : 각 요청은 차례대로 서버에 전달되며, 서버 간 처리 능력이 동일할 경우 균등하게 분배된다.

  • Least Connections
    : 현재 가장 적은 연결을 가진 서버에 요청을 보내는 방식이다. 이를 통해 처리 능력이 다른 서버 간의 로드 밸런싱이 가능하다.

  • IP Hash
    : 클라이언트 IP 주소를 해시하여 서버를 선택하는 방식이다.

  • Least Time
    : 서버의 평균 응답 시간을 측정하여 가장 짧은 시간에 응답하는 서버에 요청을 보내는 방식이다.

'개발 일지 > CS' 카테고리의 다른 글

REST API 의 GET 요청에는 Request Body를 넣을 수 있을까?  (0) 2023.06.22
[Cloud] VPC  (0) 2023.04.08
[Cloud] Proxy Server  (0) 2023.04.05
[Cloud] Docker  (0) 2023.04.03
[Cloud] Cloud Storage(S3)  (0) 2023.04.02