(AWS) 부하분산을 위한 Load Balancer - ALB, NLB
ALB 와 NLB 에 대해 알아보자
  • Backend

시작하며

클라이언트 요청에 대해 MSA 에서 각 도메인별 서버로 연결해주는 역할을 LoadBalancer 가 하고있다.
그러면 LoadBalancer 는 어떻게 클라이언트의 요청을 각 서버로 연결해주는걸까?

(클라이언트의 요청으로 들어오는 IP를 내부 사설 IP로 변경해주는 작업을 NAT 라고 한다. NAT 에 대해서는 다른 글에 다시한번 다뤄본다.)

LoadBalancer 의 역할은

image

다수의 사용자가 몰렸을 때 LB 는 여러대의 WAS 서버 중에 부하, 속도저하, 처리량, 로드정도등에 따라 적절한 트래픽을 분산해주는 역할을 한다.

ALB (Application Load Balancer)

  • ALB 는 Application Load Balancer 이름에서도 알 수 있듯이 L7단에서 부하를 분산한다.
  • HTTP/HTTPS 프로토콜의 헤더를 사용해 분산하며 요청 Data에 따라 경로 재설정(NAT) 한다고 생각하면 된다.
  • ISO 계층 중 7계층에서 이루어지기 때문에 SSL 적용이 가능하다.

NLB (Network Load Balancer)

  • NLB 는 Network Load Balancer 이름에서 알 수 있듯이 L4단에서 부하를 분산한다.
  • TCP/IP 레벨이기때문에 프로토콜의 헤더를 보고 패킷을 전송한다.
  • 할당된 VIP 와 RIP 모두 사용이 가능하다.
  • SSL 적용이 인프라단에서 불가능하기때문에 어플리케이션 레벨에서 처리해주어야 한다.

어느것이 좋은가?

일반적으로 계층이 높아질수록 속도가 빠르고 가격이 비싸다. 즉 ALB 보다는 L4레이어까지만 확인하는 NLB 가 속도는 더 빠르다.

그렇다고 항상 NLB 가 더 좋다고 말할 수 없다. 그만큼 설정이 복잡하고 관리가 어렵다.
ALB 로도 초당 3만의 요청을 처리할 수 있다고 하니 간단한 서비스에서는 ALB로도 충분하다.