2021. 5. 20. 18:59ㆍCS 스터디
1. Load Balancing
1) Load Balancing의 등장 배경
: 수많은 서버 접속자를 감당하기 위하여 서비스를 제공하는 측에서 미리 트래픽을 예측하고, 서버와 네트워크를 증설한다. 특히, 한 서버의 성능을 높이는 Scale-Up 작업은 그 한계가 있으므로 분산 처리를 위해 여러 대의 서버들을 놓게 되는 Scale-Out 작업을 하게 되는데, 이 때 여러 서버들로 대규모의 네트워크 트래픽을 분산 처리하는 기술을 바로 “Load Balacing”이라고 한다.
a. Scale-Up
: 서버 자체를 증강하여 처리 능력을 향상하는 것이다. 수직 스케일이라고 불리기도 한다. SMP(대칭형 멀티 프로세서)에 대해 프로세서를 추가하는 것이나 프로세서 그 자체를 고성능 모델로 옮겨놓는 것을 뜻한다.
b. Scale-Out
: 접속된 서버의 대수를 늘려 처리 능력을 향상시키는 것이다. 수평 스케일로 불리기도 한다. 서버의 가상화 기능을 사용하고 하나의 케이스 내에서 가상적으로 복수 서버를 구축해 스케일 아웃과 동등의 효과를 제공할 수도 있다. 이러한 방식을 특히 스케일 위드인 혹은 가상 스케일 아웃이라고 부른다.

2) Load Balancing이란?
: Load Balancing은 네트워크 또는 서버에 가해지는 부하를 분산해주는 기술을 의미한다. Load Balancing 기술을 제공하는 서비스 또는 장치(Load Balancer)는 클라이언트와 네트워크 트래픽이 집중되는 서버들 또는 네트워크 허브 사이에 위치한다.
3) Load Balancer의 기본 동작 방식
: Load Balancer는 특정 서버 또는 네트워크 허브에 부하가 집중되지 않도록 트래픽을 다양한 방법으로 분산하여 서버나 네트워크 허브들의 성능을 최적인 상태로 유지하는 것을 목표로 한다.

4) Load Balancing의 기본 기능
A. Health Check
: 서버들에 대한 주기적인 Health Check를 통해 장애 여부를 판단할 수 있다. 이로 인해 Load Balancer가 있을 때, 서버 몇 대에 이상이 생기더라도 다른 정상 동작 중인 서버로 트래픽을 보내주는 Fail-over가 가능하며, 또한 TCP/IP 분석이 가능하기 때문에 방화벽의 역할도 수행할 수 있다.
- L3 체크: ICMP를 이용하여 서버의 IP주소가 통신 가능한 상태인지 확인
- L4 체크: TCP는 3way-HandShaking을 기반으로 통신한다. 이러한 TCP의 특성을 바탕으로 각 포트 상태를 체크하는 방식이다.
- L7 체크: 어플리케이션 계층에서 체크를 한다. 즉, 실제 웹 페이지에 통신을 시도하여 이상 유무를 파악한다.
B. Tunneling
: 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념으로, Load Balancer는 클라이언트와 서버 간 중간에서 Tunneling을 제공해 준다. 즉, 연결된 상호 간에만 Encapsulation된 패킷을 구별해 캡슐화를 해제하게 한다.
C. NAT (Network Address Translation)
: IP 주소를 변환해주는 기능이다. 예를 들어, 내부 네트워크에서 사용하던 사설 UP 주소를 Load Balancer 외부의 공인 IP주소로 변경해준다. 이렇게 하면 부족한 공인 IP주소를 효율적으로 사용할 수 있지만, Load Balancing 관점에서는 여러 개의 호스트가 하나의 공인 IP주소(VIP)를 통해 접속하는 것이 주목적이다.
- SNAT: 내부 사설 IP -> 외부 공인 IP로 변환하는 방식, 집에서 사용하는 공유기가 대표적인 예이다.
- DNAT: 외부 공인 IP -> 내부 사설 IP로 변환하는 방식, Load Balancer가 대표적인 예이다.

