Home Grokking Modern System Design - Load Balancer
Post
Cancel

Grokking Modern System Design - Load Balancer

Load Balancer 란 무엇인가?

로드 밸런서의 임무는 사용 가능한 서버 풀에서 모든 클라이언트의 요청을 공정하게 나누는 것이다. 로드 밸런서는 서버 과부하나 충돌을 방지하기 위해 이 작업을 수행한다.

로드 밸런싱 계층은 방화벽 다음으로 데이터 센터 내에서 첫 번째 접촉 지점이다. 서비스가 초당 수백 또는 수천 개의 요청을 처리하는 경우 로드 밸런서는 필요하지 않을 수 있다. 그러나 증가하는 클라이언트 요청을 위해 로드 밸런서는 다음 기능을 제공한다.

  • 확장성
    • 서버 추가를 통해 애플리케이션/서비스의 용량을 원활하게 늘릴 수 있게 함
  • 가용성
    • 일부 서버가 다운되거나 장애가 발생하더라도 시스템은 계속 사용 가능하게 함
  • 성능
    • 로드가 적은 서버로 요청을 전달할 수 있으므로 사용자는 더 빠른 응답 시간을 얻을 수 있게 함

image

로드 밸런서 배치

일반적으로 LB는 클라이언트와 서버 사이에 위치한다. 그러나 로드 밸런서가 사용되는 유일한 지점은 아니다.

image

로드 밸런서가 제공하는 서비스

LB는 서비스의 확장성, 가용성 및 성능을 향상할 뿐만 아니라 다음과 같은 몇 가지 주요 서비스도 제공한다.

  • 상태 확인
    • LB는 하트비트 프로토콜을 사용하여 최종 서버의 상태와 안정성을 모니터링 한다.
  • TLS 종료
    • LB는 클라이언트와의 TLS 종료를 처리하여 최종 서버의 부담을 줄인다.
  • 예측 분석
    • LB는 자신을 통과하는 트래픽에 대한 분석을 수행하거나 시간에 따라 얻은 트래픽 통계를 사용하여 트래픽 패턴을 예측할 수 있다.
  • 인간 개입 감소
    • LB 자동화로 인해 장애 처리에 필요한 시스템 관리 노력이 줄어든다.
  • 서비스 검색
    • LB의 장점은 서비스 레지스트리에 요청하여 클라이언트의 요청이 적절한 호스팅 서버로 전달된다는 것이다.
  • 보안
    • LB는 OSI 모델의 여러 계층(3, 4, 7 계층) 에서 서비스 거부(DoS) 와 같은 공격을 완화하여 보안을 향상할 수도 있다.

전체적으로 로드 밸런서는 시스템의 전체 설계에 유연성, 신뢰성, 중복성효율성을 제공한다.

로드 밸런서의 알고리즘

로드 밸런서는 알고리즘에 따라 클라이언트 요청을 분산하며 일부 잘 알려진 알고리즘은 다음과 같다.

  • 라운드 로빈 스케줄링 : 이 알고리즘에서는 각 요청이 반복되는 순차적 방식으로 풀의 서버로 전달된다.
  • 가중 라운드 로빈 : 일부 서버의 클라이언트 요청 처리 능력이 더 높은 경우 가중 라운드 로빈 알고리즘을 사용하는 것이 좋다. 가중치가 부여된 라운드 로빈 알고리즘에서는 각 노드에 가중치가 할당된다. LB는 노드의 가중치에 따라 클라이언트의 요청을 전달한다. 가중치가 높을수록 할당량이 많아진다.
  • 최소 연결 : 어떤 경우에는 모든 서버가 클라이언트에 서비스를 제공할 수 있는 동일한 용량을 갖고 있더라도 특정 서버의 부하가 고르지 않을 수 있다. 예를 들어 일부 클라이언트에는 서비스를 제공하는 데 더 오랜 시간이 걸리는 요청이 있을 수 있으며 일부 클라이언트는 동일한 연결에 대한 후속 요청을 가질 수도 있다. 이 경우 새로운 도착 요청이 기존 연결 수가 적은 서버에 할당되는 최소 연결과 같은 알고리즘을 사용할 수 있다. LB는 이러한 시나리오에서 기존 연결의 수와 매핑 상태를 유지한다.
  • 최소 응답 시간 : 성능에 민감한 서비스에서는 최소 응답 시간과 같은 알고리즘이 필요하다. 이 알고리즘은 응답 시간이 가장 짧은 서버가 클라이언트에 서비스를 제공하도록 요청한다.
  • IP 해시 : 일부 애플리케이션은 IP 주소를 기반으로 사용자에게 다른 수준의 서비스를 제공한다. 이 경우 사용자의 요청을 서버에 할당하기 위해 IP 주소 해싱이 수행된다.
  • URL 해시 : 애플리케이션 내의 일부 서비스는 특정 서버에서만 제공될 수 있다. 이 경우 URL에서 서비스를 요청하는 클라이언트는 특정 클러스터 또는 서버 집합에 할당된다. 이러한 시나리오에서는 URL 해싱 알고리즘이 사용된다.

