본문 바로가기
IT/Server

[Server] What is Load Balancing?

by kyu-nahc 2024. 9. 26.
반응형

Load Balancing

로드 밸런싱애플리케이션을 지원하는

리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법이다.

최신 애플리케이션은 수백만 명의 사용자를 동시에 처리하고 정확한 텍스트, 비디오,

이미지 및 기타 데이터를 빠르고 안정적인 방식으로 각 사용자에게 반환해야 한다.

 

이렇게 많은 양의 트래픽을 처리하기 위해 대부분의 애플리케이션에는

데이터가 중복되는 리소스 서버가 많이 존재한다.

로드 밸런서는 사용자와 서버 그룹 사이에 위치하며 보이지 않는 촉진자 역할을 하여

모든 리소스 서버가 동일하게 사용되도록 하는 디바이스이다.

 

저번 포스트에서 Reverse Proxy에 대해 설명하였는데,

Reverse Proxy의 사용 이유에 로드밸런싱을 명시하였다.

 

[Server] Reverse Proxy / Forward Proxy

Proxy프록시(Proxy)는 클라이언트와 서버 간의 통신을 중계하는 역할을 하는 서버나 소프트웨어이다.클라이언트는 서버에게 직접 요청을 보내지 않고 프록시를 통해 요청을 보낸다.프록시는 해당

kyu-nahc.tistory.com

Reverse Proxy와 로드밸런싱은 구조적으로 유사하고 겉으로 보기에 비슷한 형태이다.

따라서 Reverse Proxy 소프트웨어로 로드밸런싱을 구현할 수 있으며,

Reverse Proxy와 로드밸런싱은 목적과 기능에서만 차이가 존재하는 것이다.

Reverse Proxy는 로드밸런싱의 목적뿐만 아니라,

서버 보안, 캐싱, 암호화와 애플리케이션 관리 등의 목적으로도 사용되며

로드밸런싱의 주된 목적은 부하 분산, 장애 복구, 확장성이다.

따라서 두 개의 기능과 목적의 차이를 이해할 필요가 있다.

 

실제 환경에서 이 두 기능은 종종 함께 사용되며,

많은 리버스 프록시 소프트웨어(Nginx 등)와 클라우드 기반 솔루션(AWS ELB 등)은

로드밸런싱 기능도 함께 제공한다.

 

로드밸런서 아키텍처 / 이점

로드밸런서 아키텍처

로드 밸런서의 아키텍처는 위의 그림과 같다.

로드 밸런서는 클라이언트의 요청 및 네트워크의 트래픽이 집중되는 서버

네트워크 사이에 위치하여, 특정 서버 또는 네트워크 허브에

부하가 집중되지 않도록 트래픽을 분산시키는 역할을 한다.

이를 통해 한 대의 서버로 부하가 집중되지 않도록 다중 트래픽을 관리하여

각각의 서버는 최적의 성능이 나오도록 할 수 있다.

이처럼 로드 밸런싱은 애플리케이션 서버와 클라이언트 간의 인터넷 트래픽을 지시하고 제어한다.

결과적으로 애플리케이션의 가용성, 확장성, 보안 및 성능이 향상되는 결과를 가져온다.

이에 대한 이점을 더 자세히 살펴보면 다음과 같다.

 

애플리케이션 가용성

서버 장애 또는 유지 관리로 인해 애플리케이션 가동 중지 시간이 늘어

방문자가 애플리케이션을 사용할 수 없게 될 수 있다.

로드 밸런서는 서버 문제를 자동으로 감지하고 클라이언트 트래픽을

사용 가능한 서버로 리디렉션 하여 시스템의 내결함성을 높일 수 있다.

로드 밸런싱을 사용하여 다음 태스크를 더 쉽게 수행할 수 있다.

  • 애플리케이션 가동 중지 없이
    애플리케이션 서버 유지 관리 또는 업그레이드 실행
  • 백업 사이트에 자동 재해 복구 제공
  • 상태 확인을 수행하고 가동 중지를 유발할 수 있는 문제 방지

