로드 밸런서란 무엇입니까? 들어오는 트래픽을 효과적으로 분산하는 방법

0
36

로드 밸런서는 여러 백엔드 서버 간에 들어오는 네트워크 트래픽을 분산하는 인프라 구성 요소입니다. 서버 중 하나에 장애가 발생해도 서비스에 계속 액세스할 수 있도록 하여 용량을 개선하고 중복성을 추가합니다.

로드 밸런서는 애플리케이션에 대한 공개 게이트웨이 역할을 합니다. 트래픽 처리량을 최대화하기 위해 고도로 최적화될 수 있도록 역할에 특화되어 있습니다. 로드 밸런서는 일반적으로 애플리케이션의 요구 사항에 맞게 여러 종류의 라우팅 알고리즘으로 구성할 수 있습니다.

이 기사에서 우리는 로드 밸런서가 무엇인지, 어떻게 작동하는지, 그리고 그것들이 야기할 수 있는 몇 가지 합병증을 탐구할 것입니다. 또한 가장 일반적인 로드 밸런싱 알고리즘 간의 차이점에 대해서도 설명합니다.

로드 밸런서가 하는 일

로드 밸런서는 애플리케이션 서버 앞에 역방향 프록시를 제공하는 역할을 합니다. 모든 클라이언트는 개별 백엔드 인스턴스 대신 이 단일 프록시에 연결합니다. 로드 밸런서는 각 요청을 처리할 서버를 선택하는 역할을 합니다. 이것은 외부 클라이언트에게 보이지 않게 발생합니다.

하드웨어 및 소프트웨어 기반 로드 밸런서 구현을 모두 사용할 수 있습니다. 소프트웨어 측면에서는 Apache 및 NGINX와 같은 대부분의 웹 서버가 그 역할을 수행할 수 있습니다. 하드웨어 유형 로드 밸런서는 호스팅 공급자의 독립 실행형 인프라 구성 요소로 배포됩니다.

로드 밸런서는 일반적으로 백엔드 서버 풀의 인스턴스 상태를 모니터링합니다. 비정상이 되는 백엔드는 새로운 트래픽 전송을 중지하여 서비스 불안정성과 가동 중지 시간을 줄입니다. 마찬가지로 로드 밸런서는 일반적으로 언제든지 새 백엔드 인스턴스를 추가할 수 있도록 하므로 피크 시간 동안 추가 용량으로 서비스를 확장할 수 있습니다.

로드 밸런서의 주요 목표는 처리량을 최대화하고 사용 가능한 리소스를 가장 효율적으로 사용하는 것입니다. 물리적 서버에서 수평으로 확장할 수 있는 것은 일반적으로 추가 CPU 또는 메모리를 사용하여 단일 노드를 수직으로 확장하는 것보다 더 효과적입니다. 수평적 확장은 더 많은 중복성과 용량을 제공하지만 로드 밸런서 계층에서 발생하는 오버헤드는 일반적으로 명목입니다.

로드 밸런싱 알고리즘

로드 밸런싱의 목적은 항상 여러 서버 간에 트래픽을 분산하는 것이지만 이를 달성할 수 있는 몇 가지 방법이 있습니다. 특정 전략을 살펴보기 전에 선택할 수 있는 두 가지 기본 알고리즘 유형을 식별하는 것이 중요합니다.

  • 정적 균형 – 이러한 방법은 하드코딩된 구성 값에서 작동하므로 작동 시 완전히 예측 가능합니다. 이러한 종류의 알고리즘은 전달할 수 있는 백엔드 서버의 상태를 고려하지 않으므로 이미 혼잡한 인스턴스에 새 요청을 계속 보낼 수 있습니다.
  • 동적 균형 – 동적 알고리즘은 트래픽 흐름과 풀에 있는 서버의 가용성을 기반으로 실시간으로 조정됩니다. 이러한 전략은 이미 여러 요청을 처리하고 있는 인스턴스를 자동으로 피할 수 있습니다. 동적 로드 밸런싱은 로드 밸런서가 각 요청의 완료 상태를 추적해야 하므로 오버헤드를 약간 증가시킬 수 있습니다.

정적 밸런싱 시스템은 일반적으로 구성, 테스트 및 검사하기가 더 쉽습니다. 동적 밸런싱은 훨씬 더 강력하며 일반적으로 프로덕션 애플리케이션에 선호되는 선택입니다. 이러한 각 클래스 내에서 선택할 수 있는 몇 가지 특정 라우팅 전략이 있습니다.

  • 라운드 로빈 – 라운드 로빈은 요청을 각 서버에 차례로 전달하는 정적 균형 조정 방법입니다. 세 개의 서버 A, B, C가 있는 경우 첫 번째 수신 요청은 A로, 두 번째 요청은 B로, 세 번째 서버는 C로 이동합니다. 로드 밸런서는 네 번째 요청에 대해 A에서 다시 시작합니다.
  • 가중 라운드 로빈 – 관리자가 풀에 있는 각 서버의 상대적 우선 순위를 정의하는 라운드 로빈 알고리즘의 변형입니다. 가중치가 높은 서버가 더 자주 사용되어 트래픽의 더 많은 부분을 수신합니다. 이 방법을 사용하면 서버 풀이 사양이 다른 서버로 구성된 경우 라운드 로빈 전략을 사용할 수 있습니다.
  • 무작위의 – 많은 로드 밸런서는 대체 정적 선택으로 진정한 무작위 옵션을 포함합니다.
  • 해시 – 이 정적 균형 조정 전략은 클라이언트의 IP 주소를 해시하여 요청을 처리할 백엔드 서버를 결정합니다. 이렇게 하면 동일한 인스턴스가 해당 클라이언트에서 시작된 모든 연결을 제공합니다.
  • 가장 적은 연결 – 이것은 들어오는 요청을 항상 열린 연결 수가 가장 적은 서버로 보내는 널리 사용되는 동적 알고리즘입니다. 많은 응용 프로그램에서 이것은 전체 성능을 최대화하는 가장 효과적인 방법입니다.
  • 최고의 대역폭 가용성 – 이 방법은 사용 가능한 대역폭이 가장 높은 서버로 새 트래픽을 보냅니다. 이는 총 요청 수가 낮게 유지되더라도 개별 요청이 많은 양의 대역폭을 사용할 가능성이 있는 상황에 이상적입니다.
  • 사용자 지정 상태/로드 엔드포인트 – 많은 로드 밸런서에는 백엔드 서버에서 노출된 사용자 지정 메트릭을 기반으로 트래픽 분산 결정을 내리는 방법이 포함되어 있습니다. SNMP와 같은 메커니즘을 사용하여 CPU 사용, 메모리 소비 및 기타 중요한 측정에 대해 쿼리를 수행할 수 있습니다.

