안녕하세요! 오늘은 로드 밸런서(Load Balancer)에 대해 이야기를 하겠습니다. 오늘날 인터넷 트래픽은 폭발적으로 증가하고 있습니다. 전 세계적으로 수많은 사용자가 동시에 웹 서비스에 접속하면서, 서버에 가해지는 부하도 크게 늘어났습니다. 이러한 상황에서 단일 서버로는 모든 요청을 처리하기 어려워졌고, 여러 대의 서버를 효율적으로 관리할 필요성이 대두되었습니다. 바로 이 지점에서 로드 밸런서가 등장합니다.
로드 밸런서(Load Balancer)란?
로드 밸런서는 들어오는 네트워크 트래픽을 여러 서버에 균등하게 분산시키는 장치 또는 소프트웨어입니다. 로드 밸런서의 주요 목적은 어떤 단일 서버에도 과도한 부하가 걸리지 않도록 하여 전체 시스템의 안정성과 가용성을 보장하는 것입니다.
로드 밸런서의 작동 원리
- 클라이언트가 서비스에 접속 요청을 보냅니다.
- 이 요청은 먼저 로드 밸런서에 도달합니다.
- 로드 밸런서는 미리 정의된 알고리즘에 따라 요청을 처리할 서버를 선택합니다.
- 선택된 서버가 요청을 처리하고 응답을 클라이언트에게 반환합니다.
로드 밸런서의 주요 기능과 장점
로드 밸런싱 알고리즘
로드 밸런서가 트래픽을 분산하는 방식은 여러 가지가 있습니다. 주요 알고리즘은 다음과 같습니다
정적 로드 벨런싱
Round Robin 알고리즘
Round Robin 알고리즘은 요청을 순차적으로 각 서버에 분배합니다. 위 그림에서 볼 수 있듯이, 첫 번째 요청은 Server 1로, 두 번째는 Server 2로, 세 번째는 Server 3로, 그리고 다시 Server 1로 돌아가는 방식입니다.
가중치 로드 밸런싱 (Weighted Load Balancing)
가중치 로드 밸런싱은 각 서버에 가중치를 할당하고, 이 가중치에 비례하여 트래픽을 분산하는 방식입니다. 예를 들어 Server 1과 Server 2 의 가중치를 2:3으로 줬을 경우 Client 5명을 통해 트레픽이 로드밸런서에 들어갈 경우 해당 가중치를 통해 Server 트레픽을 전달시킵니다.
IP Hash 알고리즘
IP Hash 알고리즘은 클라이언트의 IP 주소를 해시하여 특정 서버에 매핑합니다. 이 방식은 같은 클라이언트의 요청이 항상 같은 서버로 전달되도록 보장합니다.
동적 로드 벨런싱
최소 연결 (Least Connections) 알고리즘
최소 연결 알고리즘은 현재 가장 적은 활성 연결을 가진 서버로 새로운 요청을 보냅니다.
최소 응답 시간 로드 밸런싱 (Least Response Time Load Balancing)
최소 응답 시간 로드 밸런싱은 각 서버의 현재 응답 시간을 모니터링하고, 가장 빠른 응답 시간을 보이는 서버로 새로운 요청을 보내는 방식입니다.
로드 밸런싱 계층 종류
흔히 OSI 7Layer를 알고 있을 겁니다. 해당 여러 Layer에서 로드 벨런싱이 가능하지만 일반적으로 L4, L7 를 많이 이용합니다. L4 (Layer 4)와 L7 (Layer 7) 로드밸런싱은 OSI 모델의 네트워크 계층 구조에 기반한 로드 밸런싱 방식입니다. 이들은 각각 전송 계층과 응용 계층에서 작동하며, 네트워크 트래픽을 다르게 처리합니다. 두 방식의 주요 차이점과 각각의 특징을 깊이 있게 설명하겠습니다.
L4 로드밸런싱 (Layer 4 Load Balancing)
L4 로드밸런싱은 전송 계층(Transport Layer)에서 작동합니다. 전송 계층은 IP 주소와 TCP/UDP 포트 번호를 기반으로 네트워크 트래픽을 처리하며, 패킷의 헤더 정보를 분석하여 최종 목적지 서버로 트래픽을 분산합니다.
동작 방식
- TCP/UDP 프로토콜 기반: L4 로드밸런서는 TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol) 등 전송 계층 프로토콜의 정보를 이용하여 트래픽을 분산합니다.
- IP 주소와 포트에 따라 트래픽 분배: L4 로드밸런서는 클라이언트의 IP 주소, 포트 번호, 프로토콜 정보를 기반으로 패킷을 분석합니다. 패킷의 내용을 직접 확인하지 않고, 전달 경로만을 결정하는 것이 특징입니다.
- 연결 중심의 로드 밸런싱: L4 로드밸런서는 하나의 TCP 또는 UDP 연결 세션을 단일 서버에 할당하며, 이 세션이 유지되는 동안 같은 서버로 트래픽이 전달됩니다.
- 간단한 로드 밸런싱 알고리즘: 라운드 로빈(Round Robin), 최소 연결 수(Least Connections), 해시(Hashing) 알고리즘 등이 주로 사용됩니다. 이러한 알고리즘들은 주로 IP, 포트 정보를 기반으로 분배 결정을 내립니다.
장점
- 빠른 처리 속도: 패킷의 헤더 정보만을 기반으로 빠르게 트래픽을 분산하므로 처리 속도가 빠릅니다.
- 효율적인 리소스 사용: L4 로드밸런서는 패킷의 내용을 직접 확인하지 않기 때문에 리소스를 덜 소모합니다.
- 유연한 확장성: 트래픽 양이 많을 때도 성능 저하 없이 쉽게 확장할 수 있습니다.
단점
- 트래픽의 세부 내용 확인 불가: L4 로드밸런서는 전송 계층의 정보만을 분석하므로, HTTP, HTTPS 등의 상위 프로토콜의 세부 내용을 확인하거나 처리하지 못합니다.
- 지능적인 로드 밸런싱 불가: HTTP 상태 코드, 쿠키 등의 세부적인 정보에 기반한 트래픽 분배가 불가능합니다.
L7 로드밸런싱 (Layer 7 Load Balancing)
L7 로드밸런싱은 응용 계층(Application Layer)에서 작동합니다. 응용 계층은 HTTP/HTTPS, FTP, SMTP 등의 프로토콜을 포함하며, 트래픽의 내용, URL, 헤더, 쿠키 등을 분석하여 트래픽을 분산합니다.
동작 방식
- HTTP/HTTPS 기반 트래픽 처리: L7 로드밸런서는 웹 애플리케이션 트래픽을 처리하며, HTTP 또는 HTTPS 요청을 분석하여 트래픽을 분배합니다.
- 콘텐츠 기반 라우팅: L7 로드밸런서는 트래픽의 세부 내용을 기반으로 트래픽을 분배할 수 있습니다. 예를 들어, URL 경로, 쿼리 문자열, 쿠키 정보 등을 기반으로 특정 서버나 서버 그룹에 트래픽을 보낼 수 있습니다.
- 예시: /api로 시작하는 요청은 API 서버로, /static으로 시작하는 요청은 정적 파일 서버로 보낼 수 있습니다.
- 상태 코드 및 세션 기반 로드 밸런싱: L7 로드밸런서는 HTTP 상태 코드나 클라이언트 세션에 기반한 지능적인 트래픽 분배가 가능합니다.
- SSL 종료: L7 로드밸런서는 HTTPS 트래픽의 SSL/TLS 암호화를 해제(SSL termination)하여 백엔드 서버로 평문 데이터를 전달할 수 있습니다.
장점
- 정교한 트래픽 제어: HTTP 헤더, URL, 쿠키, 세션 정보 등을 분석하여 보다 세밀하고 지능적인 트래픽 제어가 가능합니다.
- SSL 종료 기능: SSL 암호화를 로드밸런서에서 처리함으로써 백엔드 서버의 부담을 덜어줄 수 있습니다.
- 상세한 모니터링과 상태 확인: HTTP 상태 코드나 응답 내용을 기반으로 백엔드 서버의 상태를 세밀하게 모니터링할 수 있습니다.
- 컨텐츠 기반 트래픽 분배: 사용자가 요청한 특정 콘텐츠(예: 이미지, 동영상 등)에 따라 특정 서버로 트래픽을 분배할 수 있습니다.
단점
- 높은 리소스 소비: 트래픽의 세부 내용을 분석하고 처리하므로 CPU와 메모리 등의 리소스를 더 많이 소비합니다.
- 복잡성: 설정이 복잡할 수 있으며, 응용 계층에서의 문제 해결이나 트래픽 처리 방식을 이해하는 데 더 많은 노력이 필요합니다.
- 속도 저하 가능성: 트래픽 분석 및 처리 과정이 추가되므로 L4에 비해 처리 속도가 느릴 수 있습니다.
L4와 L7 로드밸런싱의 비교
특징L4 로드밸런싱L7 로드밸런싱
작동 계층 | 전송 계층 (TCP/UDP) | 응용 계층 (HTTP/HTTPS 등) |
기반 정보 | IP 주소, 포트 번호 | URL, HTTP 헤더, 쿠키, 세션 등 |
트래픽 분석 | 패킷 헤더만 분석, 세부 내용은 확인 불가 | 트래픽의 내용(예: URL, 데이터)까지 분석 |
속도 | 빠름 | 상대적으로 느림 |
복잡성 | 설정이 간단함 | 설정이 복잡하고 리소스 소모가 큼 |
적용 예시 | 게임 서버, 데이터베이스 서버, 간단한 웹 서버 | 웹 애플리케이션, API 서버, 전자상거래 사이트 |
Reference
https://www.smileshark.kr/post/what-is-a-load-balancer-a-comprehensive-guide-to-aws-load-balancer
https://aws.amazon.com/ko/what-is/load-balancing/
https://www.ibm.com/kr-ko/topics/load-balancing
'네트워크' 카테고리의 다른 글
MAC(Media Access Control) 주소의 구조와 동작 (10) | 2024.09.16 |
---|---|
VPN(Virtual Private Network)이란? (1) | 2024.09.13 |
NAT(Network Address Translation)란? (2) | 2024.09.10 |
TCP와 UDP개념정리 (UDP 편) (0) | 2024.08.28 |
TCP와 UDP개념정리 (TCP 편) (0) | 2024.08.15 |