Home [Network] 로드 밸런싱(Load Balencing)
Post
Cancel

[Network] 로드 밸런싱(Load Balencing)

개요

안녕하세요.

이번 글에서는 로드 밸런싱에 대해 정리했습니다.


로드 밸런싱 개요

로드 밸런싱 개념

로드 밸런싱은 로드를 분산시킨다는 개념입니다.

풀어 설명하자면 “자원이나 서버에 부여되는 부하를 균등하게 분배한다”는 이야기입니다.

그렇다면 부하가 높아질 때, 취할 수 있는 조치에는 어떤 것이 있을까요??

대표적으로 스케일 업(Scale-up)과 스케일 아웃(Scale-out)이 존재합니다.

스케일 업과 스케일 아웃 [그림 1] 스케일 업과 스케일 아웃

스케일 업은 성능 자체의 확장을 뜻합니다.

예를 들어 서버의 CPU와 메모리를 업그레이드 시킨다면 이는 스케일 업에 해당합니다.

반면 스케일 아웃은 자원의 수량 확대를 의미합니다.

예를 들어 기존의 서버 1대를 3대로 증설한다면 이는 스케일 아웃입니다.

여기서 스케일 아웃의 경우 트래픽을 여러 자원으로 나눠줘야합니다.

따라서 로드 밸런싱은 스케일 아웃 등으로 분산 처리 시스템이 존재할 때 필수불가결하게 사용됩니다.

로드 밸런싱의 비유 - 인형 공장

인형을 만드는 공장에 가, 나, 다, 라의 라인이 있고 각 라인마다 인형을 만드는 사람이 있습니다.

기존에는 가 라인에만 주문서가 들어가고 인형을 만들었습니다.

가 라인의 사람은 정말 열심히 일했지만 점차 주문서가 쌓이고 만들어지는 인형의 수는 1개 라인의 최대치에 머무르게 됩니다.

가 라인의 사람은 언제 나갈지 모르고 거기에 나머지 라인의 사람들은 놀면서 돈을 받는 상황이 옵니다.

기존 인형 공장 [그림 2] 기존 인형 공장

이를 고민하던 공장장은 라인 앞에 주문서를 나눠주는 기계를 설치합니다.

이 기계는 주문서를 4개 라인에 고르게 전달했고 그 덕분에 들어오는 주문에 맞게 인형을 만들 수 있게 되었습니다!!

새로운 인형 공장 [그림 3] 새로운 인형 공장

위의 예시에서 각 라인은 자원을, 주문서를 부하를, 주문서를 나누는 기계는 로드 밸런서를 의미합니다.

로드 밸런싱의 특징

1. 가용성

트래픽에 대한 고가용성을 확보할 수 있습니다.

트래픽이 폭증하는 상황에서 로드 밸런싱이 이루어진다면 처리가 가능한 자원에 할당하면서 대응 가능합니다.

또한 하나의 서버가 동작하지 않더라도 유연하게 대처 가능합니다.

2. 확장성

확장성을 얻기 용이합니다.

앞서 이야기했듯 스케일 아웃을 도입하면서 로드 밸런싱을 도입하게 됩니다.

따라서 자원의 추가가 용이합니다.

4. 상태 모니터링

로드 밸런싱은 자원에 대한 모니터링을 겸하는 경우가 많습니다.

자원이 비정상적이거나 응답이 없다면 트래픽을 자동으로 다른 자원으로 리디렉션합니다.


로드 밸런싱 구분

OSI 계층에 따라: L4 로드 밸런싱과 L7 로드 밸런싱

로드 밸런싱은 OSI 계층에 따라 L4(전송 계층) 로드 밸런싱과 L7(응용 계층) 로드 밸런싱으로 나뉘어집니다.

참고로 L7 로드 밸런싱은 L4 로드 밸런싱의 기능에 응용 계층의 작업이 더해진 경우가 많습니다.

두 로드 밸런싱은 다음과 같은 차이를 보입니다.