D. DSR(Direct Server Routing)
: 서버에서 클라이언트로 되돌아가는 경우, 목적지를 클라이언트로 설정한 다음 네트워크 장비나 Load Balancer를 거치지 않고 바로 클라이언트를 찾아가는 방식이다. 이 경우, Load Balancer의 부하를 줄여줄 수 있는 장점이 있다.
5) Load Balancing 종류와 방법
A. L4 Load Balancing (Connection LB or Session LB)
: 네트워크 계층(IP)이나 전송 계층(TCP, UDP)의 정보를 바탕으로 Load를 분산한다. 즉, IP주소나 포트번호, MAC 주소,주소, 전송 프로토콜 등에 따라 트래픽을 나누고 분산 처리하는 것이 가능하다.
- RR 방식: 세션을 각 서버에 순차적으로 맺어주는 방식이다. 단순히 순서에 따라 세션을 할당하므로 경우에 따라 경로별로 같은 처리량이 보장되지 않는다.
- 가중치 및 비율 할당 방식: 서버마다 비율을 설정하고 해당 비율만큼 세션을 맺어주는 방식이다. 예를 들어, 특정 서버의 성능이 월등히 뛰어나다면 해당 서버로 세션을 많이 맺어주도록 가중치를 설정하고 나머지 서버들은 적은 세션이 맺어질 수 있도록 가중치를 설정한다.
- 최소 연결 (Least Connection): 가장 적은 세션을 가진 서버로 트래픽을 보내는 방식이다. (가장 많이 사용됨.)
- Response Time: 가장 빠른 응답 시간을 보내는 서버로 트래픽을 우선 보내주는 방식이다. 각 서버들의 가용한 리소스와 성능, 그리고 처리 중인 데이터 양이 다른 경우 적합한 방식이다.
- Hash 기반 방식: 특정 클라이언트는 특정 서버로만 할당시키는 방식이다. 예를 들어, 특정 IP주소 혹은 포트의 클라이언트들은 특정 서버로만 세션이 맺어지도록 한다. 경로가 보장되며 접속자의 수가 많을수록 분산 및 효율이 뛰어나다.
- 대역폭 기반 방식: 서버들과의 대역폭을 고려하여 트래픽을 분산하는 방식이다.
B. L7 Load Balancing
: L7 Load Balancer는 L4의 Load Balancer의 기능을 포함하고 OSI 7 계층의계층의 프로토콜을 바탕으로도 분산 처리가 가능하다.
- URL 스위칭 방식: 특정 하위 URL들은 서버로 처리하는 방식이다. 예를 들어 “…/James/image”같은 특정 URL을 가진 주소들은 서버가 아닌 별도의 스토리지에 있는 객체 데이터로 바로 연결되도록 구성할 수 있다.
- Context Switching: 클라이언트가 요청한 특정 리소스에 대해 특정 서버 등으로 연결을 해줄 수 있다. 예를 들어, 이미지 파일에 대해서는 확장자를 참조하여 별도로 구성된 이미지 파일이 있는 서버 / 스토리지로 직접 연결해줄 수 있다.
- 쿠키 지속성: 쿠키 정보를 바탕으로 클라이언트가 연결했었던 동일한 서버에 계속 할당해주는 방식이다. 특히 사설 네트워크에 있던 클라이언트의 IP주소가 공인 IP로 치환되어 전송하는 방식을 지원한다.
'CS 스터디' 카테고리의 다른 글
| [CS : OS] 프로세스 & 스레드 (0) | 2021.05.21 |
|---|---|
| [CS : 네트워크] Blocking I/O & Non-Blocking I/O, Synchronous & Asynchronous (0) | 2021.05.20 |
| [CS : 네크워크] HTTP & HTTPS (0) | 2021.05.10 |
| [CS : 네트워크] UDP (0) | 2021.05.10 |
| [CS : 네트워크] 대칭키 & 공개키 (0) | 2021.05.10 |