로드밸런싱(Load Balancing)

리리티·2022년 12월 6일
0

로드밸런싱이란?

부하 분산을 위해서 가상 IP를 통해 여러 서버에 접속하도록 분배하는 기능을 말한다.

로드밸런싱 알고리즘

1.라운드 로빈

  • 클라이언트로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식

2.가중 라운드로빈 방식

  • 가중치가 높은 서버에 요청을 우선적으로 배정하는 방식
    서버의 트래픽 처리 능력이 다른 경우 사용한다.

3.최소 연결 방식

  • 요청이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 트래픽을 배정하는 방식.

4.IP 해시 방식

  • 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식
  • IP를 통해 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장한다.

DNS

메인 이름을 IP 주소로 변환하는 기술인데 하나의 도메인 이름을 라운드로빈방식으로 여러 개의 IP 주소로 변환한다면 이것만으로도 부하 분산이 가능하다.

단점

  • 대부분의 클라이언트에서 DNS 서버의 부하를 줄이고 성능을 향상하기 위해 일정 시간 동안 캐싱하기 때문에 분산이 균등하게 되지 않는다.

  • 특정 서버에 장애가 발생하더라도 장애 여부가 감지되지 않아 서비스에서 해당 서버를 제거할 수 없다.

    • 대안으로 health check로 장애를 감지하여 DNS 서버에서 제거할 수 있지만, 모든 DNS 서버에 적용되는 데에 많은 시간이 걸리며 클라이언트의 캐싱 때문에 서버가 서비스에서 바로 제거되지 않는다.

L4 로드밸런싱

IP 주소와 포트를 기반으로 로드밸런싱하는 고가의 하드웨어로, 웬만한 서비스에서는 이것만으로도 부하 분산을 처리하기에 충분하다.

  • L4는 VIP(virtual IP) 단위로만 로드밸런싱하기 때문에 반드시 하나의 VIP에 연결된 서버의 수가 비슷해야 한다.

    • 서버 중 몇 대에 문제가 생긴다면 동일한 VIP에 연결된 다른 서버 역시 연달아 부하가 발생하여 더욱 심각한 문제가 발생할 수 있다.
  • L4의 스펙상 최대 세션 수는 존재하나 세션을 맺는 시나리오에 따라 최대 성능이 다르다.

    • 최대 세션 용량에 도달하지 않았어도 추가로 세션을 연결할 수 없는 문제가 발생하기도 한다.
  • 통신사 장애 등으로 세션이 비정상적으로 종료된 경우 세션 서버에서는 클라이언트와 세션이 종료되고 정상적으로 다시 연결되었지만, L4에서는 세션 종료처리가 제대로 되지 않아 두 개의 세션을 동시에 유지하고 있어 L4의 한계 용량을 초과할 수도 있다.

L7 로드밸런싱

애플리케이션 계층에서 분산하기 때문에 HTTP헤더, 쿠키등의 정보를 통해 정교하게 로드밸런싱이 가능하다.

DDoS와 같은 비정상적인 트래픽을 필터링이 가능하다.

1. URL 스위칭 방식

  • URL 주소에서 문자영 기준으로 부하를 분산하는 방식

2. 쿠키 방식

  • HTTP 헤더의 쿠키값 설정에 따라 분산하는 방식

3. Content 스위칭

  • 애매해서 좀더 찾아보고 정리

오픈 소스 로드 밸런서 HAProxy

하드웨어 스위치를 대체하는 소프트웨어 로드 밸런서로, 네트워크 스위치에서 제공하는 L4, L7 기능 및 로드 밸런서 기능을 제공

동작방식

  1. 최초 접근 시 서버에 요청 전달

  2. 응답 시 쿠키(cookie)에 서버 정보 추가 후 반환

  3. 재요청 시 proxy에서 쿠키 정보 확인 > 최초 요청 서버로 전달

  4. 다시 접근 시 쿠키 추가 없이 전달 > 클라이언트에 쿠키 정보가 계속 존재함(쿠키 재사용)

참조

https://d2.naver.com/helloworld/284659
https://prohannah.tistory.com/65
https://d2.naver.com/helloworld/605418

profile
remind

0개의 댓글