Load Balancing

GreenBean·2023년 3월 16일
0
post-thumbnail

로드 밸런싱 종류

로드밸런서의 종류와 동작 방식
로드밸런싱 (Load Balancing) - 정의 ∙ 종류 ∙ 알고리즘

로드 밸런싱이란?

  • 부하분산 또는 로드 밸런싱 ( Load Balancing ) 은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미
    • 즉, 여러 서버가 분산 처리 하는것을 로드 밸런싱이라고 함

로드 밸런싱이 필요한 이유

  • 서버가 단 하나만 존재할 때 수천만명의 사람들이 서버에 동시 접속하면 어떻게 될까?
    • 하나의 서버는 부하를 감당하지 못할 수도 있을 것
    • 이를 해결하는 방식에는 장비를 업그레이드하는 Scale-up 방식과 장비를 여러개 두는 Scale-out 방식이 있음

  • Scale-out 방식으로 여러 서버를 둔다면 해당 서비스에 접근하기 위해서는 서버마다 존재하는 다른 IP 가 필요
    • 서버마다 다른 공인 IP 를 부여한다면 사용자들마다 각각 다른 IP 로 접속할 것이고 개발자가 원하는 방식대로 부하를 분산하기 어려워짐
    • 예를 들어 100명의 사용자가 존재하고 2대의 서버가 있다면 99명의 사용자가 서버 1에 접속하고 1명의 사용자가 서버 2에 접속할 수도 있음

  • 이를 방지하기 위해 서버를 분산하고 가해지는 부하를 적절하게 분산하는 작업이 필요
    • 개발자가 의도한 대로 부하가 서버마다 골고루 분산되어야 각 서버가 적절하게 부하를 담당할 수 있음
    • 이렇게 두 개 이상의 컴퓨터 자원에 작업을 나누는 것을 로드 밸런싱 ( Load Balancing ) 이라고 하고 작업을 담당하는 장비를 로드 밸런서 (Load Balancer ) 라고 부름

로드 밸런서의 주요 기능

  • 로드 밸런서는 3가지의 주요 기능을 통해 로드 밸런싱을 진행

Network Address Translation(NAT)

  • Private IP를 Public IP 로 바꿈

Tunneling

  • 데이터를 캡슐화하여 연결된 노드만 캡슐을 해제할 수 있게 만듦

Dynamic Source Routing protocol(DSR)

  • 요청에 대한 응답을 할 때 로드밸런서가 아닌 클라이언트의 IP로 응답

로드 밸런서가 동작하는 방법

  • 기초적인 방법인 Bridge/Transparent Mode 에서는 사용자가 서버에 서비스를 요청할 때 중간에서 로드 밸런서가 NAT를 통해 IP/MAC주소를 변조
    • 즉, 요청과 응답이 모두 Load Balancer 를 경유

로드 밸런싱의 종류

  • 로드 밸런싱의 종류는 OSI 7계층에 따라 나뉨
    • L4: Transport 계층을 사용
      • IP 주소와 포트 번호 분산이 가능
    • L7: Application 계층을 사용
      • URL 또는 HTTP 헤더에서 부하 분산이 가능

  • 로드 밸런서는 OSI 7계층을 기준으로 어떻게 부하를 분산하는지에 따라 종류가 나뉨
    • 2 계층을 기준으로 부하를 분산한다면 L2, 3 계층을 기준으로 부하를 분산한다면 L3인 방식
    • 상위 계층으로 갈수록 섬세한 부하 분산이 가능하지만 가격이 비싸지며, 하위 계층으로 갈수록 간단한 부하 분산이 가능하고 가격이 저렴해짐

Tip! OSI 7계층

NLB 와 ALB 의 차이

  • 로드 밸런서는 몇 계층에서 분산작업을 수행하느냐에 따라 NLB ( Network LoadBalancer ) 와 ALB ( Application LoadBalancer ) 로 나눌 수 있음
    • 기존에는 CLB ( Classic LoadBalancer ) 라고 하는 여러 EC2 인스턴스간에 간단한 트래픽 부하 분산 하는 로드 밸런서도 있었지만 최근에는 잘 사용하지 않음

NLB ( Network LoadBalancer )

  • Client IP 와 서버 사이에 서버로 들어오는 트래픽은 Load Balancer 를 통하고 나가는 트래픽은 Client IP 와 직접 통신함
  • NLB 는 Security Group 적용이 되지 않아서 서버에 적용된 Security Group 에서 보안이 가능
  • Client → Server 에서 Access 제한 가능
    NLB 는 할당한 Elastic IP 를 Static IP 로 사용이 가능하여 DNS Name 과 IP주소 모두 사용이 가능
  • Name Server 또는 Route 53 에서 A Record 사용이 가능

ALB ( Application LoadBalancer )

  • Reverse Proxy 대로 Client IP 와 서버 사이에 들어오고 나가는 트래픽이 모두 Load Balancer 와 통신
  • ALB/CLB 는 Security Group 을 통한 보안이 가능
  • Client → Load Balancer 의 Access 제한 가능
  • ALB/CLB 는 IP 주소가 변동되기 때문에 Client 에서 Access 할 ELB 의 DNS Name 을 이용해야 함
  • Name Server 또는 Route 53 에서 CNAME 을 사용해야 Domain Name 연동이 가능

로드 밸런싱 알고리즘의 종류

라운드 로빈 방식

  • 라운드 로빈 ( Round Robin Method ) 은 클라이언트로부터 받은 요청을 로드 밸런싱 대상 서버에 순서대로 할당받는 방식
    • 첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버, 세 번째 요청은 세 번째 서버에 할당
  • 로드밸러닝 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어지기 때문에 이 방식을 사용

가중 라운드 로빈 방식

  • 가중 라운드 로빈 방식 ( Weighted Round Robin Method ) 은 실제 서버에 서로 다른 처리 용량을 지정할 수 있음
  • 각 서버에 가중치를 부여할 수 있으며 여기서 지정한 정숫값을 통해 처리 용량을 정함
    • 서버 가중치는 사용자가 지정할 수 있고 동적으로 조정되기도 함

최소 연결 방식

  • 최소 연결 방식 ( Least Connection ) 은 연결 수가 가장 적은 서버에 네트워크 연결 방향을 정함
  • 동적인 분산 알고리즘으로 각 서버에 대한 현재 연결 수를 동적으로 카운트할 수 있고, 동적으로 변하는 요청에 대한 부하를 분산시킬 수 있음

가중 최소 연결 방식

  • 가중 최소 연결 방식 ( Weighted Least Connections ) 은 최소 연결 방식으로 분배하지만 서버 가중치에 따라 요청을 더 분배하기도, 덜 분배하기도 함
    • 서버 가중치는 사용자가 지정할 수 있고 동적으로 조정되기도 함
  • 서버 풀에 존재하는 서버들의 사양이 일관적이지 않고 다양한 경우 이 방법이 효과적

최소 응답 시간 방식

  • 최소 응답 시간 방식 ( Fastest Response Time ) 은 서버가 요청에 대해 응답하는 시간을 체크하여 가장 빠른 서버로 요청을 분배하는 방식

IP 해시 방식

  • IP 해시 방식 ( IP Hash Method ) 은 사용자의 IP 를 해싱한 후 그 결과에 따라 서버로 요청을 분배
    • 사용자의 IP 는 고정되어 있기 때문에 항상 같은 서버로 연결된다는 보장을 받을 수 있음
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글