정적 알고리즘과 동적 알고리즘

알고리즘은 시스템 상태에 따라 정적이거나 동적일 수 있다.

정적 알고리즘은 서버의 상태 변경을 고려하지 않는다. 따라서 작업 할당은 서버 구성에 대한 기존 지식을 기반으로 수행된다. 당연히 이러한 알고리즘은 복잡하지 않으며 모든 요청이 도착하는 단일 라우터나 상용 시스템에서 구현된다.

동적 알고리즘은 서버의 현재 또는 최근 상태를 고려하는 알고리즘이다. 동적 알고리즘은 서버와 통신하여 상태를 유지하므로 통신 오버헤드가 추가된다. 상태 유지 관리는 알고리즘 설계를 훨씬 더 복잡하게 만든다.

상태 저장 및 상태 비저장 로드 밸런서

세션 정보가 하위 계층(분산 캐시 또는 데이터베이스)에 보관되지 않는 경우 로드 밸런서를 사용하여 세션 정보를 유지한다.

상태 저장 로드 밸런싱 에는 클라이언트와 호스팅 서버 간에 설정된 세션 상태를 유지하는 작업이 포함된다. 기본적으로 상태 저장 LB는 수신 클라이언트를 호스팅 서버에 매핑하는 데이터 구조를 유지한다. 상태 저장 LB는 모든 클라이언트의 세션 정보가 모든 로드 밸런서에서 유지 관리되므로 복잡성이 증가하고 확장성이 제한된다. 즉, 로드 밸런서는 전달 결정을 내리기 위해 상태 정보를 서로 공유한다.

image

무상태 로드 밸런싱 에는 상태를 유지하지 않으므로 더 빠르고 가볍다. 상태 비저장 LB는 일관된 해싱을 사용하여 전달 결정을 내린다. 그러나 인프라가 변경되면(예: 새로운 애플리케이션 서버 합류) 일관된 해싱만으로는 요청을 올바른 애플리케이션 서버로 라우팅하는 데 충분하지 않기 때문에 상태 비저장 LB는 상태 저장 LB만큼 탄력적이지 않을 수 있다. 따라서 일관된 해싱과 함께 로컬 상태가 여전히 필요할 수 있다.

image

로드 밸런서 유형

요구 사항에 따라 OSI(개방형 시스템 상호 연결) ​​계층 의 네트워크/전송 및 애플리케이션 계층에서 로드 밸런싱을 수행할 수 있다.

  • 레이어 4 로드 밸런서
    • 레이어 4는 TCP 및 UDP와 같은 전송 프로토콜을 기반으로 수행되는 로드 밸런싱을 나타냄
    • L4 LB는 클라이언트와의 연결/세션을 유지하고 동일한(TCP/UDP) 통신이 동일한 백엔드 서버로 전달되도록 함
  • 레이어 7 로드 밸런서
    • 레이어 7 로드 밸런서는 애플리케이션 레이어 프로토콜의 데이터를 기반으로 함
    • HTTP 헤더, URL, 쿠키 및 기타 애플리케이션별 데이터(예: 사용자 ID)를 기반으로 애플리케이션 인식 전달 결정을 내릴 수 있음
    • TLS 종료 수행 외에도 이러한 LB는 속도 제한 사용자, HTTP 라우팅, 헤더 재작성 등의 작업을 수행할 수 있음

image


참고

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

Grokking Modern System Design - DNS

-