ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS] Load balancing
    Computer Science/CS 2024. 4. 10. 10:42
    728x90

    로드 밸런싱

    부하분산

    트래픽을 분산시켜주는 컴퓨터 네트워크 기법

    여러 서버가 분산 처리하는 것

    사용자가 많아져 트래픽이 하나의 서버로 몰리지 않도록 적절하게 분배시키는 역할

     

    로드 밸런싱의 종류

    ● L4

       Transport계층을 사용, IP주소와 포트 번호 부하 분산이 가능

        ▷장점

         - 패킷의 내용을 확인하지 않고 로드를 분산하므로 속도가 빠르고 효율이 높음

         - 데이터의 내용을 복호화할 필요가 없기에 안전

         - L7 로드 밸런서보다 가격이 저렴

        ▷ 단점

          - 패킷의 내용을 살펴볼 수 없으므로, 섬세한 라우팅 불가

          - 사용자의 IP가 수시로 바뀌는 경우라면, 연속적인 서비스를 제공하기 어려움

    ● L7

        Application계층을 사용, URL 또는 HTTP헤더에서 부하 분산이 가능

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

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

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

         - 방식

           URL Switching 방식

           특정 하위 URL들은 특정 서버로 처리하는 방식    

            ex) '.../text/image/' -> 이미지 처리 서버 / '.../text/video' -> 동영상 처리 서버

            Context Switching 방식

            클라이언트가 요청한 특정 리소스에 대해 특정 서버로 연결 가능

            ex) 이미지 파일에 대해서는 확장자를 참조하여, 별도로 구성된 이미지 파일이 있는 서버 or 스토리지로 직접 연결

            쿠키 지속성(Persistence with Cookies)

            쿠키 정보를 바탕으로 클라이언트가 연결했었던 동일한 서버에 계속 할당해 주는 방식.

             사설 네트워크에 있던 클라이언트 IP주소가 공인 IP주소로 치환되어 전송하는 방식을 지원

             ex) X-Forwarded-For헤더에 클라이언트 IP주소를 별도로 기입

        ▷장점

         - 상위 계층에서 로드를 분산하기 때문에 훨씨 더 섬세한 라우팅 가능

         - 캐싱 기능 제공

         - 비정상적인 트래픽을 사전에 필터링할 수 있어 서비스 안정성 높음

        ▷단점

         - L4 로드밸런서에 비해 비쌈

         - 패킷의 내용을 복호화하여야 하므로 더 높은 비용을 지불해야 함

        - 클라이언트가 로드밸런서와 인증서를 공유해야 하기 때문에, 공격자가 로드밸런서를 통해 클라이언트의 데이터에 접근할 수 있는 보안상의 위험성 존재

    https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/

     

    L4로드밸런서부터 포트 정보를 바탕으로 로드를 분산 가능하기 때문에 한 대의 서버에 각기 다른 포트 번호를 부여하여 다수의 서버 프로그램을 운영하는 경우라면 최소 L4로드밸런서 이상을 사용해야만 한다.

     

    특정 기능이 필요한 것이 아니라면

    - 초당 연결수(Connection Per Sec),

    - 동시 연결수(Concurrent Connections),

    - 처리용량(Throughput)

    을 성능 지표로 하여 L4밸런서와 L7밸런서 중 적절히 선택하는 것이 바람직하다.

     

    로드 밸런싱의 기본 기능

    1. Health Check(상태 확인)

    - 서버들에 대한 주기적인 Health Check를 통해 서버들의 장애 여부를 판단하여, 정상 동작 중인 서버로만 트래픽을 보낸다.

    - L3 체크 : ICMP를 이용하여 서버의 IP주소가 통신 가능한 상태인지 확인한다.

    - L4 체크 : TCP는 3Way-Handshaking를 기반으로 통신하는데, 이러한 TCP의 특성을 바탕으로 각 포트 상태를 체크하는 방식

    - L7 체크 : 어플리케이션 계층에서 체크를 수행, 실제 웹 페이지에 통신을 시도하여 이상 유무를 파악.

     

    ICMP ( Internet Control Message Protocol ) 패킷 전송에 실패했을 때 에러가 났음을 알림과 동시에, 해결 가능한 힌트를 제공하는 메시징 프로토콜. TCP/IP의 IP계층에서 동작

     

    2. Tunneling (터널링)

    - 데이터 스트림을 인터넷 상에서 가상의 파이프를 통해 전달시키는 기술로, 패킷 내에 터널링할 대상을 캡슐화시켜 목적지까지 전송.

     

    3. NAT ( Network Address Translation)

    - 내부 네트워크에서 사용하는 private IP주소와 로드밸런서 외부의 public IP주소간의 젼환 역할

    - 로드 밸런싱 관점에서는 여러 개의 호스트가 하나의 public IP주소 (VLAN, VIP)를 통해 접속하는 것이 주 목적.

    - SNAT ( Source Network Address Translation) : 내부에서 외부로 트래픽이 나가는 경우, private IP -> public IP

    - DNAT (Destination Network Address Translation) : 외부에서 내부로 트래픽이 들어오는 경우, public IP -> private IP

     

    4. DSR(Destination Network Address Translation)

    - 서버에서 클라이언트로 트래픽이 되돌아가는 경우, 목적지를 클라이언트로 설정한 다음, 네트워크 장비나 로드밸런서를 거치지 않고 바로 클라이언트를 찾아가는 방식

    - 이 기능을 통해 로드밸런서의 부하를 줄여줄 수 있음.

     

     

     

     

    로드 밸런싱 알고리즘

    ● 라운드 로빈 방식 ( Round Robin Method)

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

    첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버, 세 번째 요청은 세 번째 서버에 할당한다.

    로드밸런싱 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어지기 때문에 라운드로빈 방식을 사용한다.

    클라이언트의 요청을 순서대로 분배하기 때문에 서버들이 동일한 스펙을 가지고, 서버와의 연결(세션)이 오래 지속되지 않는 경우 적합

    (라운드 로빈 스케줄링은 시분할 시스템을 위해 설계된 선점형 스케줄링의 하나로서, 프로세스들 사이에서 우선순위를 두지 않고, 순서대로 시간 단위로 CPU를 할당하는 방식의 CPU스케줄링 알고리즘)

     

      가중 라운드 로빈 방식 ( Weighted Round Method )

    가중 라운드 로빈 방식은 실제 서버에 서로 다른 처리 용량을 지정할 수 있다.

    각 서버에 가중치를 부여할 수 있으며, 여기서 지정한 정숫값을 통해 처리 용량을 정한다.

    각 서버마다 가중치(Weight)를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분한다.

    ex ) A서버의 가중치 : 5, B서버의 2

     -> A서버에 5개의 Request, B서버의 2개의 Request할당

    주로 서버의 트래픽 처리 능력이 상이한 경우 사용되는 로드밸런싱 방식

     

      최소 연결 방식 (Least Connection Method)

    request가 들어온 시점에 연결 수가 가장 적은 서버에 네트워크 연결방향을 정한다.

    동적인 분산 알고리즘으로 각 서버에 대한 현재 연결 수를 동적으로 카운트할 수 있고, 동적으로 변하는 요청에 대한 부하를 분산시킬 수 있다.

    자주 세션이 오래 지속되거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합

     

    ● IP 해시 방식 ( IP Hash Method)

    클라이언트의 IP주소를 특정 서버로 매핑하여 요청을 처리하는 방식

    사용자의 IP를 해싱하여 부하를 분산하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장

    경로가 보장되며, 접속자 수가 많을 수록 분산 및 효율이 뛰어남

     

    해싱 : 임의의 길이를 지니 데이터를 고정된 길이의 데이터로 매핑하는 것, 또는 그러한 함수

     

    ● 최소 응답시간 방식(Least Response Time Method)

    서버의 현재 연결 상태의 응답시간(Response Time)을 모두 고려하여, 가장 짧은 응답 시간을 보내는 서버로 트래픽을 할당하는 방식.

    각 서버들의 가용한 리소스와 성능, 처리중인 데이터 양 등이 상이한 경우 적합

     

    ● 대역폭 방식 ( Bandwidth Method)

    서버들과 대역폭을 고려하여 서버에 트래픽을 할당

     

     

     

    출처

     

    https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/

    https://co-no.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1

     

     

     

     

     

     

    728x90

    'Computer Science > CS' 카테고리의 다른 글

    [CS] DTO Entity  (0) 2024.05.06
    [CS] DispatcherServlet, filter, interceptor  (0) 2024.04.29
    [CS] Proxy Pattern  (0) 2024.04.09
    [CS] JSP HTTP URL  (0) 2024.04.08
    [CS] polling push pull  (0) 2024.04.02

    댓글

© 2022. code-space ALL RIGHTS RESERVED.