로드 밸런싱(Load balancing) 종류와 알고리즘

로드 밸런싱이라고 하면「트래픽을 분산시켜주는 컴퓨터 네트워크의 기법」이라고만 생각했지만, 로드 밸런스를 구현해보고 사용해보면서 다양한 종류와 알고리즘이 있다는 것을 알았습니다. 이번 블로그에서는 간단하게 로드 밸런싱의 종류와 알고리즘에 대해서 알아보고자 합니다.
2021.06.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 올해 4월 클래스메소드에 입사한 김재욱(Kim Jaewook)이라고 합니다.

이번에는 AWS에서 로드 밸런싱을 사용 해보면서 공부했던 것들을 정리하고자 합니다.

로드 밸런싱(Load balancing)이란?

AWS 서비스를 사용하다보면 자주 접하게 되는 서비스가 로드 밸런싱입니다. 그렇다면 이 로드 밸런싱은 무엇일까요?

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

즉 여러 서버가 분산 처리 하는것을 로드 밸런싱이라고 합니다.

여기서 그럼 로드 밸런서는 뭘까? 라고 생각하시는 분들이 계실 거라 생각합니다! 로드 밸런서로드 밸런싱 기술을 제공하는 서비스 또는 장치입니다.

로드 밸런싱(Load balancing)의 종류

로드 밸런싱의 종류는 OSI 7계층에 따라 나뉩니다.

  • L4 : Transport 계층을 사용, IP 주소와 포트 번호 부하 분산이 가능
  • L7 : Application 계층을 사용, URL 또는 HTTP 헤더에서 부하 분산이 가능

* OSI 7계층은 해당 표를 참고

NLB와 ALB의 차이

「여러 서버가 분산 처리 하는것을 로드 밸런싱이라고 한다」까지는 알겠는데, 그럼 대체 로드 밸런서 L4와 L7의 차이는 무엇일까요?

먼저, 로드 밸런서는 몇 계층에서 분산작업을 수행하느냐에 따라 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 와 통신합니다.
  • CLB/ALB는 Security Group 을 통한 보안이 가능합니다.
  • Client → Load Balancer의 Access 제한 가능
  • ALB/CLB는 IP 주소가 변동되기 때문에 Client 에서 Access 할 ELB의 DNS Name을 이용해야 합니다.
  • Name Server 또는 Route 53에서 CNAME 을 사용해야 Domain Name 연동이 가능합니다.

Load Balancing algorithm 종류

이번에는 로드 밸런싱의 알고리즘 종류에 대해서 알아보도록 하겠습니다. 로드 밸런싱의 알고리즘은 여러가지가 있지만 그 중에서 몇가지만 정리 해봤습니다.

라운드 로빈 방식

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

가중 라운드 로빈 방식

가중 라운드 로빈 방식(Weighted Round Robin Method)은 실제 서버에 서로 다른 처리 용량을 지정할 수 있습니다. 각 서버에 가중치를 부여할 수 있으며, 여기서 지정한 정숫값을 통해 처리 용량을 정합니다.

최소 연결 방식

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

참고