본문 바로가기
Programing/Network

[Network] Load Balancing (로드밸런싱)

by 꾸압 2022. 8. 2.

 

<설명>

  - Server에 가해지는 부하(load) 를 분산(balancing) 하는 장치 또는 기술

  - client와 server pool(분산 network를 구성하는 서버들의 그룹) 사이에 위치

  - 서버 1대에 트래픽이 집중되어(client의 request 폭증) load가 걸리지 않도록 관리

 

이미지 출처 : 가비아

 


 

<주요 기능>

1) Health Check

  - Server들 (혹은 다음 Node)을 주기적으로 Health Check 하며 Server 장애 여부를 판단

  - 이를 통해 Server 몇 대에 이상이 생겨도 정상 Server로 Traffic을 넘기는 Fail-over 가 가능

  - TCP/UDP 분석이 가능하여 Firewall 역할도 수행

  - [Layer Check 방법]

    ==> L3 Check : ICMP를 통해 Server의 IP 주소가 통신 가능 상태인지 파악

    ==> L4 Check : TCP의 3 Way-Handshaking 을 기반으로 서버 상태 파악

    ==> L7 Check : 실제 웹페이지 (/index.html 등)에 통신하여 이상 유무 파악

 

    2) NAT (Network Address Translation)

  - 내부 Network에서 사용하던 Private IP를 Load Balancer 외부의 Public IP로 변환 (반대도 가능)

    ==> 여러개의 Host가 1개의 public IP 주소(VIP) 를 통해 접속하는게 목적

 

    3) Tunneling : Data를 캡슐화하여 연결된 Node만이 캡슐을 해제 가능케 함.

 

    4) DSR (Dynamic Source Routing protocol) :

      ==> Server에서 Client로 request에 응답할 때, 목적지를 Client롤 설정 후 Load Balancer가 아닌 바로 Client의 IP로 찾아가게 함(request)

      ==> 이를 통해 Load Balancer 의 부하를 감량

 


 

<TMI>

이미지 출처 : 가비아

  - Scale up 은 서버 자체의 성능을 증가. ssd => m.2 되는 느낌

  - Scale out 은 기존 서버와 동일 or 낮은 스펙의 서버를 2개 이상 증설하여 운영.

    ==> 1대의 Server에 각기 다른 Port 번호를 부여하여 다수의 프로그램을 운영할 때(Scale out), L4 가 적합

 


 

<장점>

  - 고가의 Server로 확장하지 않고 저렴한 cost로 여러 Server를 증설. cost를 대폭 절감.

  - 1대 Server에 몰리는 Traffic 분산 가능

  - 1대의 Server에서 장애가 발생한들 Service 중단 없이 다른 Server로 적절히 자동 분배하여 Service를 계속 운용 가능케 함.

  - 미래에 사용량이 많아져 Server를 확장할 때, Service 중단없이 Server 증설 가능

 


 

<Load Balancing 알고리즘>

==> Load Balancer 가 Server를 선택하는 방법

 

  - 라운드로빈 (Round Robin Method)

    * Server에 들어온 요청을 순서대로 돌아가며 배정.

    * Client의 요청을 순서대로 분배하기에 여러 대의 Server가 동일한 스펙을 가지며, Server와의 연결(Session)을 짧은 시간 쓴다면 유용

 

  - 가중 라운드로빈 (Weighted Round Robin Method)

    * 각 Server 마다 가중치를 매기고, 가중치가 높은 Server에 Client 요청을 우선 배분.

    * Server Traffic 처리 능력이 상이한 경우에 사용

      ==> 서버 A에 가중치 5, 서버 B에 가중치 2라면 Loadbalancer는 가중 라운드로빈 방식에 따라 A 서버에 5개, B 서버에 2개의 request를 전달.

 

  - IP 해시 (IP Hash Method)

    * Client의 IP 주소를 특정 Server로 매핑하여 요청 처리

    * User의 IP를 Hashing하여 Load를 분배하기에, User가 항상 동일한 Server로 연결되는 걸 보장

 

  - 최소 연결 (Least Connection)

    * Request가 들어온 시점에서 가장 적은 연결 상태를 보이는 server에 Traffic을 우선 배분

    * Session이 길어지는게 잦거나, Server에 분배된 Traffic들이 일정하지 않을 때 유용

 


 

<L4 vs L7 비교>

이미지 출처 : 가비아

  - L4 loadbalancing :

    * Transport Layer 를 사용

    * Network 계층(IP, IPX)이나 Transport 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산

    * IP 주소, port 번호, MAC 주소, 전송 프로토콜에 따라 Traffic 을 나누는게 가능

 

 

이미지 출처 : 가비아

  - L7 loadbalancing :

    * Application Layer 사용.

    * Application 계층(HTTP, FTP, SMTP) 에서 load를 분산하기에, HTTP 헤더, 쿠키, URL 등의 user 요청을 기준으로 특정 server에 트래픽 분산이 가능

      == > 즉, 패킷 내용 확인 및 그 내용에 따라 load를 특정 server에 분배 가능

    * 특정 패턴을 가진 바이러스를 감지해 network 보호 가능

    * DoS/DDoS 같은 비정상 트래픽 필터링 가능

 


 

<정리 이미지>

이미지 출처 : 가비아

 


 

<출처 1> https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903

<출처 2> https://www.incodom.kr/Load_Balancing

<출처 3> https://deveric.tistory.com/91

<출처 4> https://www.stevenjlee.net/2020/06/30/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%9D%98-%EB%B6%80%ED%95%98%EB%B6%84%EC%82%B0-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1-load-balancing-%EA%B7%B8/

 

 

'Programing > Network' 카테고리의 다른 글

[Network] Autonomous System  (0) 2022.11.20
[Network] Port Forwarding  (0) 2022.08.21
[Network] Topology (토폴로지)  (0) 2022.08.01
[Network] Segmentation (세그멘테이션)  (0) 2022.07.29

댓글