본문 바로가기

Web/기초

[WEB기초] 로드 밸런서(Load Balancer)

1. 왜 Load Balancer가 필요한가?

Client가 한 두명인 경우에는 Server가 여유롭게 사용자가 원하는 결과를 응답해 줄 수 있다.

출처 : https://nesoy.github.io/articles/2018-06/Load-Balancer

2. Client가 한 두명이 아닌 수천만명이라면?

Server는 모든 사람들의 응답을 해주려고 하지만 결국 동작을 멈추게 될 것이다.

출처 : https://nesoy.github.io/articles/2018-06/Load-Balancer

3. 문제해결을 위한 방법

  • Scale-up  : Server가 더 빠르게 동작하기 위해 하드웨어 성능을 올리는 방법.
  • Scale-out :  하나의 Server보다는 여러대의 Server가 나눠서 일을 하는 방법.

1) Scale-Up(스케일 업)

- 데이터의 양이 늘어나거나, CPU 사용율이 높아지거나, 메모리가 부족할 때, ... 서버의 크기(용량)을 증가(고성능 장비로 대체하는 것)

- 프로그램 코드를 재작성하거나, 시스템 구성(아키텍쳐)를 변경할 필요가 없어 쉬워 보이지만 비용이 많이 발생한다.

- 가장 큰 문제는 비용 대비 효과가 낮다.

출처 : https://www.slideshare.net/sunnykwak90/scale-up-and-scale-out

2) Scale-Out(스케일 아웃)

- 사용 중인 장비(하드웨어)를 대용량의 장비로 교체하는 것이 아니라, 같은 수준이거나 낮은 장비 여러 대로 재구성하는 방식(아마존 웹서비스(AWS), 구글 클라우드, MS Asure 등의 클라우드 서비스에서 권장하는 서버 확장 방안)

- 비교적 저렴한 다수의 서버로 구성하기 때문에 비용이 절감되고, 만일 일부 서버(노드)의 장애가 발생하더라도 전체 서비스가 중단되는 치명적 문제(critical issue)를 방지할 수 있으며, 추가 확장도 용이하다.

- 시스템 설계 및 운영을 담당하는 엔지니어가 분산처리에 대한 경험과 노하우를 가지고 있어야 하며, 필요 시 소프트웨어 코드 및 설계를 변경해야만 한다.(처음부터 분산환경에 맞추어 설계하지 않으면, 스케일 아웃으로 재구성하기 매우 어렵다.)

출처 : https://www.slideshare.net/sunnykwak90/scale-up-and-scale-out

3) Scale-Down(스케일 다운), Scale-In(스케일 인)

- 서버의 용량을 늘리기 위한 방법이 스케일 업(Scale-Up)과 스케일 아웃(Scale-Up)이라면, 반대의 경우는 스케일 다운(Scale-Down)과 스케일 인(Scale-In)이라고 부른다.

출처 : https://www.slideshare.net/sunnykwak90/scale-up-and-scale-out

* 참고

- 처리(혹은 저장)하는 데이터 크기릐 최대 용량을 충분히 예측할 수 있고 사용자 수가 일정하거나, 혹은 작은 규모의 팀(혹은 조직)에서 사용한다면 굳이 서버 증설을 고민할 필요가 없다.(다른 문제를 깊이 고민하는 것이 낫다.)

- Scale-Out(스케일 아웃)을 적용하기 위해서는 분산 처리에 대한 이론적 지식과 실무 경험이 필요하고, 그에 따른 소프트웨어 설계 및 각종 설정 작업이 필요하다.

- 클라우드 환경 및 대규모 서비스를 환경에서 '스케일 아웃' 구조는 가장 권장하는 방법이지만, 항상 옳은 것은 아니다.

(네트워크, 서버 설계 및 소프트웨어 변경 비용이 더 클 수도 있다.)

- 대규모 서비스를 지향하지만, 근시일(예를 들어 1년 내) 내에 성능 문제에 봉착할 것으로 예상되지 않는다면, 충분한 시간을 가지고 고민하고 경험과 지식을 쌓는 것이 낫다.

 

4. Load Balancing이란

- 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스이다.

