Load Balancer(1)

황승우·2023년 2월 5일
0

load-balancer

목록 보기
1/1

개념

  • 여러 대의 Server에게 균등하게 Traffic을 분산
  • 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 하는 것이 목적
  • 기존의 서버만으로 원활한 서비스 동작이 불가능하게 될때, 대처 방법은 크게 두 가지가 존재.
    1. 기존의 서버 성능을 확장하는 Scale-up 방식
    2. 기존의 서버와 동일하거나 낮은 성능의 서버를 증설하는 Scale-out 방식
  • 이 때 Scale-out 방식을 통해 증가한 트래픽에 대처하기로 했다면, 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드 밸런싱이 반드시 필요

**로드 밸런싱 기법**

  • 라운드로빈 방식(Round Robin Method)
    • 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식
    • 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있고, 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합
  • 가중 라운드로빈 방식(Weighted Round Robin Method)
    • 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분
    • 주로 서버의 트래픽 처리 능력이 상이한 경우 사용되는 부하 분산 방식
    • 예를 들어 A라는 서버가 5라는 가중치를 갖고 B라는 서버가 2라는 가중치를 갖는다면, 로드 밸런서는 라운드로빈 방식으로 A 서버에 5개 B 서버에 2개의 요청을 전달한다.
  • IP 해시 방식(IP Hash Method)
    • 클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식
    • 사용자의 IP를 해싱해(Hashing, 임의의 길이를 지닌 데이터를 고정된 길이의 데이터로 매핑하는 것, 또는 그러한 함수) 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장
  • 최소 연결 방식(Least Connection Method)
    • 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을 배분
    • 자주 세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식
  • 최소 응답 시간 방식(Least Response Time Method)
    • 서버의 현재 연결 상태와 응답 시간(Response Time, 서버에 요청을 보내고 최초 응답을 받을 때까지 소요되는 시간)을 모두 고려하여 트래픽을 배분
    • 가장 적은 연결 상태와 가장 짧은 응답 시간을 보이는 서버에 우선적으로 로드를 배분하는 방식

기본 기능

  1. Health Check (상태 확인)
    1. 서버들에 대한 주기적인 Health Check를 통해 서버들의 장애 여부를 판단하여, 정상 동작 중인 서버로만 트래픽을 보내는 기능
    2. L3 체크 : ICMP를 이용하여 서버의 IP 주소가 통신 가능한 상태인지를 확인
    3. L4 체크 : TCP는 3 Way-Handshaking (전송 - 확인/전송 - 확인) 를 기반으로 통신하는데, 이러한 TCP의 특성을 바탕으로 각 포트 상태를 체크하는 방식. 
    4. L7 체크 : 어플리케이션 계층에서 체크를 수행. 실제 웹페이지에 통신을 시도하여 이상 유무를 파악.
  2. Tunneling (터널링)
    1. 데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술로, 패킷 내에 터널링할 대상을 캡슐화시켜 목적지까지 전송. 연결된 상호 간에만 캡슐화된 패킷을 구별해 캡슐화를 해제하게 함.
  3. NAT (Network Address Translation)
    1. 내부 네트워크에서 사용하는 사설 IP 주소와 로드밸런서 외부의 공인 IP 주소 간의 변환 역할.
    2. 로드밸런싱 관점에서는 여러 개의 호스트가 하나의 공인 IP 주소(VLAN or VIP)를 통해 접속하는 것이 주 목적.
    3. SNAT (Source Network Address Translation) : 내부에서 외부로 트래픽이 나가는 경우. 내부 사설 IP 주소 -> 외부 공인 IP 주소로 변환.
    4. DNAT (Destination Network Address Translation) : 외부에서 내부로 트래픽이 들어오는 경우.외부 공인 IP 주소 -> 내부 사설 IP 주소로 변환.
  4. DSR (Destination Network Address Translation)
    1. 서버에서 클라이언트로 트래픽이 되돌아가는 경우, 목적지를 클라이언트로 설정한 다음, 네트워크 장비나 로드밸런서를 거치지 않고 바로 클라이언트를 찾아가는 방식. 이 기능을 통해 로드밸런서의 부하를 줄여줄 수 있음.
    • ICMP : Internet Control Message Protocol. 패킷 전송에 실패했을 때 에러가 났음을 알림과 동시에, 해결 가능한 힌트를 제공하는 메시징 프로토콜. TCP/IP의 IP 계층에서 동작.

