ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 로드 밸런서(Load Balancer)란?
    MSA & 쿠버네티스(Kubernetes) - k8s 2022. 3. 22. 02:08

    로드 밸런서(Load Balancer)란?

    하나의 인터넷 서비스에 발생하는 트래픽이 많을 때 여러 대의 서버가 분산 처리하여 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 적절히 분산 처리해주는 서비스입니다.

     

    • 클라이언트 요청 또는 네트워크 부하를 여러 서버에 효율적으로 분산시킵니다.
    • 온라인 상태인 서버에만 요청을 보내 고가용성과 안전성을 보장합니다.
    • 수요에 따라 서버를 추가하거나 제거할 수 있는 유연성을 제공합니다.

    https://www.nginx.com/resources/glossary/load-balancing/

     

    로드 밸런서는 왜 필요할까요?

    로드 밸런서가 왜 필요한지 알아보기 전에 먼저 서버에 대해 조금 알아보겠습니다.

    만약 하나의 서버에 수많은 클라이언트들이 요청하면 서버는 메모리가 부족해 다운될 수 있습니다.

    https://jflip.tistory.com/10

     

    이를 해결하기 위해서는 어떻게 해야 할까요?

    Scale-up : Server가 더 빠르게 동작하기 위해 하드웨어 성능을 올리는 방법.

    Scale-out : 하나의 고성능 서버보다는 여러 대의 Server가 나누어 일을 하는 방법

    https://m.post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903

    Scale-out의 장점

    Scale-up에는 한계(더 좋은 성능의 하드웨어가 존재하지 않을 수 있음)가 있을 수 있지만 scale-out은 서버를 무한대로 늘릴 수 있습니다.

    여러 대의 Server 덕분에 무중단 서비스를 제공할 수 있습니다.

     

    하지만 다수의 서버를 구축해서 운영한다고 해서 모든 클라이언트의 요청에 일관성 있게 응답할 수 있을까요?

    쏟아지는 트래픽을 여러 대의 서버로 분산해주는 기술이 없다면 한 곳의 서버에 모든 트래픽이 몰리는 상황이 발생합니다.

     

    즉, 사용자들이 증가하게 되면 Sacle-up , Scale-out을 수행해야 하는데 Scale-out을 했을 때 트래픽을 여러 서버로 분산해주기 위해서 로드밸런서는 필요합니다

     

    로드 밸런서는 어떻게 트래픽을 적절하게 분산시킬까요?

    로드 밸런싱 알고리즘

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

    서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식입니다.

    클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖습니다.

     

    • 가중치 라운드 로빈 방식(Weigted Round Robin Method)

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

    주로 각 서버의 트래픽 처리 능력이 다른 경우 사용되는 방식입니다.

     

    • IP 해시 방식(IP Hash Method)

    클라이언트의 IP 주소를 특정 서버로 매핑하여 처리하는 방식입니다.

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

     

    • 최소 연결 방식(Least Connection Method)

    요청이 들어온 시점에 가장 적은 연결 상태를 보이는 서버에 우선적으로 트래픽을 배분합니다.

     

    • 최소 반응시간 방식(Least Response Time Method)

    서버의 현재 연결 상태와 응답시간을 모두 고려하여 트래픽을 분배합니다.

    가장 적은 연결 상태와 가장 짧은 응답 시간을 보이는 서버에 우선적으로 로드를 배분하는 방식입니다.

     

     

     

    L4 Load Balancer/ L7 Load Balacner

    부하 분산에는 L4 로드밸런서와 L7 로드밸런서가 가장 많이 활용됩니다.

     

    L4, L7이란?

    네트워크 통신 시스템은 크게 일곱 가지의 계층(OSI 7 layers)으로 나뉩니다.

    각각의 계층이 L1/L2/L3 .... L7에 해당합니다.

    상위 계층으로 갈수록 더욱 정교한 로드밸런싱이 가능합니다.

    물리계층(L1) / 링크 계층(L2) / 네트워크 계층(L3) / 전송 계층(L4) / 세션 계층(L5) /표현 계층(L6) / 응용계층(L7)

     

    L4 로드밸런서

    네트워크 계층(IP, IPX)이나 전송 계층(TCP , UDP)의 정보를 바탕으로 분산합니다.

    IP주소나 포트번호, MAC주소, 전송 프로토콜에 따라 트래픽을 나누는 것이 가능합니다.

    https://m.post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903

    L7 로드밸런서

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

    즉, 패킷의 내용을 확인하고 그 내용에 따라 특정 서버에 분배하는 것이 가능합니다.

    URL에 따라 분산시키거나, HTTP 헤더의 쿠키값에 따라 분산시키는 등 클라이언트의 요청을 보다 세분화해 서버에 전달할 수 있습니다.

     

    L7 로드밸런서의 경우 특정한 패턴을 지닌 바리어스를 감지해 네트워크를 보호할 수 있으며, Dos/DDoS와 같은 비정상적인 트래픽을 필터링할 수 있어 네트워크 보안 분야에서도 활용되고 있습니다.

    https://m.post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903

     

    유명한 로드밸런서들

    NGINX

    HAProxy

     

     

    출처

    https://nesoy.github.io/articles/2018-06/Load-Balancer

     

    로드 밸런서(Load Balancer)란?

     

    nesoy.github.io

    https://m.post.naver.com/viewer/postView.nhn?volumeNo=27046347&memberNo=2521903 

     

    로드밸런서(Load Balancer)의 개념과 특징

    [BY 가비아] 현대의 모든 정보는 인터넷을 통해 연결되어있습니다. 인터넷의 발달은 데이터 통신을 보다...

    m.post.naver.com

    https://logz.io/blog/best-open-source-load-balancers/

     

    The 5 Best Open Source Load Balancers | Logz.io

    Load balancing manages the capacity of distributed networks to deal with high volumes of data. We'll look at the best open source load balancers.

    logz.io

     

    'MSA & 쿠버네티스(Kubernetes) - k8s' 카테고리의 다른 글

    NGINX란?  (0) 2022.06.25
    Service Discovery란?  (0) 2022.03.24
    Message System이란?  (0) 2022.03.18
    서비스 메시(Service Mesh)란? + API Gateway와 차이점  (0) 2022.03.17
    API 게이트웨이(Gateway)란?  (0) 2022.03.14

    댓글

Designed by Tistory.