본문 바로가기

AWS

AWS - 로드밸런서 (ALB,NLB,CLB)

AWS 로드밸런서는 Amazon Web Services에서 제공하는 클라우드 기반 로드 밸런싱 솔루션입니다. 로드 밸런싱은 여러 서버로 트래픽을 분산시키는 방법으로, 고가용성과 확장성을 향상시킵니다. AWS에서는 세 가지 유형의 로드 밸런서를 제공합니다: Application Load Balancer (ALB), Network Load Balancer (NLB), 그리고 Classic Load Balancer (CLB). 이 섹션에서는 각 로드 밸런서의 특징과 사용 사례를 설명합니다.

 

 

Application Load Balancer (ALB)

ALB는 OSI 참조 모델의 Layer 7에서 작동하는 애플리케이션 로드 밸런서입니다. 이는 요청 수준에서 로드 밸런싱을 수행하며, 주로 HTTP/HTTPS 트래픽을 처리합니다. 다음과 같은 ALB의 주요 기능과 특징을 살펴봅니다.

 

특징

  1. 콘텐츠 기반 라우팅: ALB는 URL 경로, 요청 헤더, 소스 IP, 포트 등의 정보를 기반으로 요청을 라우팅합니다. 이를 통해 다양한 서비스를 한 개의 ALB로 구성할 수 있습니다.

     —-> 주소를 분석해서 웹서버 대상그룹, 이미지 서버 대상 그룹, 대시보드 대상 그룹, 람다함수 대상그룹 등으로 나눠서 로드밸런싱을 할 수 있음

 

  1. WebSocket 및 HTTP/2 지원: ALB는 WebSocket 및 HTTP/2 프로토콜을 지원하여 최신 웹 애플리케이션에 적합합니다.
  2. 탄력적 및 확장 가능: ALB는 자동으로 확장되어 고객 요구에 맞게 처리 용량을 조절할 수 있습니다.
  3. 보안: ALB는 AWS WAF (Web Application Firewall)와 통합되어 애플리케이션에 대한 보안을 강화할 수 있습니다.

사용 사례

  1. 마이크로서비스 아키텍처
  2. 컨테이너 기반 환경
  3. 멀티-티어 웹 애플리케이션

Network Load Balancer (NLB)

NLB는 OSI 참조 모델의 Layer 4에서 작동하는 네트워크 로드 밸런서입니다. 이는 TCP, UDP 및 TLS 프로토콜을 기반으로 한 연결 수준에서 로드 밸런싱을 수행합니다. 다음과 같은 NLB의 주요 기능과 특징을 살펴봅니다.

특징

  1. **고성능 및 낮은 지연 시간** NLB는 초당 수백만 개의 요청을 처리할 수 있는 높은 처리량과 낮은 지연 시간을 제공합니다.

    2. 고가용성: NLB는 다중 가용 영역(AZ)에서 작동하며, 하나의 AZ에 장애가 발생하더라도 다른 AZ에서 계속 작동할 수 있습니다.

 

  1. 영구적인 IP 지원: NLB는 각 가용 영역에 대해 고정된 IP 주소를 제공합니다. 이를 통해 온프레미스 또는 기타 클라우드 서비스와의 통합을 용이하게 합니다.
  2. SSL/TLS 오프로딩: NLB는 SSL/TLS 연결을 오프로딩하여 백엔드 서버의 암호화 작업 부담을 줄일 수 있습니다.

사용 사례

  1. 초고속 웹 애플리케이션 및 API
  2. 실시간 스트리밍 서비스
  3. 온프레미스 또는 다중 클라우드 환경과의 통합

 

Classic Load Balancer (CLB)

CLB는 AWS에서 처음 제공된 로드 밸런서로, OSI 참조 모델의 Layer 4와 Layer 7에서 작동합니다. CLB는 주로 기존 애플리케이션 및 아키텍처에 사용됩니다. 다음과 같은 CLB의 주요 기능과 특징을 살펴봅니다.

특징

  1. Layer 4 및 Layer 7 로드 밸런싱: CLB는 TCP 및 HTTP/HTTPS 트래픽을 처리할 수 있습니다. 이를 통해 어플리케이션 및 네트워크 로드 밸런싱의 기능을 제공합니다.
  2. 세션 지속성: CLB는 쿠키 기반 세션 지속성을 제공하여 사용자 경험을 향상시킬 수 있습니다.
  3. 헬스 체크: CLB는 백엔드 인스턴스의 상태를 모니터링하고, 건강하지 않은 인스턴스로부터 트래픽을 분산시킬 수 있습니다.

