[CS] Load Balancer(로드밸런서)

Cover image

Load Balancer(로드밸런서)

최근에 Citrix 장비가 F5장비로 변경해야하는 일이 있어서 이를 모니터링할 일이 생겼는데, 이게 무엇인지에 대해서 모른다는 느낌을 받았다.

이를 알기위해서는 먼저 로드밸런서에 대해서 알아야 한다.


Load Balancer의 정의

image

로드 밸런싱(load balancing)는 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다.

이 로드밸런서가 없으면 하나의 서버는 모든 사람들의 응답을 해주려고 노력하지만 클라이언트가 많아질수록 성능이 안나오게 된다.

이를 해결하기 위해서는 2가지 방안, scale-upscale-out을 제시할 수 있다.

  • scale up : 서버의 하드웨어 성능을 올려서 더 빠르게 동작시킨다.
  • scale out : 하나의 서버보다는 여러대의 서버가 나눠서 일을 한다.

여기서 Scale-out을 통해서 얻는 장점은 하드웨어 향상하는 비용보다 서버 한대 추가 비용이 적은 부분여러 대의 Server 덕분에 무중단 서비스를 제공할 수 있다.


Load Balancer의 기술

  • NAT(Network Address Translation)

    • 사설 ip주소를 공인 IP주소로 변경, 주소변경의 역할
  • DSR(Dynamic Source Routing protocol)

    • 서버에서 클라이언트로 되돌아가는 경우 목적지 주소를 스위치의 IP주소가 아닌 클라리언트의 IP 주소로 전달해서 네트워크 스위치를 거치지 않고 바로 클라이언트를 찾아가는 개념
  • Tunneling

    • 인터넷상에서 눈에 보이지 않는 통로를 만들어 통신할 수 있게 하는 개념
    • 데이터를 캡슐화해서 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제

Load Balancer의 종류

  • 운영체제 로드밸런서

    • 물리적 프로세서 간에 작업을 스케줄링
  • 네트워크 로드밸런서

    • 사용 가능한 백엔드에서 네트워크 작업을 스케줄링

네트워크 로드밸런서의 종류

  • L2(Data Link Layer)

    • Mac주소를 바탕으로 Load Balancing한다.
    • 장점 : 구조가 간단, 신뢰성이 높음, 가격저렴, 성능이 좋음
    • 단점 : Broadcast 패킷에 의해 성능저하 발생, 라우팅 등 상위레이어 프로토콜 기반 스위칭 불가
  • L3(Network Layer)

    • IP주소를 바탕으로 Load Balancing한다.
    • 장점 : Broadcast 트래픽으로 전체 성능 저하 방지, 트레픽 체크
    • 단점 : 특정 프로토콜을 이용해야 스위칭 가능
  • L4(Transport Layer)

    • Transport Layer(IP와 Port) Level에서 Load Balancing한다.
    • TCP, UDP 프로토콜
    • L4
    • 장점 : Port기반 스위칭 지원, VIP를 이용하여 여러대를 한대로 묶어 부하분산
    • 주로 Round Robin 방식 사용
  • L7(Application Layer)

    • Application Layer(사용자의 Request) Level에서 Load Balancing한다.
    • HTTP, HTTPS, FTP 프로토콜
    • image

L4와 L7의 차이

일반적으로 로드밸런서는 크게 L4와 L7을 사용한다.

공통점

  • 들어온 packet을 적절한 목적지로 전달(스위치)
  • 적절한 알고리즘을 통해 로드밸런서로서의 역할을 수행
  • 스위치 및 서버별 Health Check를 한다.

차이점

  • L4는 L/B에서 알고리즘을 통해 server1 또는 server2로 데이터를 전송할지 결정을 하고 Client와 3way handshake 실행하는 하나의 TCP세션을 갖게 된다.
  • L7는 L/B에서 콘텐츠 기반 스위칭을 위해 3way handshake를 보류한다. L/B와 client 간 3way handshake를 실행하여 따로 TCP 세션을 생성한다. L7과 server서버는 또 다른 TCP 세션을 생성하고 데이터를 중계한다.
  • L7는 Dos/SYN Attack에 대한 방어한다.
  • L7는 패킷 분석을 통한 바이러스 감염 패킷 필터링과 자원 독점 방지 등을 통한 시스템 보안 강화한다.
  • L7은 L4의 서비스 단위 로드밸런싱을 극복하기 위한 포트 + 페이로드 패턴을 이용하여 패킷스위칭한다.
  • L4는 TCP/UDP 패킷 정보를 분석하고 해당 패킷이 사용하는 서비스 종류별(HTTP, FTP 등)로 처리한다.(L4 Mega Proxy 문제 발생)

    • Mega Proxy : IP기반 분리는 요청 양의 불균형이 일어날 수 있다.

HTTP image

  • X-Forwarded-For

    • HTTP 또는 HTTPS 로드 밸런서를 사용할 때 클라이언트의 IP 주소를 식별하는 데 도움을 줍니다.
  • X-Forwarded-Proto

    • 클라이언트가 로드 밸런서 연결에 사용한 프로토콜(HTTP 또는 HTTPS)을 식별하는 데 도움을 줍니다.
  • X-Forwarded-Port

    • 클라이언트가 로드 밸런서 연결에 사용한 포트를 식별하는 데 도움을 줍니다

로드밸런서 알고리즘

  • Round Robin

    • 단순히 Round Robin으로 분산하는 방식
  • Least Connections

    • 연결 개수가 가장 적은 서버를 선택하는 방식
    • 트래픽으로 인해 세션이 길어지는 경우 권장하는 방식
  • Weighted Least Connections

    • 서버에 부여된 Weight 값을 기반으로 Connection 수의 개수와 같이 고려하여 선택하는 방식
  • Source

    • 사용자의 IP를 해싱하여 분배하는 방식
    • 사용자는 항상 같은 서버로 연결되는 것을 보장
  • Fastest Response Time(응답시간방식)

    • 가장 빨리 응답하는 서버에 이용자 요구를 연결하는 방식
    • 응답시간 : 각 서버가 패킷 형태의 요구를 송수신하는데 걸리는 시간
  • 이외에도 Adaptive(최소대기방식), Fixed, Random, URL-based, Cookie 등이 존재한다.

로드밸런서 장애 대응

로드밸런서 장애 대응은 로드 밸런서를 이중화하여 장애를 대비할 수 있다.

로드밸런서 장애 대응


마무리..

로드밸런서에 대한 설명이 끝났기 때문에 실업무에서 사용하는 로드밸런서 장비와 그 차이에 대해서 이후에 작성해보겠다.


출처