종류

  • 계층 기반

    • L2(Mac 주소 기반) / L3(IP주소 기반)

    • L4(IP/Port(Transport layer)에서, TCP/UDP)

    • L7(Application layer에서, HTTP,HTTPS,FTP -> 패킷내용까지 보고 분배)

      L4 로드밸런서 vs L7 로드밸런서

    • L4 로드 밸런서

    • 4 계층 - 네트워크 계층(IP, IPX)이나 3 계층 - 전송 계층(TCP, UDP) 의 정보를 바탕으로 로드를 분산.

    • 즉, IP 주소, 포트번호, MAC 주소, 전송 프로토콜 등에 따라 트래픽을 분산하는 것이 가능.

    • 장점

      • 패킷의 내용을 확인하지 않고 로드를 분산하므로 속도가 빠르고 효율이 높음.
      • 데이터의 내용을 복호화할 필요가 없기에 안전.
      • L7 로드밸런서보다 가격이 저렴.
    • 단점)

      • 패킷의 내용을 살펴볼 수 없으므로, 섬세한 라우팅 불가.
      • 사용자의 IP가 수시로 바뀌는 경우라면, 연속적인 서비스를 제공하기 어려움.
    • L7 로드 밸런서

      https://blog.kakaocdn.net/dn/bus1K3/btrpOykln49/niKcioFAG5oBuFZcYKOBNK/img.png

    • 7 계층 - 어플리케이션 계층(HTTP, FTP, SMTP 등)에서 로드를 분산하기 때문에, HTTP 헤더, 쿠키 등과 같은 사용자 요청을 기준으로 특정 서버에 트래픽을 분산하는 것이 가능.

    • L4 로드밸런서의 기능에 더하여, 패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배하는 것이 가능

    • 특정한 패턴을 지닌 바이러스를 감지해 네트워크 보호 가능.

    • Dos/DDos와 같은 비정상적인 트래픽 필터링 가능

    • 방식)

      1. URL 스위칭(URL Switching) 방식 : 특정 하위 URL들은 특정 서버로 처리하는 방식. ex) '.../steven/image' => 이미지 처리 서버 / '.../steven/video' => 동영상 처리 서버
      2. 컨텍스트 스위칭(Context Switching) 방식 : 클라이언트가 요청한 특정 리소스에 대해 특정 서버로 연결 가능.ex) 이미지 파일에 대해서는 확장자를 참조하여, 별도로 구성된 이미지 파일이 있는 서버 or 스토리지로 직접 연결.
      3. 쿠키 지속성(Persistence with Cookies) :  클라이언트가 연결했었던 동일한 서버에 계속 할당해 주는 방식. 특히, 사설 네트워크에 있던 클라이언트의 IP 주소가 공인 IP 주소로 치환되어 전송하는 방식을 지원.ex) X-Forwarded-For 헤더에 클라이언트 IP 주소를 별도로 기입장점)
    • 장점

      • 상위 계층에서 로드를 분산하기 때문에 훨씬 더 섬세한 라우팅 가능.
      • 캐싱(Cashing) 기능을 제공.
      • 비정상적인 트래픽을 사전에 필터링할 수 있어 서비스 안정성 높음.
    • 단점

      • L4 로드밸런서에 비해 비쌈.
      • 패킷의 내용을 복호화하여야 하므로 더 높은 비용을 지불해야 함.
      • 클라이언트가 로드밸런서와 인증서를 공유해야 하기 때문에, 공격자가 로드밸런서를 통해 클라이언트의 데이터에 접근할 수 있는 보안상의 위험성 존재.

ELB 종류

  • Classic Load Balancer
    • 가장 기본적인 형태(현재는 잘 쓰이지 않는 추세)
    • L4부터 L7계층까지 로드밸런싱 가능
    • 하나의 url만 가질 수 있음.
  • Network Load Balancer
    • L4계층에서 작동
    • tcp/udp 트래픽을 로드밸런싱
    • 고정 ip주소 지원
  • Application Load Balancer
    • L7계층에서 작동
    • http/https 트래픽을 처리하는 로드밸런싱에 최적화
    • path-based routing 지원 → 연결된 각각의 인스턴스들이 여러개의 url과 path를 가질수 있음

출처

https://pearlluck.tistory.com/114

https://bluese05.tistory.com/51

https://potato-yong.tistory.com/131

https://tecoble.techcourse.co.kr/post/2021-11-07-load-balancing/

https://co-no.tistory.com/22

profile
백엔드 개발자

0개의 댓글