Search

Load Balancing 기본 개념

주제
DevOps
날짜
2022/11/23

로드 밸런싱이란?

로드 밸런싱은 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법이다.
많은 양의 트래픽을 처리하기 위해 대부분의 애플리케이션에는 데이터가 중복되는 리소스 서버가 많이 있다.
최신 애플리케이션은 수백만 명의 사용자를 동시에 처리하고 정확한 텍스트, 비디오, 이미지 및 기타 데이터를 빠르고 안정적인 방식으로 각 사용자에게 반환해야 한다.
로드 밸런서는 사용자와 서버 그룹 사이에 위치하며 보이지 않는 촉진자 역할을 하여 모든 리소스 서버가 동일하게 사용되도록 하는 디바이스다.

로드 밸런싱의 이점

로드 밸런싱은 애플리케이션 서버와 방문자 또는 클라이언트 간의 인터넷 트래픽을 지시하고 제어한다.
애플리케이션의 가용성, 확장성, 보안 및 성능이 향상된다.

애플리케이션 가용성

서버 장애 또는 유지 관리로 인해 애플리케이션 가동 중지 시간이 늘어 방문자가 애플리케이션을 사용할 수 없게 될 수 있다.
로드 밸런서서버 문제를 자동으로 감지하고 클라이언트 트래픽을 사용 가능한 서버로 리디렉션하여 시스템의 내결함성을 높인다.
로드 밸런싱을 사용하여 다음 태스크를 더 쉽게 수행할 수 있다.
애플리케이션 가동 중지 없이 애플리케이션 서버 유지 관리 또는 업그레이드 실행
백업 사이트에 자동 재해 복구 제공
상태 확인을 수행하고 가동 중지를 유발할 수 있는 문제 방지

애플리케이션 확장성

로드 밸런서를 사용하여 여러 서버 간에 네트워크 트래픽을 지능적으로 전달할 수 있다.
로드 밸런싱이 다음을 수행하므로 애플리케이션에서 수천 개의 클라이언트 요청을 처리할 수 있다.
한 서버에서 트래픽 병목 현상 방지
필요한 경우 다른 서버를 추가하거나 제거할 수 있도록 애플리케이션 트래픽을 예측
안심하고 조정할 수 있도록 시스템에 중복성을 추가

애플리케이션 보안

로드 밸런서에는 인터넷 애플리케이션에 또 다른 보안 계층을 추가할 수 있는 보안 기능이 내장되어 있다.
이는 공격자가 서버 장애를 일으키는 수백만 개의 동시 요청으로 애플리케이션 서버를 가득 채우는 분산 서비스 거부 공격을 처리하는 데 유용한 도구다. (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와 같은 비정상적인 트래픽을 필터링할 수 있어 네트워크 보안 분야에서도 활용되고 있다.

L4 로드 밸런싱 vs L7 로드 밸런싱 요약