로드 밸런싱 (Load Balancing)
로드 밸런싱은 분산식 웹 서비스로, 네트워크 트래픽이나 어플리케이션의 요청을 여러 서버에 균등하게 분배하는 프로세스를 의미한다(= Scale-out). 즉, Load Balancer를 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜주는 방식이다. 서비스를 운영하는 사이트의 규모에 따라 웹 서버를 추가로 증설하면서 로드 밸런서로 관리해주면 웹 서버의 부하를 해결할 수 있다.
Scale-up & Scale-out
Scale-up : 하드웨어의 성능을 올리는 것
Scale-out : 여러 대의 서버가 나눠서 일하도록 만드는 것
로드 밸런싱의 주요 목적
- 서버의 부하 분산
- 시스템의 가용성과 신뢰성 향상
- 응답 시간 줄이기
L4 로드 밸런싱 & L7 로드 밸런싱
L4 로드 밸런싱
- 전송 계층에서 동작하며, 주로 IP 주소와 포트 번호를 기반으로 트래픽을 분산시킨다.
- 클라이언트 요청을 다양한 서버로 전달하기 전에 클라이언트와 서버 간의 연결을 수립한다.
- 네트워크 계층에서 동작하기 때문에 TCP 및 UDP와 같은 전송 계층 프로토콜을 사용하여 트래픽을 로드 밸런싱한다.
- 서버의 상태를 고려하지 않고, 단순히 연결을 받아들이고 트래픽을 분산시키는 역할을 한다.
L7 로드 밸런싱
- 응용 계층에서 동작하며, 네트워크 패킷의 페이로드, HTTP 헤더, URL 등과 같은 상위 계층 정보를 기반으로 트래픽을 분산시킨다.
- 클라이언트 요청을 받아들이고 요청을 분석하여 최적의 서버로 라우팅한다.
- HTTP, HTTPS, SMTP, FTP 등과 같은 프로토콜에서 작동하며, 요청의 내용과 응답에 따라 트래픽을 분산시킨다.
- 로드 밸런서가 클라이언트와 서버 간의 연결을 설정하는 것 외에도 세션 유지, 로드 밸런서 기반의 SSL 종료, 캐싱, 압축 등의 기능을 제공할 수 있다.
로드 밸런싱 방법
1. Round Robin
- 각 서버에 순서대로 요청을 분배하는 방식
- 모든 서버가 동일한 용량을 가지고 있을 때 잘 작동
2. 최소 연결 (Least Connections)
- 가장 적은 연결을 가진 서버에 요청을 할당하는 방식
- 서버 간에 성능 차이가 클 때 유용하게 사용
- 트래픽으로 인해 세션이 길어지는 경우 권장
3. IP Hash
- 클라이언트의 IP 주소를 해싱하여 특정 서버에 요청을 할당하는 방식
- 특정 사용자가 항상 같은 서버로 연결되는 것을 보장하기 때문에 사용자 세션을 유지해야 하는 경우에 유용
4. Weighted Round Robin 또는 Weighted Least Connections
- 서버마다 가중치를 부여하여 더 높은 성능의 서버에 더 많은 요청을 분배하는 방식
5. 대역폭 (Bandwidth) 기반
- 서버들과의 대역폭을 고려하여 트래픽을 분산하는 방식
로드 밸런서 장애를 대비하는 방법
1. 로드 밸런서 서버 이중화
로드 밸런서 이중화를 적용하여, 주 로드 밸런서에 장애가 발생하면 대기 중인 다른 로드 밸런서가 작동하도록 설정할 수 있다. 이는 'Active-Passive' 또는 'Active-Active' 방식으로 구성할 수 있다.
- Active-Passive : 한 로드 밸런서(Active)가 정상 작동중이며, 다른 로드 밸런서(Passive)는 장애가 발생했을 때만 작동한다. Active 로드 밸런서에 문제가 발생하면, Passive 로드 밸런서가 트래픽을 인수하여 서비스 중단을 방지한다.
- Active-Active : 두 개 이상의 로드 밸런서가 동시에 트래픽을 처리한다. 한 로드 밸런서에 장애가 발생하면, 다른 로드 밸런서가 그 트래픽을 인수한다.
2. Health Check (상태 확인)
Health Checks는 로드 밸런서가 관리하는 여러 서버의 상태를 정기적으로 체크한다는 것으로 이를 통해 서버의 장애를 빠르게 감지하고, 해당 서버로의 트래픽을 중단하도록 설정할 수 있다.
'Computer Science > Network' 카테고리의 다른 글
[Network] TSL/SSL HandShake (0) | 2023.07.07 |
---|---|
[Network] HTTP & HTTPS (0) | 2023.07.07 |
[Network] 대칭키 & 비대칭키 (0) | 2023.07.07 |
[Network] UDP (User Datagram Protocol) (0) | 2023.06.30 |
[Network] TCP/IP 흐름제어 & 혼잡제어 (0) | 2023.06.30 |