[Server] Load Balancer

YunKwang-You·2021년 11월 8일
3

Server

목록 보기
1/5

우리는 데이터를 주고 받기 위해 Server - Client 구조를 유지해야한다. 이에 따라

이러한 그림이 나올 수 있으며 Client 숫자가 많지 않을 때, Server는 여유롭게 사용자가 원하는 결과를 응답해줄 수 있다.

하지만..

Client가 한 두명이 아닌 수천만명이라면 어떨까?

Server는 모든 Client에게 응답해주기 위해 노력하지만 과부하가 발생한다. 따라서 이를 위해 두 가지 방법을 이용한다.

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

사실상 Scale-Up은 투자를 통해서만 가능하다. 따라서 우리는 Scale-Out 방법을 통해 여러 대의 Server에게 균등하게 Traffic을 분산시켜주기위해 LoadBalancer를 사용한다.

Load Balancing의 주요 기능

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

Load Balancer의 종류

  • L2 : MAC 주소를 바탕으로 로드밸런싱한다.

  • L3 : IP 주소를 바탕으로 로드밸런싱한다.

  • L4 : Transport Layer(IP와 Port) Level에서 로드밸런싱한다.

  • L7 : Application Layer(사용자의 Request) Level에서 로드밸런싱한다.

Load Balancer의 서버 선택 방법

  • Round Robin : 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위(Time Quantum)로 배분하는 알고리즘
  • Least Connections : 연결 개수가 가장 작은 서버를 선택하는 방식 트래픽으로 인해 세션이 길어지는 경우 권장하는 방식
  • Source : 사용자의 IP를 Hashing하여 분배하는 방식. 사용자는 항상 같은 서버로 연결되는 것을 보장한다.

Load Balancer의 장애 대비

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

profile
Network Infra Engineer

0개의 댓글