231021 TIL #222 로드밸런싱 / 로드밸런서

김춘복·2023년 10월 21일
0

TIL : Today I Learned

목록 보기
222/550

Today I Learned

오늘은 면접 대비로 지난 프로젝트 정리를 하다가 명확하지 않은 내용에 대해 추가적으로 공부를 했다.


로드밸런싱

서버가 처리해야 될 요청(Load)을 여러 서버로 나누어(Balancing) 처리하는 것.
리소스 풀 전체에 네트워크 트래픽을 균등하게 배포해 한 대의 서버로 부하가 집중되지 않게 해준다.

로드 밸런싱 알고리즘

정적 로드 밸런싱

: 고정된 규칙을 따르며 현재 서버 상태와 무관하다.

  • 라운드 로빈 방식
    클라이언트로부터 받은 요청을 순서대로 할당하는 방식. 서버 성능이 동일하고 처리 시간이 짧으면 균등하게 분산이 이루어진다.
  • 가중 라운드 로빈 방식
    각 서버마다 우선순위나 가중치를 부여해 지정한 정수 값 만큼 할당해 분산처리한다.
  • IP 해시 방식
    클라이언트의 IP주소를 특정 서버로 매핑해서 요청을 처리한다. 이 방식은 클라이언트가 항상 동일한 서버로 연결된다.

동적 로드 밸런싱

: 트래픽을 나누기 전에 서버의 현재 상태를 검사한다.

  • 최소 연결 방식
    요청이 들어온 시점에 가장 적은 연결 상태인 서버에 우선적으로 트래픽을 배분한다.
    서버에 분배된 트래픽들이 일정하지 않은 경우에 사용한다.
  • 가중 최소 연결 방식
    최소 연결 방식에 각 서버별로 다른 가중치를 적용해 할당
  • 최소 응답 시간 방식 (최소 리스폰타임)
    서버의 현재 연결 상태와 응답시간(요청을 보내고 최초 응답을 받을 때까지 걸리는 시간)을 고려해 트래픽을 배분한다. 가장 연결이 적고 응답시간이 짧은 서버에 배분한다.
  • 리소스 기반 방식
    트래픽 분배 전에 서버 부하를 분석해 해당 서버에 충분히 여유 리소스가 있는지 먼저 확인하고 배분한다.

로드밸런서의 종류

L4 로드밸런서와 L7 로드밸런서가 가장 많이 활용된다.

L4 로드밸런서

  • L4 전송계층에서 TCP/UDP 포트 정보를 바탕으로 로드밸런싱을 수행한다.
    ex) http://naver.com은 1번서버, https://naver.com 은 2번서버 처럼 포트번호에 따라 분배

  • 데이터 안을 들여다 보지 않고 패킷레벨에서 로드를 분산하기 때문에 속도가 빠르고 효율이 좋다. -> 반대로 데이터를 모르기때문에 섬세한 라우팅이 불가능하다.

  • 데이터 내용을 복호화할 필요가 없어 안전하다.

  • L7 로드밸런서보다 가격이 저렴하다.

  • 클라이언트의 IP가 수시로 바뀌면 연속적인 서비스를 제공하기 어렵다.

L7 로드밸런서

  • L7 응용(어플리케이션)계층에서 TCP/UDP에 추가로 URI, 파일명, 쿠키정보등을 바탕으로 로드밸런싱을 수행한다.
    ex) www.naver.com/finance 는 1번서버 www.naver.com/webtoon은 2번서버

  • HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 서버로 분배한다.

  • 상위계층에서 로드를 분산하기 때문에 섬세한 라우팅이 가능하다.

  • 캐싱기능을 제공한다.

  • 비정상적인 트래픽을 사전에 필터링할 수 있어 안정성이 높다.

  • 패킷의 내용을 복호화해야돼서 비용이 더 높다.

  • 클라이언트가 로드밸런서와 인증서를 공유하기 때문에 로드밸런서를 통해 클라이언트의 데이터에 접근하는 공격을 받을 수 있어 보안상의 위험성이 존재한다.

profile
Backend Dev / Data Engineer

0개의 댓글