Skip to content

Latest commit

 

History

History
95 lines (42 loc) · 4.41 KB

로드밸런싱.md

File metadata and controls

95 lines (42 loc) · 4.41 KB

로드 밸런싱(Load Balancing)

둘 이상의 CPU or 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것

load-balance

요즘 시대에는 웹사이트에 접속하는 인원이 급격히 늘어나게 되었다.

따라서 이 사람들에 대해 모든 트래픽을 감당하기엔 1대의 서버로는 부족하다. 대응 방안으로 하드웨어의 성능을 올리거나(Scale-up) 여러대의 서버가 나눠서 일하도록 만드는 것(Scale-out)이 있다. 하드웨어 향상 비용이 더욱 비싸기도 하고, 서버가 여러대면 무중단 서비스를 제공하는 환경 구성이 용이하므로 Scale-out이 효과적이다. 이때 여러 서버에게 균등하게 트래픽을 분산시켜주는 것이 바로 로드 밸런싱이다.

Scale-up 그리고 Scale-out

load-balance-1

로드 밸런싱은 분산식 웹 서비스로, 여러 서버에 부하(Load)를 나누어주는 역할을 한다. Load Balancer를 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜주는 방식이다. 서비스를 운영하는 사이트의 규모에 따라 웹 서버를 추가로 증설하면서 로드 밸런서로 관리해주면 웹 서버의 부하를 해결할 수 있다.

로드 밸런서가 서버를 선택하는 방식

  • 라운드 로빈(Round Robin) : CPU 스케줄링의 라운드 로빈 방식 활용
  • Least Connections : 연결 개수가 가장 적은 서버 선택 (트래픽으로 인해 세션이 길어지는 경우 권장)
  • Source : 사용자 IP를 해싱하여 분배 (특정 사용자가 항상 같은 서버로 연결되는 것 보장)

로드 밸런서의 종류

부하 분산에는 L4 로드밸런서와 L7 로드밸런서가 가장 많이 활용된다. 그 이유는 L4 로드밸런서부터 포트(Port)정보를 바탕으로 로드를 분산하는 것이 가능하기 때문이다. 한 대의 서버에 각기 다른 포트 번호를 부여하여 다수의 서버 프로그램을 운영하는 경우라면 최소 L4 로드밸런서 이상을 사용해야만 한다.

L4? L7?

네트워크 통신 시스템은 크게 일곱 가지의 계층(OSI 7 layers, 개방형 통신을 위한 국제 표준 모델)으로 나뉜다. 각각의 계층(Layer)이 L1/L2/L3‥‥L7에 해당한다. 상위 계층에서 사용되는 장비는 하위 계층의 장비가 갖고 있는 기능을 모두 가지고 있으며, 상위 계층으로 갈수록 더욱 정교한 로드밸런싱이 가능하다.

AWS

  • 클래식 로드 밸런서(ELB) - L4
  • 애플리케이션 로드 밸런서(ALB) - L7

L4 로드밸런싱과 L7 로드밸런싱

load-balance-3

load-balance-4

L4 vs L7

load-balance-5


로드 밸런서 장애 대비

  • 서버를 분배하는 로드 밸런서에 문제가 생길 수 있기 때문에 로드 밸런서를 이중화하여 대비한다.

Active 상태와 Passive 상태

load-balance-6

  • 시나리오

load-balance-7

  1. 이중화된 Load Balancer들은 서로 Health Check를 한다.
  2. Main Load Balancer가 동작하지 않으면 가상IP(VIP, Virtual IP)는 여분의 Load Balancer로 변경된다.
  3. 여분의 Load Balancer로 운영하게 된다.

참고자료