Skip to content
Go back

로드밸런싱 구현 정리

Updated:
Edit page

Table of contents

Open Table of contents

서버 로드밸런서 구현

tomatoAgent서버를 설계하면서 2가지 로드밸런서를 도입했다.
http/https로 접속하여 dns를 기반으로 로드밸런싱을 하고(L7) docker swarm으로 복제된 컨테이너에서 로드밸런싱을 진행한다.(L4)
형태는 다음 이미지와 같다.
img1
다른 블로그에서 가져온 이미지라 정확한 형태는 아니지만 전체적으로 의미는 비슷하다.
Cross-region Load Balancer가 traefik의 L7 로드밸런서이고, Public Load Balancer가 docker swarm의 L4 로드밸런서라 보면 된다.

각 로드밸런서의 역할

Traefik의 로드 밸런싱

Traefik은 애플리케이션 레벨의 리버스 프록시 및 로드 밸런서 역할을 한다.
라우팅 규칙을 세분화하여, 경로 기반 라우팅, 호스트 이름 기반 라우팅, 헤더 기반 라우팅 등 다양한 조건에 따라 요청을 다르게 분배할 수 있다.
Traefik은 Layer 7에서 로드 밸런싱을 수행한다. Layer 7응ㄴ 애플리케이션 계층으로, HTTP/HTTPS 같은 애플리케이션 프로토콜에 대한 세부 정보를 활용해 요청을 처리하고 라우팅한다.

Docker Swarm의 로드 밸런싱

Docker Swarm 자체에는 기본적인 내장 로드 밸런서가 있다. 스웜에서 서비스의 여러 복제본을 배포하면 스웜은 서비스 요청을 복제본들 사이에 자동으로 분배한다.
스웜은 기본값으로 DNS 라운드 로빈 방식을 사용해 클러스터 내 노드들 간에 트래픽을 분산한다.
스웜의 기본 로드 밸런싱은 간단하고 설정이 거의 필요 없지만, 복잡한 규칙을 설정하거나 세부적인 트래픽 제어는 어렵다.
Docker Swarm의 내장 로드 밸런싱은 Layer 4에서 작동한다. Layer 4는 전송 계층으로, IP 주소와 포트 번호를 기반으로 트래픽을 복제본들에 분배한다.

각 로드밸런서의 장점

Layer 7 로드 밸런싱 (애플리케이션 계층)

Layer 7 로드 밸런서는 HTTP/HTTPS 같은 애플리케이션 프로토콜을 이해하고, 요청의 경로, 쿠키, 헤더, 도메인 등을 기반으로 트래픽을 분배한다.
주로 리버스 프록시 역할을 수행하여 클라이언트의 요청을 세부적으로 분석한다.

Layer 4 로드 밸런싱 (전송 계층)

Layer 4 로드 밸런서는 IP 주소와 포트 번호를 기준으로 트래픽을 분산한다.
TCP/UDP 프로토콜을 사용하여 클라이언트와 서버 간의 연결을 제어하고, 특정 서버로 트래픽을 전단한다.

Layer 4 로드 밸런싱 알고리즘 4가지

  1. 라운드 로빈(Round Robin)방식
  1. 가중 라운드로빈 방식
  1. 해시(Hash) 방식
  1. 최소 연결(Least Connection)방식

Edit page
Share this post on:

Previous Post
쿠키, 세션, 웹스토리지
Next Post
젠킨스와 도커