Halo World

AWS NLB(L4 LB) VS ALB (L7 LB) 비교, 차이 본문

개발 지식/DEVOPS

AWS NLB(L4 LB) VS ALB (L7 LB) 비교, 차이

_Yeony 2020. 10. 6. 20:08

 

 

신규 서비스의 경우 개발을 완료하고 환경 셋업을 하려고 보면, 어떤 lb를 사용하야할지 고민이 되는데, 이때 각 lb들이 어떻게 다른지 알면 좋을 것 같아 포스팅을 작성한다.

 


부하 분산을 위한 로드밸런서는 OSI 7 계층 중 어느 계층에서 동작하는지에 따라 NLB(Network LoadBalancer)와 ALB(Application LoadBalancer)로 나눌 수 있다. 기존에는 CLB(Classic LoadBalancer)도 있었지만, 현재에는 많이 사용하지 않고 주로 NLB 또는 ALB를 사용하고 있다.

 

 

NLB (Network LoadBalancer) 

이름에서 알 수 있듯이 NLB는 L4 계층, 네트워크 계층에서 동작한다.

 

특징

  • 휘발성 처리 초당 수백만개 처리 가능
  • 로드 밸런서에 대한 고정 IP 주소 지원

 

ALB (Application LoadBalancer)

L7 계층, 즉 애플리케이션 계층에서 동작하는 로드밸런서이다. 

 

특징 

  • path-based(경로 기반) 라우팅이 지원된다

ALB는 애플리케이션 계층에서 동작하므로, 해당 요청의 path까지 참고하여 path 별 라우팅이 가능하다. 이는 특정 path로 들어오는 경우에는 다른 서버로 라우팅 시켜주어야 할때 유용하게 사용할 수 있다.

예를 들어, Delivery라는 서비스를 리팩토링 한다고 가정해보자.
서비스의 안정성을 위해 특정 path 별로 라우팅을 하고 싶어,기존에 모두 delivery 서비스로 들어오던 요청 중 /register path로 들어오는 요청만 새로 리팩토링한 서버로 전달하고 싶다. 이런 경우에 ALB의 path 라우팅 기능을 이용하여 기존 deliery 서버로 들어오는 요청 중 /register로 들어오는 요청만 리팩토링한 새 서비스로 전달할 수 있다.

이러한 특징 때문에 마이크로서비스 구조에서 path별로 각 마이크로서비스로 라우팅이 필요한 api gw는 alb를 사용한다고 한다.
ALB는 애플리케이션 계층에서 동작하므로, 해당 요청의 path까지 참고하여 path 별 라우팅이 가능하다. 이는 특정 path로 들어오는 경우에는 다른 서버로 라우팅 시켜주어야 할때 유용하게 사용할 수 있다.


  • HTTP 헤더의 호스트 필드를 기반으로 라우팅 지원한다. 단일 로드밸런서를 이용해 요청을 여러 도메인으로 라우팅이 가능하다.
  • 표준 및 사용자 지정 HTTP 헤더와 메서드, 쿼리 매개 변수, 소스 IP 주소와 같은 요청의 필드를 기반으로 라우팅을 지원한다.
  • 한 URL에서 다른 URL로 요청 리디렉션을 지원한다.
  • HTTP 응답 반환을 커스텀 할 수 있다.
  • X-Forwarded-For를 사용하여 클라이언트 IP 주소를 캡처하여 액세스 로그에 출력이 가능하다.

 

비교 정리

출처 : 2019 AWS Summit 자료

 

  1. nlb에 비해 7계층까지 확인하는 alb의 기능이 더 많다.
  2. 그러나, nlb는 network 계층까지만 확인하므로 alb 보다 빠르다. 따라서 단순한 라우팅이 필요하고, 트래픽이 극도로 많은 경우에는 alb 보다는 nlb를 사용하는 것이 적합하다.
  3. alb는 path-based routing이 가능하므로 path를 확인하여 특정 서버로 라우팅을 시켜주어야 하는 경우에 적합하다 (api gw)

 

Reference

더보기

 

추가로 읽어보면 좋을 자료

더보기

'개발 지식 > DEVOPS' 카테고리의 다른 글

Virtualization and Docker  (0) 2020.10.06