항목L4 로드 밸런싱L7 로드 밸런싱
기준IP, 포트IP, 포트, 애플리케이션 컨텐츠
컨텐츠 기반 라우팅미지원지원
장점패킷 레벨에서 분산하므로 빠르고 효율적이며 저렴함상위 계층에서 분산하므로 다양한 기준으로 라우팅 가능
단점사용자의 IP가 수시로 바뀐다면 연속적인 서비스 어려움패킷 내용을 복호화해야하므로 비쌈

로드밸런싱의 알고리즘

그렇다면 어떤 방법으로 부하를 분산할까요??

대표적인 알고리즘은 다음과 같습니다.

1. 라운드로빈 방식(Round Robin Method)

요청을 순서대로 돌아가며 배정합니다.

여러 자원이 동일한 스펙을 갖고 있고, 자원과의 연결(세션)이 오래 지속되지 않는 경우에 적합합니다.

예를 들어 1번째 요청은 A 서버, 2번째 요청은 B 서버, 3번째 요청은 다시 A 서버와 같은 방식입니다.

2. 가중 라운드로빈 방식(Weighted Round Robin Method)

각각의 자원마다 가중치를 매기고 가중치가 높은 자원에 요청을 우선적으로 배분합니다.

주로 요청의 트래픽 처리 능력이 상이한 경우 사용되는 부하 분산 방식입니다.

예를 들어 A 서버의 가중치가 2, B 서버의 가중치가 4라고 가정하겠습니다.

라운드 로빈을 통해 요청을 분배하다가 A 서버가 2개의 요청을 처리하는 중이라면 이후에는 B 서버에 연결합니다.

3. 최소 연결 방식(Least Connection Method)

요청이 들어온 시점에 가장 적은 연결상태를 보이는 자원에 우선적으로 배분합니다.

세션이 자주 길어지거나 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식입니다.

예를 들어 A 서버에서 3개의 연결이, B 서버에서 6개의 연결이 유지 중이라고 가정하겠습니다.

새로운 요청이 들어온다면 이 요청을 A 서버에 분배합니다.

4. IP 해시 방식(IP Hash Method)

클라이언트의 IP 주소를 특정 자원에 매핑하여 요청을 처리하는 방식입니다.

사용자의 IP를 해싱해 로드를 분배하기 때문에 사용자가 항상 동일한 자원으로 연결되는 것을 보장합니다.

예를 들어 특정 서버와의 세션을 유지해야하는 서비스를 운영한다고 가정하겠습니다.

새로운 IP로부터 요청이 들어온다면 A 서버에 분배합니다.

이후에도 동일한 IP의 요청은 A 서버로 분배합니다.

5. URL 스위칭 방식(URL Switching Method)

특정 하위 URL들을 특정 자원으로 처리하는 방식입니다.

예를 들어 “…/image/apple.jpg”와 같은 URL 주소들은 서버를 거치는 대신 스토리지로 직접 연결할 수 있습니다.


마무리하며

이번 글에서는 로드 밸런싱에 대해 살펴보았습니다.

로드 밸런싱은 늘어난 부하를 처리하는 스케일 업과 스케일 아웃 중 스케일 아웃에서 사용되는 기술입니다.

가용성과 확장성, 보안과 성능을 챙길 수 있습니다.

로드 밸런싱은 어느 OSI 계층에서 동작하는지에 따라 크게 L4와 L7 로드 밸런싱으로 나뉩니다.

마지막으로 로드 밸런싱을 구현하는 알고리즘으로는 라운드 로빈, 가중치 라운드로빈 등 다양하게 존재합니다.

이 글이 조금이나마 도움이 되셨으면 합니다.

감사합니다. 😀


참고 문헌

This post is licensed under CC BY 4.0 by the author.

[Data] [빅데이터를 지탱하는 기술] 정리하기 - 1-4 BI 도구와 모니터링

[Data] 블로그 데이터 파이프라인 만들기 - 01. Google Analytics4

Comments powered by Disqus.