애플리케이션 확장성

로드 밸런서를 사용하여 여러 서버 간에 네트워크 트래픽을 지능적으로 전달 가능하다.

로드 밸런싱이 다음을 수행하므로 애플리케이션에서

수천 개의 클라이언트 요청을 처리할 수 있다.

  • 한 서버에서 트래픽 병목 현상 방지
  • 필요한 경우 다른 서버를 추가하거나 제거할 수 있도록
    애플리케이션 트래픽을 예측
  • 안심하고 조정할 수 있도록 시스템에 중복성을 추가

애플리케이션 보안

로드 밸런서에는 인터넷 애플리케이션에

또 다른 보안 계층을 추가할 수 있는 보안 기능이 내장되어 있다.

이는 공격자가 서버 장애를 일으키는 수백만 개의 동시 요청으로

애플리케이션 서버를 가득 채우는 분산 서비스 거부 공격을 처리하는 데 유용한 도구가 된다.

로드 밸런서는 다음을 수행할 수도 있다.

  • 트래픽 모니터링 및 악성 콘텐츠 차단
  • 공격 트래픽을 여러 백엔드 서버로 자동으로 리디렉션 하여 영향 최소화
  • 추가 보안을 위해 네트워크 방화벽 그룹을 통해 트래픽 라우팅

애플리케이션 성능

로드 밸런서는 네트워크 지연 시간을 줄여 애플리케이션 성능을 향상한다.

다음과 같은 몇 가지 중요한 태스크를 수행한다.

  • 서버 간에 로드를 균등하게 배포하여 애플리케이션 성능 향상
  • 클라이언트 요청을 지리적으로 더 가까운 서버로 리디렉션 하여 지연 시간 단축
  • 물리적 및 가상 컴퓨팅 리소스의 신뢰성 및 성능 보장

이처럼 로드밸런서를 사용하면 여러 가지 이점을 얻을 수 있는데,

이러한 로드 밸런서를 구현하는 알고리즘에 대해 살펴보면 다음과 같다.

 

로드밸런서 알고리즘

라운드로빈 방식

서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식이다.

클라이언트의 요청을 순서대로 분배하기 때문에, 여러 대의 서버가 동일한 스펙을 갖고 있고,

서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합하다.

 

가중 라운드로빈 방식

각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분한다.

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

가중치가 높은 서버는 클라이언트로부터 오는 요청에 대해

애플리케이션 트래픽을 더 많이 수신하게 된다. 즉 A서버의 가중치가 10이고 B가 5라고 하자.

로드 밸런서는 A서버에게 10개의 클라이언트 요청을 전달하고,

B 서버에게는 5개의 요청을 전달한다.

 

IP 해시 방식

클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식이다.

사용자의 IP를 해싱하여, 여러 서버로 분배하기 때문에

클라이언트는 항상 동일한 서버로 연결된다.

즉 클라이언트 IP 주소를 특정 데이터로 변환한 다음 개별 서버에 매핑하게 된다.

 

최소 연결 방식

클라이언트 요청이 들어온 시점에 가장 적은 연결 상태를 보이는

서버에 우선적으로 트래픽을 배분한다.

세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적용한다.

이는 동적 로드 밸런싱 알고리즘으로 트래픽을 배분하기 전에 

서버의 현재 상태를 검사해야 한다. 또한 이 방법에서는 모든 연결에

모든 서버에 대해 동일한 처리 능력이 필요하다고 가정해야 한다.

 

최소 응답 시간 방식

응답 시간은 서버가 들어오는 요청을 처리하고 응답을 전송하는 데 걸리는 총시간이다.

최소 응답 시간 방법은 서버 응답 시간과 활성 연결을 결합하여 최적의 서버를 결정한다.

이 방법 또한 동적 로드 밸런싱으로 트래픽 배분 전 서버의 현재 상태 검사가 필요하다.

 

