본문 바로가기
Study/Server

로드 밸런서(Load Balancer)

by 오늘만 사는 여자 2020. 2. 5.
728x90
반응형

왜 Load Balancer가 필요할까?

 

  • Server는 여유롭게 사용자가 원하는 결과를 응답 해줄 수 있다.

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

  • Server는 모든 사람들의 응답을 해주려고 노력하지만 결국엔 지치게 되어 멈추게 되어있다.

문제를 해결하기 위해선?

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

Scale-out의 장점은? 

  • 하드웨어 향상하는 비용보다 서버 한대 추가 비용이 더 적다. 

  • 여러 대의 Server 덕분에 무중단 서비스를 제공할 수 있다.

여러 대의 Server에게 균등하게 Traffic을 분산시켜주는 역할을 하는것을 LoadBalancer입니다.

 

Load Balancing이란?

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

주요 기능은 어떤게 있을까?

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

 

Architecture      

종류는 어떤 것이 있나?

L2

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

L3

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

L4

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

L7

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

HTTP

  • X-Forwarded-For
    - HTTP 또는 HTTPS로드 밸런서를 사용할 때 클라이언트의 IP 주소를 식별하는 데 도움을 준다. 
  • X-Forwarded-Proto
    - 클라이언트가 로드 밸런서 연결에 사용한 프로토콜(HTTP 또는 HTTPS)을 식별하는 데 도움을 준다. 
  • X-Forwarded-Port
    - 클라이언트가 로드 밸런서 연결에 사용한 포트를 식별하는 데 도움을 준다.

Load Balancer는 어떤 기준으로 Server를 선택할까?

  • Round Robin
    -단순힌 Round Robin으로 분산하는 방식
  • Least Connections
    - 연결 개수가 가장 적은 서버를 선택하는 방식
    - 트래픽으로 인해 세션이 길어지는 경우 권장하는 방식
  • Source
    - 사용자의 IP를 Hashing하여 분배하는 방식
    - 사용자는 항상 같은 서버로 연결되는 것을 보장 

Load Balancer 장애 대비는 어떻게 하느냐?

  • Load Balancer를 이중화하여 장애를 대비

장애가 났을 경우 시나리오 

- 이중화된 Load Balancer들은 서로 Health Check를 한다.

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

- 여분의 Load Balancer로 운영하게 된다.

Reference

 

HAProxy 와 Nginx 의 로드밸런싱

NGINX Nginx 는 대표적인 웹서버인 Apache 의 문제점을 해결하면서 만들어진 웹서버로 비동기 방식으로 개발되어 가볍고 빠른 것으로 유명한 오픈소스 어플리케이션이다. Nginx 는 http 나 reverse proxy 같은 기능 외에도 load balancer 기능 또한 강력하다. # Load Balancing upstream target-server { least_conn; server [서버주소1] weight=5 max_fails=3 fai

seokjun.kim

 

728x90
반응형

댓글