로드 밸런싱이란?
•
로드 밸런싱은 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법이다.
•
많은 양의 트래픽을 처리하기 위해 대부분의 애플리케이션에는 데이터가 중복되는 리소스 서버가 많이 있다.
◦
최신 애플리케이션은 수백만 명의 사용자를 동시에 처리하고 정확한 텍스트, 비디오, 이미지 및 기타 데이터를 빠르고 안정적인 방식으로 각 사용자에게 반환해야 한다.
•
로드 밸런서는 사용자와 서버 그룹 사이에 위치하며 보이지 않는 촉진자 역할을 하여 모든 리소스 서버가 동일하게 사용되도록 하는 디바이스다.
로드 밸런싱의 이점
•
로드 밸런싱은 애플리케이션 서버와 방문자 또는 클라이언트 간의 인터넷 트래픽을 지시하고 제어한다.
•
애플리케이션의 가용성, 확장성, 보안 및 성능이 향상된다.
애플리케이션 가용성
•
서버 장애 또는 유지 관리로 인해 애플리케이션 가동 중지 시간이 늘어 방문자가 애플리케이션을 사용할 수 없게 될 수 있다.
•
로드 밸런서는 서버 문제를 자동으로 감지하고 클라이언트 트래픽을 사용 가능한 서버로 리디렉션하여 시스템의 내결함성을 높인다.
•
로드 밸런싱을 사용하여 다음 태스크를 더 쉽게 수행할 수 있다.
◦
애플리케이션 가동 중지 없이 애플리케이션 서버 유지 관리 또는 업그레이드 실행
◦
백업 사이트에 자동 재해 복구 제공
◦
상태 확인을 수행하고 가동 중지를 유발할 수 있는 문제 방지
애플리케이션 확장성
•
로드 밸런서를 사용하여 여러 서버 간에 네트워크 트래픽을 지능적으로 전달할 수 있다.
•
로드 밸런싱이 다음을 수행하므로 애플리케이션에서 수천 개의 클라이언트 요청을 처리할 수 있다.
◦
한 서버에서 트래픽 병목 현상 방지
◦
필요한 경우 다른 서버를 추가하거나 제거할 수 있도록 애플리케이션 트래픽을 예측
◦
안심하고 조정할 수 있도록 시스템에 중복성을 추가
애플리케이션 보안
•
로드 밸런서에는 인터넷 애플리케이션에 또 다른 보안 계층을 추가할 수 있는 보안 기능이 내장되어 있다.
•
이는 공격자가 서버 장애를 일으키는 수백만 개의 동시 요청으로 애플리케이션 서버를 가득 채우는 분산 서비스 거부 공격을 처리하는 데 유용한 도구다. (DDoS)
•
로드 밸런서는 다음을 수행할 수도 있다.
◦
트래픽 모니터링 및 악성 콘텐츠 차단
◦
공격 트래픽을 여러 백엔드 서버로 자동으로 리디렉션하여 영향 최소화
◦
추가 보안을 위해 네트워크 방화벽 그룹을 통해 트래픽 라우팅
애플리케이션 성능
•
로드 밸런서는 응답 시간을 늘리고 네트워크 지연 시간을 줄여 애플리케이션 성능을 향상시킨다.
•
다음과 같은 몇 가지 중요한 태스크를 수행한다.
◦
서버 간에 로드를 균등하게 배포하여 애플리케이션 성능 향상
◦
클라이언트 요청을 지리적으로 더 가까운 서버로 리디렉션하여 지연 시간 단축
◦
물리적 및 가상 컴퓨팅 리소스의 신뢰성 및 성능 보장
로드 밸런싱 알고리즘
정적 로드 밸런싱
•
라운드 로빈 방식
•
가중 기반 라운드 로빈 방식
•
IP 해시 방식
동적 로드 밸런싱
•
최소 연결 방법
•
가중치 기반 최소 연결 방법
•
최소 응답 시간 방법
•
리소스 기반 방법
로드 밸런싱 기술 유형
하드웨어 로드 밸런서
•
하드웨어 기반 로드 밸런서는 수 기가바이트의 트래픽을 안전하게 처리하고 수백 개의 서로 다른 서버로 리디렉션할 수 있는 하드웨어 어플라이언스다.
•
데이터 센터에 저장하고 가상화를 사용하여 중앙에서 관리할 수 있는 여러 디지털 또는 가상 로드 밸런서를 만들 수 있다.
소프트웨어 로드 밸런서
•
소프트웨어 기반 로드 밸런서는 모든 로드 밸런싱 기능을 수행하는 애플리케이션이다.
•
소프트웨어 로드 밸런서를 모든 서버에 설치하거나 완전관리형 타사 서비스로 액세스할 수 있다.
•
오픈소스 로드 밸런서 중 일부
◦
HAProxy : HV, Proxy, TCP/HTTP 로드 밸런싱을 지원하는 제품. Airbnb, Github, naver ncloud에서 사용중.
◦
Seeasaw : 구글에서 GO언어로 개발하였으며, 우분투/데비안과 같은 리눅스 배포판에서도 잘 동작됨. Anycast, DSR을 지원함. 기본적으로 L4 network에서 작동하며, L7에서 로드 밸런싱도 가능함.
◦
KEMP : AWS 또는 Azure와 같은 클라우드 데이터센터에 배포하여 사용 가능함. 무료이지만 사용 수준의 기능을 제공하며 Apple, Sony 등에서 사용함.
◦
Nginx : 기본 수준의 컨텐츠 스위칭 및 여러 서버에 대한 라우팅 지원함.
하드웨어 로드 밸런서와 소프트웨어 로드 밸런서 비교
•
하드웨어 로드 밸런서는 초기 투자, 구성 및 지속적인 유지 관리가 필요하다.
◦
최대 용량으로 하드웨어 로드 밸런서를 사용하지 않을 수도 있다.
◦
특히 피크 시간 트래픽 급증을 처리하는 용도로만 하드웨어 로드 밸런서를 구매하는 경우 더욱 그렇다.
◦
트래픽 볼륨이 현재 용량을 초과하여 급증하면 다른 로드 밸런서를 구매하여 설정할 수 있을 때까지 사용자에게 영향이 있다.
•
반대로 소프트웨어 기반 로드 밸런서는 훨씬 더 유연하다.
◦
쉽게 scale-up하거나 scale-out할 수 있으며 최신 클라우드 컴퓨팅 환경과 더 잘 호환된다.
◦
시간이 지남에 따라 설정, 관리 및 사용하는 데 드는 비용도 줄어든다.
Scale-up, Scale-out
Scale-up
•
Scale-up의 경우 서버 자체의 성능을 확장하는 것을 의미한다.
◦
비유하자면 CPU가 i3인 컴퓨터를 i7으로 업그레이드하는 것과 같다.
Scale-out
•
Scale-out의 경우 기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 것을 의미한다.
◦
비유하자면 CPU가 i3인 컴퓨터를 여러 대 추가 구입해 운영하는 것과 같다.
•
Scale-out 방식으로 서버를 증설하기로 결정했다면 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드 밸런싱이 반드시 필요하다.
L4 로드 밸런싱과 L7 로드 밸런싱
L4 로드 밸런싱
•
L4 로드 밸런서는 네트워크 계층(IP, IPX)이나 트랜스포트 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산한다.
•
IP 주소나 포트 번호, MAC 주소, 전송 프로토콜에 따라 트래픽을 나누는 것이 가능하다.
L7 로드 밸런싱
•
L7 로드 밸런서의 경우 애플리케이션 계층(HTTP, FTP, SMTP)에서 로드를 분산하기 때문에 HTTP 헤더, 쿠키 등과 같은 사용자의 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능하다.
•
쉽게 말해 패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능하다.
•
위 그림과 같이 URL에 따라 부하를 분산 시키거나, HTTP 헤더의 쿠키값에 따라 부하를 분산하는 등 클라이언트의 요청을 보다 세분화해 서버에 전달할 수 있다.
•
또한 L7 로드 밸런서의 경우 특정한 패턴을 지닌 바이러스를 감지해 네트워크를 보호할 수 있으며, DoS/DDos와 같은 비정상적인 트래픽을 필터링할 수 있어 네트워크 보안 분야에서도 활용되고 있다.