4.1 주요기능

  • NAT(Network Address Translation)
    • 사설 IP 주소를 공인 IP 주소로 바꾸는 데 사용하는 통신망의 주소 변조기이다.
  • Tunneling
    • 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념이다.
    • 데이터를  캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제할 수 있다.
  • DSR(Dynamic Source Routing protocol)
    • 로드 밸런서 사용 시 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP 주소가 아닌 클라이언트의 IP 주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를  찾아가는 개념이다.

출처 : https://nesoy.github.io/articles/2018-06/Load-Balancer

4.2 Architecture

출처 : https://nesoy.github.io/articles/2018-06/Load-Balancer

4.3 종류는 어떤 것이 있을까?

L2

  • Mac주소를 바탕으로 Load Balacing 한다.

L3

  • IP주소를 바탕으로 Load Balancing 한다.

L4

  • Trasport Layer(IP와 Port) Level에서 Load Balancing을 한다.
  • TCP, UDP

출처 : https://nesoy.github.io/articles/2018-06/Load-Balancer

L7

  • Applicatno Layer(사용자의 Request) Level에서 Load Balancing을 한다.
  • HTTP, HTTPS, FTP

출처 : https://nesoy.github.io/articles/2018-06/Load-Balancer

  • HTTP

출처 : https://nesoy.github.io/articles/2018-06/Load-Balancer

- X-Forwarded-For : HTTP 또는 HTTPS 로드 밸런서를 사용할 때 클라이언트의 IP주소를 식별하는 데 도움을 준다.

- X-Forwarded-Proto : 클라이언트가 로드 밸런서 연결에 사용한 프로토콜(HTTP 또는 HTTPS)을 식별하는 데 도움을 준다.

- X-Forwarded-Port : 클라이언트가 로드 밸런서 연결에 사용한 포트를 식별하는 데 도움을 준다.

 

4.4 Load Balancer의 Server 선택 기준

  • Round Robin
    • 연결되어 있는 모든 서버에 동일한 세션을 라우팅
    • 모든 서버의 연결 세션 갯수가 거의 비슷하게 됨
    • 시분할 시스템을 위해 설계된 선점형 스케줄링의 하나로서, 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위(Time Quantum)로 CPU를 할당하는 방식의 CPU스케줄링 알고리즘이다.

ko.wikipedia.org/wiki/%EB%9D%BC%EC%9A%B4%EB%93%9C_%EB%A1%9C%EB%B9%88_%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81

 

라운드 로빈 스케줄링 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

  • Least Connections
    • 연결 개수가 가장 적은 서버를 선택하는 방식
    • 트래픽으로 인해 세션이 길어지는 경우 권장하는 방식
    • 모든 서버의 Active 연결 세션이 거의 비슷하게 됨
  • Hash(Source)
    • 사용자의 IP를 Hasing하여 분배하는 방식
    • 사용자는 항상 같은서버로 연결되는 것을 보장
    • 세션의 유지가 가능하지만 서버의 연결 세션 갯수에 불균형이 발생할 수 있음

4.5 Load Balancer 장애대비

  • Load Balancer를 이중화하여 장애를 대비할 수 있다.

출처 : https://nesoy.github.io/articles/2018-06/Load-Balancer

  • 장애 났을 경우 

출처 : https://nesoy.github.io/articles/2018-06/Load-Balancer

- 이중화된 Load Balancer들은 서로 Health Check

- Main Load Balancer가 동작하지 않으면 가상IP(VIP, Virtual IP)는 여분의 Load Balancer로 변경

- 여분의 Load Balancer로 운영

 

 

 

 

 

 

 

출처

www.slideshare.net/sunnykwak90/scale-up-and-scale-out

 

Scale up and scale out

서버 아키텍처 용어 정리 Scale Up, Scale Down, Scale In, Scale Out

www.slideshare.net

nesoy.github.io/articles/2018-06/Load-Balancer

 

로드 밸런서(Load Balancer)란?

 

nesoy.github.io

 

'Web > 기초' 카테고리의 다른 글

[WEB기초] web.xml  (0) 2021.01.10
[WEB기초] Servlet이란  (0) 2021.01.10
[WEB기초] 소켓, 서킷, 패킷, TCP/IP 통신  (0) 2020.12.13
[WEB기초] DNS  (0) 2020.12.12
[WEB기초] CGI(공용 게이트웨이 인터페이스)  (0) 2020.12.12