[Network] Load Balancer

Manx·2023년 6월 22일
0

네트워크

목록 보기
5/5

로드밸런서

서버나 장비의 부하를 분산하기 위해 사용하는 장비

  • 트래픽을 분배해주는 기능
  • 4계층 이상에서 동작하며 IP 주소나, 4계층 정보, 애플리케이션 정보를 확인, 수정 하는 기능이 있다.
  • 로드밸런서가 서비스에 사용되는 대표 IP 주소를 서비스 IP로 갖고 그 밑에 시스템이 늘어나면 로드 밸런서가 각 시스템의 실제 IP로 변경해 요청을 보낸다.

로드 밸런서에서 부하 분산을 위한 그룹을 만들 때는 IP 주소뿐만 아니라 서비스 포트까지 지정해 만든다. → L4 스위치

7계층 정보까지 확인해 처리하는 기능 → L7 스위치

  • 서로 다른 VIP ( Virtual IP)로도 구성할 수 있음
  • 또한, 로드 밸런서의 VIP에 설정된 서비스 포트와 실제 서버의 서비스 포트는 반드시 같을 필요가 없다.

구성 방식

  • 원암(One-Arm)구성
  • 인라인(Inline) 구성

One-Arm

  • 로드 밸런서가 스위치 옆에 있는 형태
  • 서버로 들어가거나 나오는 트래픽이 로드 밸런서를 경유하거나 경유하지 않을 수 있다.
  • 로드 밸런서를 경유하는지 여부는 부하 분산을 이용한 트래픽인지 여부로 구분할 수 있다.
  • 부하 분산을 이용하는 트래픽 : 서비스 IP 정보를 로드 밸런서가 가지고 있다.
  • 서비스 IP에 대해 실제로 Destination NAT 뿐만 아니라 서비스를 호출한 사용자 IP가 아니라 로드 밸런서가 가진 IP로 Source NAT도 함께 이루어져야 한다.
    • Source NAT를 사용하지 않으려면 DSR(Direct Server Return)을 사용하면 된다.
  • 장점 : 부하 분산을 이용하는 트래픽만 처리할 수 있어 로드밸런서의 부하를 줄일 수 있다.
  • 단점 : 로드 밸런서와 스위치 간에 연결된 인터페이스에서 인바운드 트래픽과 아웃 바운드 트래픽을 모두 수용해야 한다.

Inline

  • 로드 밸런서가 스위치에서 서버까지 가는 일직선상 경로에 있는 형태
  • 트래픽이 흐르는 경로에 있어 모든 트래픽이 로드 밸런서를 통과한다.
  • 구성이 직관적이고 이해하기 쉽다.
  • 처리 용량이 커지면서 가격도 많이 상승한다.

동작 모드

  • 트랜스패런트(Transparent ) or 브릿지 (Bridge)
  • 라우티드(Routed)
  • DSR(Direct Server Return)

헬스 체크

  • VIP에 연결된 리얼 서버의 헬스를 체크하여 요청을 보낼지 말지 결정해야 한다.

ICMP ( PING )

  • 단순히 서버가 살아 있는지 여부만 체크하는 방법으로 잘 사용하지 않는다.

TCP 서비스 포트

  • 로드 밸런서에 설정된 서버의 서비스 포트를 확인
  • 서비스 포트 2000번이 등록되어 있다고 가정
  • 리얼 IP의 2000번 포트로 SYN을 보내고, SYN, ACK을 받으면, ACK로 응답하고 FIN을 보냄

TCP : Half Open

  • 헬스 체크로 인한 부하를 줄이거나 정상적인 종료 방식보다 빨리 헬스 체크 세션을 끊기 위해 TCP Half Open 방식을 사용하기도 한다.
  • SYN을 보냄 → SYN, ACK 수신 → RST를 보내 세션을 종료

HTTP 상태코드

  • 웹 서비스를 할 때, 서비스 포트까지는 TCP로 정상적으로 열리지만 웹 서비스에 대한 응답을 정상적으로 해주지 못하는 경우가 있다.
  • HTTP 요청을 통해 정상적인 상태 코드를 응답하는지 여부를 판단한다.

L4 VS L7

L4 로드 밸런싱

  • 일반적인 로드 밸런서가 동작하는 방식
  • TCP UDP 정보 ( 특히 포트 번호 )를 기반으로 로드 밸런싱을 수행
  • 최근 로드 밸런서는 L4, L7의 기능을 모두 지원한다.
  • L7 지원 여부와 상관없이 4계층에 대한 정보로만 분산 처리하는 경우를 L4 로드 밸런싱이라한다.

L7 로드 밸런싱

  • HTTP, FTP, SMTP와 같은 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱을 수행
  • HTTP 헤더 정보나 URI와 같은 정보를 기반으로 프로토콜을 이해한 후 부하를 분산
  • 이런 장비를 ADC ( Application Delivery Controller )라고 부르며 Proxy 역할을 수행
  • 스쿼드(Squid)나 Nginx에서 수행하는 Reverse Proxy 와 유사한 기능을 갖고 있다.

로드밸런서 알고리즘

Least Connection

  • 세션 부하를 확인해 그것에 맞게 부하를 분산하는 방식
  • 로드 밸런서에서는 서비스 요청을 각 장비로 보낼때 마다 세션 테이블이 생성되므로 각 장비에 연결된 현재 세션 수를 알 수 있다.

Hash

  • 서버의 부하를 고려하지 않고 클라이언트가 같은 서버에 지속적으로 접속하도록 하기 위해 사용하는 방식
  • 알고리즘 계산에 사용되는 값을 지정할 수 있다.
    주로 ( 출발 IP, 목적 IP, 출발 포트, 목적 포트)를 사용
  • 장점 :
  • 처음 요청과 다음 요청의 분산된 서버가 같아 서버에서 세션을 유지하기 편리하다.
profile
백엔드 개발자

0개의 댓글