L4 / L7 로드밸런서

로드밸런싱에는 L4 로드밸런서L7 로드밸런서가 가장 많이 활용된다.

여기서 L4와 L7은 네트워크 통신 시스템에서의 OSI 7 계층 Layer를 뜻한다.

즉 L4는 전송 계층을 사용하고 L7은 응용 계층을 기반으로 로드 밸런싱을 진행한다.

L4와 L7 로드밸런서를 많이 활용하는 이유는 다음과 같다.

L4 로드밸런서부터 포트 정보를 바탕으로 로드를 분산 가능하기 때문이다.

한 대의 서버에 각기 다른 포트 번호를 부여하여 다수의 서버 프로그램을

운영하는 경우라면 최소 L4 로드밸런서 이상을 사용해야만 하는 것이다.

특정 기능이 필요한 것이 아니라면, 초당 연결수(Connections Per Sec), 

동시 연결수(Concurrent Connections)처리용량(Throughput)을 성능 지표로 하여

L4 로드밸런서와 L7 로드밸런서 중 적절히 선택하는 것이 바람직하다.

 

L4 로드 밸런서

네트워크 계층(IP, IPX)이나 전송 계층(TCP, UDP)의 정보를 바탕으로 로드를 분산한다.
즉, IP 주소포트번호MAC 주소, 전송 프로토콜 등에 따라 트래픽을 분산하는 것이 가능하다.

 

L7 로드 밸런서

애플리케이션 계층(HTTP, FTP, SMTP 등)에서 로드를 분산하기 때문에, 

HTTP 헤더쿠키와 같은 사용자 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능하다.

L4 로드밸런서의 기능에 더하여, 패킷의 내용을 확인하고

그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능한 것이다.
또한 특정한 패턴을 지닌 바이러스를 감지해 네트워크 보호가 가능하고,

Dos/DDos 와 같은 비정상적인 트래픽 필터링도 가능하다.

이에 대해 표로 정리하면 다음과 같다.

  L4 로드밸런서 L7 로드밸런서
계층 Layer 4 전송 계층(Transport Layer) Layer 7 응용 계층 (Application Layer)
특징 TCP / UDP Port 정보를 바탕 TCP / UDP + Http URI / FTP / 쿠키 정보 활용
장점 -  패킷 안의 데이터를 보지않고,
   패킷 레벨에서만 로드를 분산하므로
   속도가 빠르고 효율이 좋다.

-  데이터의 내용을
복호화할 필요가 없어 안전하다.

-  상위 계층에서 로드를 분산하여
   섬세한 라우팅이 가능하다.

-  캐싱 기능을 제공

-  비정상적인 트래픽을 사전에
필터링하여 안정성 확보가 가능하다.

단점
- 패킷의 내용을 보지 않기 때문에,
  섬세한 라우팅이 어렵다.

- 사용자의 IP가 수시로 변한다면,
  연속적인 서비스 제공이 어렵다.

- 패킷의 내용을 복호화해야 한다.

- 클라이언트가 로드밸런서와 인증서를
  공유해야 하므로,
공격자가 로드밸런서를 통해서
  클라이언트의 데이터에 접근 가능하여
보안상의 위험이 존재한다.

 

로드 밸런서는 트래픽을 효과적으로 분산하는 방법을 통해 대량의 트래픽을 감당하기 위한 방법이다.

이를 통해 애플리케이션의 가용성, 확장성, 보안 및 성능이 향상되는 결과를 가져올 수 있다.

하지만 로드 밸런서 자체를 이중화하지 않은 단일 서버 상태라면

해당 장비 또는 서버에 장애가 일어난다면

하위 서버는 모두 요청을 전달받지 못해 전체 서비스가 다운된다.

따라서 로드밸런서 자체도 이중화를 통한 안전성을 확보해야 할 필요가 있다.

 

 

참고자료

https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903

https://aws.amazon.com/ko/what-is/load-balancing/

반응형

loading