🖥️ Server: 사용자가 원하는 결과를 여유롭게 응답해줄 수 있음 👍

🖥️ Server: 모든 client들에게 응답해주려고 하지만 너무 힘들어서 동작 중단 👎

Scale-up : Server가 더 빠르게 동작하기 위해 하드웨어 성능을 올리는 방법Scale-out : 하나의 Server가 아닌 여러 대의 Server가 나눠서 일을 하는 방법→ Scale-up보다는 Scale-out을 주로 사용
Scale-out 했을 때 문제Scale-out 방식으로 여러 서버를 두면, 각 서버마다 다른 IP가 필요함.
서버마다 다른 공인 IP 주소를 부여하면, 사용자들마다 각각 다른 IP로 접속할 거고, 운영자가 원하는대로 딱 ! 맞아 떨어지게 부하를 분산하기 어려움 (ㅠㅠ).
1000명의 사용자가 있을 때, 서버 2대에 500명, 500명 접속하지 않고, 한 서버에 999명이, 다른 서버에 1명만이 접속한다면 서버 증설 왜 함 .. ?!
→ 이 때, 여러 대의 Server에 균등하게 Traffic 분산 시켜주는 역할이 Load Balancer

= 컴퓨터 네트워크 기술의 일종
= 여러 개의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에 작업을 나누는 것
= 서버에 가해지는 부하(load)를 분산 시켜 balance를 맞춰주는 기술
= 여러 대의 Server에게 Traffic을 균등하게 분산 시켜주는 역할
Load Balancing (로드 밸런싱) vs Load Balancer (로드 밸런서)
- Load Balancing (로드 밸런싱)
- 여러 서버(리소스) 사이에서 작업 부하를 분산시켜 시스템 전체의 성능을 향상시키는 기술
- ex) 웹 서버 클러스터에 들어오는 웹 요청을 여러 대의 서버로 나누어 처리하여 각 서버의 부하를 균등하게 분산시키는 것
- 장점: 서버 응답 시간 개선, 시스템의 가용성과 안정성 향상
- Load Balancer (로드 밸런서)
- 실제로 로드 밸런싱을 수행하는 장치나 소프트웨어
- 네트워크 트래픽을 받아들이고 이를 여러 대상 서버(리소스)로 분산시킴
- 일반적으로 부하 분산 알고리즘을 사용하여 트래픽을 분배하며, 서버의 상태를 모니터링하고 필요에 따라 서버를 추가하거나 제거하여 최적의 성능 유지
간단히 말해서,
로드 밸런싱 : 작업 부하를 분산시키는 개념,
로드 밸런서 : 이러한 작업을 실제로 수행하는 장치나 소프트웨어

로드 밸런서 == 스위치의 IP 주소 ?
DSR 기술, 즉 특정한 구성 및 네트워크 환경에서 사용될 때만 해당되는 내용.
일반적인 상황에서는 로드 밸런서의 IP 주소 ≠ 스위치의 IP 주소.
둘은 별개의 엔티티로 사용됨.


로드 밸런싱 종류는 OSI 7계층을 기반으로 구분.
이 과정에서 DNS에 대한 요청과 응답 발생.


TLS/SSL Termination 이란?
TLS/SSL 통신이 끝났음을 통보하는 과정으로,
트래픽을 암호화 및 복호화하는 연산으로부터 백엔드 서버를 분리시키기 위한 작업
ex) HTTP/HTTPS 통신
- TCP/UDP Termination 로드 밸런서
- 지연시간 낮음
- TLS Termination: 로드 밸런서가 수행
- TCP/UDP Passthrough 로드 밸런서
- 연결 추적과 NAT를 수행한 뒤 각 연결에 대한 패킷을 백엔드로 전달
- TLS Termination 사용 X
→ 로드 밸런서에 가해지는 부하 적음
→ 훨씬 더 많은 연결 및 패킷 처리 가능- Termination과 다르게 DSR 가능


L4 Load Balancer vs L7 Load Balancer
(1)
L4 Load Balancer = 단지 부하를 분산시키는 것
L7 Load Balancer = 여러 개의 작은 서비스를 운영하고, 요청을 각각의 서버에 분산 (MSA)
ex) L7에서는 결제만 담당하는 서버, 회원가입만을 담당하는 서버 등으로 분리해 가볍고 작은 단위로 여러 개의 서비스를 운영하고, 요청을 각 서버에 맞게 분산시킴(2)
L7 Load Balancer
- L4와 달리, 데이터를 분석해서 처리할 수 있음
- 장점: 악의적이거나 비정상적인 콘텐츠 감지를 통한 보안 지점 구축 가능
- 단점: 자원 소모가 큼
L4 Load Balancer 와 L7 Load Balancer 가 가장 많이 사용되는 이유
L4 Load Balancer 부터 Port 번호를 바탕으로 부하를 분산하는 것이 가능하기 때문!
L4 Load Balancer는 4계층 이하 모든 계층의 정보를 가지기 때문에 IP 주소와 Port 번호를 활용 가능
→ 즉, 한 대에 서버에 각기 다른 Port 번호를 부여해 다수의 서버 프로그램을 운영하는 경우라면 최소한 L4 Load Balancer를 사용해야만 함.L7 Load Balancer는 HTTP Header, Cookie 등과 같은 사용자의 Request를 기준으로 특정 서버에 트래픽을 분산하는 것이 가능!
패킷의 내용을 확인해서 그 내용에 따라 트래픽을 특정 서버에 전송하는 것이 가능하기 때문에 클라이언트의 요청을 보다 세분화해 서버에 전달할 수 있음.
또한, L7 Load Balancer는 서버의 응답까지도 알고 분석할 수 있음!
서버들로부터 필요한 정보를 응답 받아 클라이언트의 요청을 전달하기 전에 서버의 상태를 파악한 후 로드밸런싱 진행 가능.
그렇기 때문에 MSA 등장 후 L7 Load Balancer도 많이 사용하고 있음.
| 계층 | 설명 |
|---|---|
| L2 | Data Link 계층 사용 / MAC 주소 기반 Load Balancing |
| L3 | Network 계층 사용 / IP 주소 기반 Load Balancing |
| L4 | Transport 계층 사용 / Port 기반 Load Balancing |
| L7 | Application 계층 사용 / 요청(URL) 기반 Load Balancing |

사용자가 서비스를 요청하면 L4로 전달된 목적지 IP 주소를 real server IP 주소로 변조하고
MAC 주소를 변조해서 목적지를 찾아가는 방식
(출발지(source) MAC 주소는 변조 X ← 동일 네트워크 대역)
Bridge/Transparent Mode와 유사하지만 출발지(source) MAC 주소도 변조되는 방식
사용자가 real server에 접근할 때 목적지 IP는 L4 스위치 IP를 바라봄.
L4에 도달하면 L4가 클라이언트에게 받은 목적지 IP 주소를 L4 IP 주소에서 real server IP와 real server MAC 주소로 변조하고, 되돌아가는 IP는 L4의 IP pool의 IP 주소로 변조하는 방식
사용자가 real server에 접근할 때 출발지와 목적지의 IP 주소를 변조하지 않고,
L4에서 관리하는 real server의 MAC 주소 테이블을 확인해서 MAC 주소만 변조하는 방식
Load Balancer 를 이중화하여 장애를 대비할 수 있음
