[네트워크] 로드밸런싱은 무엇인가요?

orca·2024년 10월 13일

CS

목록 보기
34/46

State

  • 상태 정보, 요청에 대해 서버가 어떻게 행동할지를 결정하는데 필요한 정보
  • stateful server
    • 각각의 서버는 클라이언트 상태를 유지함
    • ex) distributed DB
  • stateless server
    • 모든 서버가 동일한 정보를 갖고 있어야 함
    • ex) replicated DB

Load Balancing

  • 로드 밸런싱은 stateless servers 를 위한 것
  • 클라이언트 요청을 여러 서버로 고르게 나누어 처리함
  • 트래픽을 서버에 고르게 분배하여 전체 시스템 자원을 효율적으로 사용

why load balancing?

  • 트래픽 분산 : 트래픽을 여러 서버에 균등하게 분산시켜, 서버 과부하를 방지함
  • 가용성 : 하나의 서버가 장애를 겪더라도, 나머지 서버가 요청을 처리하여 서비스의 가용성을 유지
  • 확장성 : 서버가 추가되거나 제거되더라도 유연하게 대응

algorithm

Round Robin

  • 순차적으로 요청을 각 서버에 분배함
  • 서버들의 성능이나 상태와 상관없이 요청을 균등하게 분배함
    ➡️ 모든 서버가 동일한 양의 요청을 처리함
  • 단점
    • 서버의 성능이 다른 환경에서 사용 어려움
  • ex) A → B → C → A → B → C → ...

Weighted Round Robin

  • 서버의 성능이나 처리 능력에 따라 가중치를 부여하여 요청을 분배함
  • 순차적으로 요청을 분배하나 서버의 가중치만큼 요청이 처리되도록 함
  • 장점
    • 서버의 성능을 고려함
  • 단점
    • 서버 상태 변화에 실시간으로 반영하기 어렵기 때문에, 동적인 트래픽 변화에 대응하기 어려움
  • ex) A → A → B → C → A → A → B → C ...

Least Connections

  • 현재 연결 수가 가장 적은 서버에 새로운 트래픽을 할당함
  • 각 서버의 연결 상태를 실시간으로 모니터링하고, 연결이 적은 서버에 우선적으로 트래픽을 분배함
  • 장점
    • 실시간으로 서버의 부하 상태를 반영함
  • 단점
    • 서버의 연결 상태를 추적하기 때문에, 시스템 복잡도가 증가함
  • ex) 그림의 상황에서 B 서버에 트래픽 전달

Hash Based

  • 클라이언트의 IP 주소나 요청 URL을 해시 키로 사용하여 요청을 특정 서버에 매핑함
  • 클라이언트가 이전에 연결했던 서비스에 다시 연결되므로, 세션 기반 서비스에 이용
  • 장점
    • 같은 클라이언트가 동일한 서버에 연결되므로, 세션 정보가 유지됨
    • 해시 함수를 통해 균등하게 트래픽을 분배할 수 있음
  • 단점
    • 서버 추가/제거 시 서버의 해시 값이 달라짐
      ➡️ 클라이언트가 이전과 다른 서버에 할당
    • 해시 분배가 고르게 이루어지지 않으면, 일부 서버 과부하

L4 Load Balancer

  • transport layer 에서 동작함
  • 트래픽을 클라이언트의 IP 주소와 포트 번호 등을 기반으로 분석한 후, 요청을 여러 서버로 분산시킴
  • 장점 : 빠른 라우팅
  • 단점 : application layer 정보는 처리하지 않기 때문에 IP와 포트 기반 단순한 로드밸런싱만 가능함
  • ex) AWS의 Network Load Balancer, GCP의 TCP/UDP Load Balancing

L7 Load Balancer

  • application layer 에서 동작함
  • HTTP/HTTPS와 같은 프로토콜의 데이터를 기반으로 트래픽을 분산
  • 장점 : URL이나 쿠키, 헤더 등의 세부 정보 기반 트래픽 분배가 가능함
  • 단점 : L4에 비해 처리 속도가 느림
  • ex) AWS의 Application Load Balancer, GCP의 HTTP(S) Load Balancing

0개의 댓글