본문 바로가기
CS 지식/네트워크

[네트워크] 로드밸런싱(Load Balancing)

by ghan2 2024. 10. 13.
로드밸런싱이란?

로드(Load)를 밸런싱 하는 것.

여기서 로드란 "서버가 받는 부하"를 의미한다.

이런 트래픽들을 잘 밸런싱해서 우리의 서버들에게 잘 분산을 시켜주는 모듈이라고 할 수 있다. 

 

 

예시를 통해 이해해보자

low load

나의 작은 서버는 이용자가 적어서 1초에 한 번 정도의 요청만 처리하면 된다. 

그러나 시간이 흘러서 이용자가 1000명을 넘어가면 어떨까? 

더 나아가 만명, 수천만명의 사람들이 사용하는 서비스가 된다면?!

high load

한 개의 작은 서버로는 감당하기 어려운 상황이 일어날 것이다 !

이렇게 한 번에 많은 트래픽이 몰리는 상황에 대처하기 위해서 크게 두 가지 방법이 있다. 

1. Vertical Scale-Up => 서버 자체의 성능을 늘리는 방법, 한계가 있음.

2. Horizontal Scale-Out => 서버의 수를 늘려서 분산 시스템을 구축하는 것

 

load balancer

위 그림처럼 서버를 여러 대로 늘리는 것인데 이 때 필요한 것이 로드밸런서다! 여러 서버를 두고 요청이 들어왔을 때 트래픽을 똑똑하게 분산시켜줄 수 있는 로드밸런서가 필요한 것이다. 

 

 

 


그렇다면 어떻게 로드밸런싱을 할 수 있을까?


1. 라운드 로빈 방식

클라이언트의 요청을 여러 대의 서버에 순차적으로 분배하는 방식이다. 클라이언트의 요청을 순서대로 분배하기 때문에 서버들이 동일 스펙을 가지고 있고, 서버와의 연결(세션)이 오래 지속되지 않는 경우 활용하기 적합하다.

 

2. 가중치 기반 라운드 로빈 방식(Weighted Round Robin Method)

각각의 서버마다 가중치(Weight)를 매기고 가중치가 높은 서버에 클라이언트의 요청을 먼저 배분한다. 여러 서버가 같은 사양이 아니고, 특정 서버의 스펙이 더 좋은 경우 해당 서버의 가중치를 높게 매겨 트래픽 처리량을 늘릴 수 있다.
=> 서버 A의 가중치=8, 서버 B의 가중치=2, 서버 C의 가중치=3 → 서버 A에 8개, 서버 B에 2개, 서버 C에 3개의 Request를 할당한다. 

 

3. 최소 연결 방법(Least Connection Method)

최소 연결 방법에서 로드 밸런서는 활성 연결이 가장 적은 서버를 확인하고 해당 서버로 트래픽을 전송한다. 이 방법에서는 모든 연결에 모든 서버에 대해 동일한 처리 능력이 필요하다고 가정한다.

 

 

 

 


로드밸런서를 구축하는 방식


1. Software - HAProxy, Reverse Proxy(NginX, Apache...)
2. Hardware - L4/ L7 Switch

 

1. ALB(Application Load Balancer)
애플리케이션 계층(L7)에서 HTTP/HTTPS 트래픽을 처리하며, 요청 내용을 분석해 적절한 서버로 트래픽을 분배한다. 

사용 예시: 전자상거래 사이트에서 이미지 서버와 장바구니 서버에 각각 다른 요청을 분배

핵심 기능:

  • L7 레벨 기반: 요청의 헤더나 쿠키, URL을 바탕으로 트래픽 분배
  • SSL 적용 가능: HTTPS 보안을 유지하면서 트래픽을 처리
  • 연결 유지 여부를 고려: 장바구니와 같은 연결 지속이 중요한 서비스는 별도 서버로 배정

2. NLB (Network Load Balancer)

네트워크 계층(L4)에서 IP주소나 포트 정보를 기반으로 트래픽을 분산하며, 높은 성능과 낮은 지연 시간을 요구하는 애플리케이션에 적합하다. 

 

  • 사용 예시: 실시간 스트리밍, 화상 회의, 채팅 앱과 같이 빠른 응답과 안정적인 연결이 필요한 서비스
  • 핵심 기능:
    • L4 레벨 기반: TCP/UDP와 같은 네트워크 트래픽을 처리
    • 고정 IP 주소 제공 가능: 연결을 지속적으로 유지하며 고가용성 보장
    • 수백만 건의 요청 처리 가능: 갑작스러운 트래픽 변화에도 안정적으로 대응
    • 세션 지속성 유지: 동일한 클라이언트와의 연결이 필요할 때 유리

3. ELB(Elastic Load Balancer)

AWS 환경에서 사용되는 로드 밸런서로, 여러 가용 영역에 걸쳐 트래픽을 자동으로 분산한다. L4와 L7 모두에서 작동하며 높은 유연성과 확장성을 제공한다. 

핵심 기능:

  • L4(네트워크)와 L7(애플리케이션) 계층 모두 지원
  • 다양한 대상 그룹(EC2, 컨테이너 등)에 트래픽을 자동 분배
  • 확장성: 사용량에 따라 자동으로 확장 가능
  • 다양한 유형 제공: ALB, NLB와 같은 로드 밸런서 기능을 통합

 

 

 

 

참고


https://www.smileshark.kr/post/what-is-a-load-balancer-a-comprehensive-guide-to-aws-load-balancer