Computer Science/Network

[Network] Load Balancer(부하 분산 장치)

검은 까마귀 2023. 12. 28. 14:34

#개요

이번에 프로젝트를 하다 로드밸런서가 무엇인지 정확히 잡고 넘어가야했다.

네트워크쪽에서는 자주 등장하는 용어이고 사용하는 장치이다.

Load Balancer(부하 분산 장치) 즉, 로드밸런서라고 칭하겠다.

 

이 로드밸런서가 등장하게 된 계기 부터 알아보면 더 쉽게 이해가 가능하다.

 

우리가 서버에 트래픽이 부하(트래픽)이 많이 걸리면 우리는 서버의 사양을 늘리거나 증축해서 설비를 해야한다.

서버의 사양을 늘리는 것(Scale-up), 서버를 증축하여 설비하는 것(Scale-out)이라고 부른다.

 

 

다시 설명하면,

AWS EC2를 기준으로

t3.small ➡️ t3.large로 간다면 Scale-up은 수직 스케일링

t3.small ➡️ t3.small, t3.small 로 간다면 Scale-out 수평 스케일링이다.

 

이렇게 된다면 Scale-up만 보았을 때 인스턴스 1대에서 트래픽을 받게 되어있다.

그렇다면 Scale-out은 어떨까? 두개의 인스턴스가 있는데 어디로 보내야 할까??

 

이럴때는 두개의 부하를 분산처리 장치인 로드밸런서가 필요하다.

로드밸런서는 여러 대의 서버를 두고 제공하는 서비스를 분산처리하기 위한 시스템이다.

Scale-out 기법에는 항상 로드밸런서가 따라와야한다!!

 

#구체적 설명

위에서 알아보았듯이 우리가 로드밸런서가 필요한 이유에 대해 알아보았다.

 

그렇다면 로드밸런서가 동작하는 원리가 있을텐데 어떻게 동작하는지 알아보자

  • 라운드로빈 방식
     서버가 들어온 요청을 순서대로 돌아가며 배정하는 방식
     여러대의 서버가 동일한 스펙을 갖고 있을때, 서버와의 연결이 오래 지속되지 않을때
  • 가중 라운드로빈 방식
     서버에 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분하는 방식
     주로 서버의 사양이 다를 경우 사용한다.
  • IP 해시 방식
     클라 단에서 IP주소를 특정 서버로 맵핑하여 요청하는 방식
     사용자가 같은 서버로 접속 가능
  • 최소 연결 방식
     적은 연결 상태를 보이는 서버에 우선적으로 트래픽을 배분
     서버에 분배된 트래픽들이 일정하지 않은 경우 적합
  • 최소 리스폰타임 
     서버의 연결상태와 리스폰 타임을 고려하여 배분하는 방식
더보기

라운드 로빈

시분할 시스템을 위한 선점형 스케듈링의 하나로, 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위로 할당하는 기법

 

시간 단위 : 10ms ~ 100ms

 

AWS 로드밸런서는 동작하는 원리를 선택할 수 있게끔 되어있다.(AWS 쪽에 포스팅 진행 예정)

 

로드밸런서는 대부분 L4, L7 계층에서 활용된다. 아래 글을 보면 이해가 잘 될거다. 

2023.09.14 - [Computer Science/Network] - [Network] OSI 7 Layer(OSI 7 계층)

 

[Network] OSI 7 Layer(OSI 7 계층)

# 목적 OSI 7 Layer는 무엇일까요? 일종의 네트워크의 표준 모델이라고 합니다 표준화의 이유는 "네트워크 장비를만드는 회사가 이러한 지침대로 장비를 만들면 다른 회사 장비여도 상호 호환성을

blaj2938.tistory.com

 

L4는 전송 계층이다. 즉 전송 계층에 로드 밸런서를 구성하게 되면

L4를 구분하는 단위는 포트번호 이다. 전송계층에는 우리가 익히 알고 있는 프로토콜인 TCP, UDP이다.

 

L4 로드밸런서는 이전 계층인 3계층의 네트워크 계층의 IP와 TCP, UDP를 기준으로 로드를 분산하게 된다.

비용이 더 저렴하다고는 하는데 이유는 여러가지 이유가 있다.L7을 보면 왜 저렴한지 알 수 있다.

 

L7 로드밸런서는 7계층인 응용 계층에 있다.응용계층에는 여러가지 데이터들이 들어오고 https, http등등 상위 프로토콜을 처리해서 진행이된다. 즉 다시말해서 많은 데이터로 더 섬세하게 라우팅 기능을 포함하게 되며, 캐싱 기능이 있다. 또한, AWS의 L4 로드밸런서에는 SSL인증 절차까지 포함되어있다.

 

두가지의 로드밸런서만 보면 당연히 기능이 많은 L7 로드밸런서가 비용이 높아질 수 밖에 없다. 하지만 속도 측면에서는 L4 로드밸런서가 더 우세하다. 데이터를 처리할게 없기 때문이다.

 

쿠버네티스의 ingress와 AWS 로드밸런서를 함께 이해하면 더 쉬울 수도 있다.

 

두개 중 로드밸런서를 어떤걸 선택하냐는 필요한 서비스마다 인프라를 설계함에 있다.

문득 그런 의문이 들었다.

 

두개를 모두 사용하는 아키텍쳐 구조가 있을까??

 

대게 L4 로드밸런서는 빠르게 동작하는 로드밸런서로 Streaming 서비스를 사용할때 이용된다고 한다.

우리가 아는 트위치, 아프리카 TV, Youtude라이브 등등 과 같은 서비스이다.

그렇다면 트위치와 아프리카, Youtude라이브에서도 목록기능을 제공한다면 이는 L4 로드밸런서를 사용하게 될것이다.

 

이렇게 로드밸런서가 왜 필요하고 어떻게 동작하고 어디서 동작하는지 한번 알아보는 시간을 가졌다.

이번 계기를 통해 로드밸런서를 정확히 무엇인지 알 수 있었던거 같다.

 

그냥 이론만 공부하면 머리에 잘 안들어오는데 aws eks를 하다보니 필요에 의해 공부를 하게 되는 것 같다.

제가 틀린 부분이 있다면 피드백 부탁드립니다~

 

 

 

 

 

 

 

 

반응형