기타 로드 밸런서 특성

로드 밸런서는 애플리케이션에 몇 가지 문제를 일으킬 수 있습니다. 가장 널리 퍼진 것 중 하나는 끈적한 백엔드 세션을 달성하는 것입니다. 시스템이 서버에서 상태를 유지하고 클라이언트 연결 간에 이를 유지해야 하는 것이 일반적입니다.

해시 밸런싱 알고리즘 또는 유사한 클라이언트 기반 옵션을 사용하여 이를 완화할 수 있습니다. 이렇게 하면 동일한 IP 주소의 연결이 특정 서버에서 종료됩니다. 대부분의 로드 밸런서는 HTTP 요청에서 지정된 헤더 또는 쿠키를 찾는 명시적 고정 세션 옵션도 제공합니다. 이 값은 클라이언트의 초기 연결 후 동일한 서버로 요청을 일관되게 전달하는 데 사용할 수 있습니다.

로드 밸런서는 SSL 주변에서도 복잡성을 유발할 수 있습니다. 많은 조직에서 SSL이 로드 밸런서에서 종료되도록 구성합니다. 로드 밸런서와 백엔드 서버 간의 연결은 일반 HTTP를 통해 이루어집니다. 그 결과 일반적으로 유지 관리 요구 사항이 줄어들면서 설정이 더 간편해집니다.

보안이 중요한 워크로드에 대해 HTTP 전용 연결을 순방향으로 사용하는 것이 항상 허용되는 것은 아닙니다. SSL 패스스루를 수행할 수 있는 로드 밸런서는 데이터를 먼저 해독하지 않고 백엔드 서버로 직접 트래픽을 전달할 수 있습니다. 그러나 이는 사용할 수 있는 라우팅 기능을 제한합니다. 로드 밸런서는 수신 요청을 해독할 수 없으므로 헤더 및 쿠키와 같은 속성을 기반으로 일치를 수행할 수 없습니다.

레이어 4 및 레이어 7 로드 밸런서

로드 밸런싱은 종종 레이어 4(L4) 및 레이어 7(L7) 네트워킹과 관련하여 논의됩니다. 이 용어는 로드 밸런서가 네트워크 요청의 수명 주기 내에서 트래픽을 라우팅하는 지점을 설명합니다.

계층 4 리소스는 네트워크 전송 수준에서 작동합니다. 이러한 로드 밸런서는 사용된 TCP 또는 UDP 포트와 같은 요청 전송의 특성을 기반으로 라우팅 결정을 내립니다. 요청별 데이터는 고려되지 않습니다.

레이어 7 로드 밸런서는 애플리케이션 레이어에 인접해 있습니다. 이러한 로드 밸런서는 요청 내의 복잡한 데이터에 액세스하고 이를 사용하여 워크로드별 라우팅 규칙을 알릴 수 있습니다. 여기에서 HTTP 헤더 또는 쿠키의 세션 ID를 고려하는 로드 밸런싱이 수행될 수 있습니다.

레이어 7 로드 밸런싱은 강력하지만 상대적으로 리소스를 많이 사용합니다. 백엔드로 전달되기 전에 각 요청의 내용을 구문 분석하고 검사해야 합니다. Layer 4 로드 밸런서의 패킷 기반 특성은 제어가 덜하지만 그에 따라 처리량에 미치는 영향도 줄어듭니다. 레이어 4도 트래픽을 해독하지 않으므로 이 단계의 로드 밸런서 손상으로 인해 요청 데이터가 노출되지 않습니다.

결론

로드 밸런서를 사용하면 서버 간에 들어오는 트래픽을 라우팅할 수 있습니다. 여러 백엔드 인스턴스를 투명하게 실행할 수 있는 고가용성 네트워킹 아키텍처의 중요한 구성 요소입니다. 이렇게 하면 서비스 용량이 증가하고 한 서버가 오프라인 상태가 되는 경우 전체 중단이 방지됩니다.

대부분의 로드 밸런서 구현에서는 정적 및 동적 옵션을 포함하여 여러 가지 다른 알고리즘을 선택할 수 있습니다. 많은 응용 프로그램은 “최소 연결” 또는 “라운드 로빈”과 같은 간단한 선택으로 잘 처리되지만 특정 상황에서는 더 복잡한 옵션이 유용합니다.

로드 밸런서 뒤에서 모든 프로덕션 애플리케이션을 실행하는 것이 좋습니다. 온디맨드로 확장하고 비정상 서버에 대응할 수 있는 유연성을 제공합니다. 로드 밸런싱은 일반적으로 호스팅 스택 또는 클라우드 공급자의 네트워킹 인프라 내에서 쉽게 설정할 수 있습니다.