# Load Balancer
서버의 부하를 분산시키는 서비스이다.
즉, 여러 대의 서버를 두고 트래픽을 분산시켜 각 서버에 주어지는 부하를 줄이는 서비스이다.
또한, 외부의 공격(DDoS 등)으로 부터 안전하다.
각 Server 앞에 LB를 두고 공인 IP를 설정, Client의 모든 요청을 LB가 받기 때문에 실제 Server들은 사설 IP를 갖게 된다.
그렇기에 외부에서는 서버의 IP를 알 수 없고 서버에 직접 접속할 방법이 사라지게 되어 안전해진다.
대표적으로 L4, L7 Load Balancer가 있다.
## Load Balancing Algorithm
Round Robin
- sever에 들어온 요청을 순서대로 돌아가며 배정하는 방식이다.
- client의 요청을 순서대로 분배하기에 각 server가 동일한 스팩을 갖고 있다.
- server와 세션이 오래 지속되지 않는 경우에 활용하기에 적합하다.
Weighted Round Robin
- 각 server마다 가중치를 매기고 가중치가 높은 서버를 우선적으로 배정하는 방식이다.
- server마다 처리 성능이 상이한 경우 사용하는 방식이다.
IP Hash
- client의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식이다.
- 사용자의 IP를 해싱하여 분배하기에 사용자는 항상 동일한 서버로의 연결을 보장받는다.
Least Connection
- 요청이 들어온 시점에 가장 적은 연결 상태를 보이는 server에 트래픽을 분배한다.
- 세션이 길어지거나, 트래픽이 일정하지 않은 경우 적합하다.
Least Reponse Time
- server의 현재 연결 상태와 응답 시간을 고려하여 트래픽을 분배한다.
- 가장 적은 연결 상태와 가장 짧은 응답 시간을 보이는 서버에 우선적으로 분배한다.
## L4 Load Balancer
L4 로드밸런서는 네트워크 계층(IP, IPX)이나 트랜스포트 계층(TCP, UDP)의 정보를 바탕으로 트래픽을 분산한다.
IP 주소, Port 번호, MAC 주소 등에 따라 트래픽을 분배할 수 있다.
### NAT
Network Address Translation : 네트워크 주소 변환
IP 패킷의 TCP/UDP 포트 숫자와 출발지 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고받는 기술
즉, 네트워크 망을 이동하면서 Router와 같은 IP를 변형시킬 수 있는 네트워크 장비에 의해 출발지 혹은 목적지 IP가 변화하는 것을 의미한다.
L4에서 NAT이 필요한 이유는 다음과 같다.
모든 요청 자체는 L4가 받지만 실제 처리는 뒷 단의 각 Server에서 수행된다.
Client들이 L4의 VIP(Virtual Server IP)로 접속하면 L4는 실제 요청을 수행할 Server IP로 변경이 필요하다.
## L7 Load Balancer
L7 로드밸런서는 애플리케이션 계층(HTTP, FTP, SMTP 등)에서 트래픽을 분산한다.
그렇기에 HTTP Header, Cookie 등과 같은 사용자의 요청을 기준으로 트래픽 분산이 가능하다.
즉, 패킷의 내용을 확인하고 그 내용에 따라 분배하는 것이다.
패킷을 확인하기에 특정 패턴을 지닌 바이러스를 감지하여 네트워크를 보호할 수 있고,
DoS/DDoS와 같은 비정상적인 트래픽을 필터링할 수 있어 네트워크 보안 분야에서 활용된다.
### L4 vs L7
참고
'Develope > Network' 카테고리의 다른 글
[Network] DNS (0) | 2022.11.02 |
---|---|
[Network] TCP & UDP (0) | 2022.11.02 |
[Network] OSI 7 Layers (0) | 2022.08.12 |