반응형

로드밸런서와 프록시가 어떻게 다른 지 명확하게 이해를 못하겠다.
구글링 중에 굉장히 잘 정리된 "빛과 소금같은 문서"를 발견했다. (번역해주셔서 감사합니다)
내가 혼동하고 있었던 부분을 명확히 짚어주었고, 로드밸런서와 프록시를 설명하고 있다.
뉴비인 내가 이해하기에는 많은 개념들이 있지만 존재만으로도 감사한 문서다.
나에게 필요한 수준에서 간단히 내용을 정리한다.


[번역] 최신 네트워크 로드 밸런싱 및 프록시 소개

Introduction to modern network load balancing and proxying


로드밸런싱

위키 정의

컴퓨팅에서 로드 밸런싱은 컴퓨터, 컴퓨터 클러스터, 네트워크 링크, 중앙 처리 장치 또는 디스크 드라이브와 같은 여러 컴퓨팅 리소스에서 작업 부하 분산을 향상시킵니다. 로드 밸런싱은 리소스 사용을 최적화하고 처리량을 극대화하며 응답 시간을 최소화하고 단일 리소스의 오버로드를 방지하는 것을 목표로 합니다. 단일 구성 요소 대신 로드 밸런싱과 함께 여러 구성 요소를 사용하면 이중화를 통해 안정성과 가용성을 높일 수 있습니다. 로드 밸런싱은 보통 멀티 레이어 스위치 또는 도메인 이름 시스템 서버 프로세스와 같은 전용 소프트웨어 또는 하드웨어가 사용됩니다.

참고 문서는 네트워크 로드 밸런싱에 대해서만 다룬다.

 

로드 밸런서의 중요 작업

  1. 서비스 디스커버리 (Service discovery)
    • 사용 가능한 백엔드 셋을 결정하는 프로세스는 다음과 같다.
    • 정적 환경설정 파일
    • DNS
    • Zookeeper, Etcd, Consul 등
    • Envoy의 범용 데이터 플레인 API
  2. 헬스 체킹 (Health checking)
    • 트래픽을 처리하는 데 백엔드를 사용할 수 있는 지 여부를 결정하는 프로세스
    • 헬스체킹은 일반적으로 두 가지 범주로 나뉜다.
      • 활성 : 주기적인 간격을 통해 상태 측정 (ex: HTTP 요청을 /healthcheck 엔드포인트에 전송)
      • 수동 : 주 데이터 플로우에서 상태를 감지함. (ex: L4 로드밸런서는 연속 3개의 연결 오류가 있는 경우 백엔드가 비정상적이라고 결정, L7 로드밸런서는 연속 세 개의 HTTP 503 응답을 비정상이라고 결정)
  3. 로드밸런싱 (Load balancing)
    • 부하 분산
    • 부하를 계산하고 분산하는 알고리즘은 다양함
  4. 고정 세션 (Sticky sessions)
    • 같은 세션에 의한 요청이 같은 백엔드에 도달하는 것이 중요할 수 있음
    • 이는 캐싱, 일시적인 복합 구성 상태 등과 관련이 있음
    • 많은 L7 로드 밸런서는 고정 세션을 지원함
    • 한편, 세션의 고착도(stickiness)는 본질적으로 취약하기 때문에 세션에 의존하는 시스템 설계 시 주의
  5. TLS 종료 (TLS termination)
    • 원문 글 참조, 중요
    • 많은 L7 로드 밸런서는 종료, 인증서 확인 및 핀닝, SNI를 사용한 인증서 서비스 등을 포함한 대량의 TLS 작업 처리
  6. 관측성 (Observability)
    • 네트워크는 본직절으로 신뢰할 수 없음
    • 로드 밸런서는 작업자가 문제를 해결할 수 있도록 무엇이 잘못되었는 지 파악하는 데 도움이 되는 통계, 추적 및 로그를 보낼 책임이 있음
    • 로드밸런서는 관측성에 따라 크게 나뉨
    • 진보된 로드밸런서는 숫자 통계, 분산 추적 및 사용자 지정 가능한 로깅을 포함한 로깅을 제공
    • 이런 관측성을 얻기 위해 로드 밸런서는 추가적인 작업이 필요함
    • 하지만 이렇게 얻은 로깅 데이터의 이득은 성능 약해지는 것 보다 훨씬 큼
  7. 보안 및 Dos 완화 (Security and Dos mitigation)
  8. 환경 설정 및 컨트롤 플레인 (Configuration and control plane)

 

분산 시스템에서의 로드 밸런싱의 이점

  • 네이밍 추상화 : 클라이언트는 모든 백엔드(서비스 디스커버리)를 알 필요 없이, 로드 밸런서를 통해 이름 확인(name resolution)을 함
  • 장애 허용 : 상태 확인 및 다양한 알고리즘을 통해 불량 또는 과부하 상태의 백엔드를 효과적으로 라우팅 가능함
  • 비용 및 성능 이점

 

로드밸런서(Load Balancer) VS 리버스 프록시(Reverses Proxy)

로드밸런싱 장치와 프록시는 서로 혼용되어 사용이 가능한 용어다. 모든 프록시가 로드밸런서는 아니지만 대다수의 프록시는 기본적으로 로드 밸런싱이 가능하다. 로드밸런서가 실제 프록시가 아니라고 주장이 가능하지만, 이런 세밀한 구별을 통해 복잡성을 높일 필요는 없다.

 

L4와 L7

참고 문서에서는 L4와 L7에 무언가 많은 이야기를 하고 있다. (ㅎㅎ)

L4와 L7이 무엇인지 명확히 이해하기 전에는 글쓴이의 말을 받아들일 수 없다.

포스팅을 통해 로드밸런서 L4, L7를 이해하고 참고문서를 다시 보도록 하자.

[포스팅] 로드밸런서 (L4, L7, HAProxy)

 

DSR (Direct Server Return)

포스팅 참고 : 로드밸런싱(Load Balancing)과 고가용성(HA)

 

고가용성 페어(High Availability Pairs)를 통한 장애 허용

포스팅 참고 : 로드밸런싱(Load Balancing)과 고가용성(HA)

반응형