사용 사례

  1. 기존 AWS 애플리케이션 및 아키텍처
  2. 간단한 로드 밸런싱 요구 사항이 있는 애플리케이션

 

 

 

ALB

  1. ALB는 L7단의 로드 밸런서를 지원합니다.
  2. ALB는 HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
  3. ALB는 IP주소 + 포트번호 + 패킷 내용을 보고 스위칭합니다.
  4. ALB는 IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 DNS Name을 이용해야 합니다.
  5. ALB는 L7단을 지원하기 때문에 SSL 적용이 가능합니다.

NLB

  1. NLB는 L4단의 로드 밸런서를 지원합니다.
  2. NLB는 TCP/IP 프로토콜의 헤더를 보고 적절한 패킷으로 전송합니다.
  3. NLB는 IP + 포트번호를 보고 스위칭합니다.
  4. NLB는 할당한 Elastic IP를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능합니다.
  5. NLB는 SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용해 주어야 합니다.

 

 

ALB와 NLB의 속도 차이

NLB의 장점 중 하나는 클라이언트의 요청에 대해서 낮은 대기 시간으로 높은 처리가 가능하다는 것입니다.

NLB는 network 계층까지만 확인하기 때문에 7 계층인 ALB보다 빠릅니다.

또한 기존 ELB사용 시에 짧은 시간 내 스파크 성 트래픽 발생에 대한 대응이 어려웠으나 NLB를 사용함으로 ELB의 단점을 해소할 수 있습니다.

마지막으로 단순한 라우팅이 필요하고, 트래픽이 극도로 많은 경우에는 ALB 보다는 NLB를 사용하는 것이 적합하다고 할 수 있습니다.

 

 

ALB 사용 시나리오

  1. 요청의 내용에 따라 트래픽을 다양한 대상 그룹으로 라우팅해야 하는 경우
  2. HTTP/HTTPS 프로토콜을 사용하는 웹 애플리케이션에 적합
  3. WebSocket 및 HTTP/2 프로토콜을 사용하는 최신 웹 애플리케이션
  4. 마이크로서비스 아키텍처 또는 컨테이너 기반 환경에서 개별 서비스에 대한 로드 밸런싱이 필요한 경우

 

NLB 사용 시나리오

  1. 초고속 웹 애플리케이션 및 API, 실시간 스트리밍 서비스 등 초당 수백만 개의 요청 처리가 필요한 경우
  2. TCP, UDP 및 TLS 프로토콜을 사용하는 애플리케이션
  3. 다중 클라우드 환경이나 온프레미스 환경과의 통합이 필요한 경우

 

프로젝트 상황에 따라, 이미지 서버, 웹 서버, 람다 서버 등 복잡한 로드 밸런싱이 필요하지 않고, 단일 종류의 API 호출에 수많은 유저의 호출이 몰리는 경우 NLB를 사용했습니다.

이 경우, NLB가 적절한 선택이었습니다. 왜냐하면:

  1. 고성능과 낮은 지연 시간이 요구되는 상황에서 NLB는 초당 수백만 개의 요청 처리가 가능합니다.
  2. API 호출에 초점을 맞춘 서비스에서는 일반적으로 TCP, UDP 및 TLS 프로토콜이 사용되기 때문에 NLB가 적합합니다.

ALB를 사용하는 것도 고려해볼 수 있지만, 이 경우에는 특별한 라우팅 규칙이나 콘텐츠 기반 라우팅이 필요하지 않기 때문에 NLB가 더 효율적이라고 할 수 있습니다.

결론적으로, 단일 종류의 API 호출에 많은 사용자의 요청이 몰린다면 NLB를 사용하는 것이 좋습니다. 하지만 다양한 종류의 서비스를 제공하는 웹 애플리케이션에서 요청에 따라 트래픽을 다른 대상 그룹으로 라우팅해야 할 때는 ALB를 고려해야 합니다.

 

 

 


관련 문서

 

https://no-easy-dev.tistory.com/entry/AWS-ALB%EC%99%80-NLB-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

AWS | ALB와 NLB 차이점

평소에 aws의 LB(Load Banlancer) 중 ALB(Application Load Balancer)와 NLB(Network Load Balancer)의 차이점으로는 통신하는 네트워크 계층의 차이정 도로 밖에 설명을 못하는 것 같아 이에 대한 내용을 공부해보려고

no-easy-dev.tistory.com