본문 바로가기

IT

AWS L4/L7 Load Balancer

반응형

AWS 제공하는 LB 방식은 크게 2가지 형태가 존재한다. 네트워크나, 어플리케이션 레벨에서의 LB(로드밸런서)라고 있는데, HTTP/HTTPS 일반적으로 ALB 활용하여 구성하면 된다.
 
Network Load Balancer (NLB)
 
OSI 모델의 Layer 4(전송 계층)에서 작동하여, TCP/UDP 프로토콜 기반의 로드 밸런싱을 수행한다.
클라이언트의 IP 주소와 포트, 대상의 IP 주소와 포트를 기반으로 트래픽을 분산시키며, 높은 처리량과 초당 수백만 개의 요청을 처리할 있는 빠른 성능을 제공하는 것이 장점이다. 정적 IP 할당(Elastic IP)하여 사용할 있다.  NLB TCP UDP 트래픽에 대해서만 로드 밸런싱이 가능하며, HTTP/HTTPS 트래픽에 대한 로드 밸런싱을 수행할 수는 있지만, 경로 기반 라우팅, HTTP 헤더 기반 라우팅 같은 고급 기능은 사용할 없다.

 
Application Load Balancer (ALB)
 
OSI 모델의 Layer 7(응용 계층)에서 작동하여, HTTP/HTTPS 프로토콜 기반의 로드 밸런싱을 수행한다. 요청 내용을 기반으로 트래픽을 분산시킬 있으며, 호스트 기반 라우팅, 경로 기반 라우팅, HTTP 헤더 기반 라우팅 다양한 라우팅 옵션을 제공한다.
ALB 소켓(클라이언트와 서버 지속적인 연결 허용) HTTP/2 프로토콜(헤더압축,멀티전송,서버푸시) 지원한다.
SSL 종단 암호화를 처리하며, SSL 인증서를 로드 밸런서에 직접 설치할 있고, 콘텐츠 기반 라우팅 요청 수정을 위한 고급 기능을 제공하며, 대상 그룹을 사용하여 트래픽을 분산시킬 있다. 요약하면, NLB 높은 처리량과 빠른 성능이 필요한 TCP/UDP 트래픽에 적합한 반면, ALB HTTP/HTTPS 트래픽에 대한 고급 라우팅 기능이 필요한 경우에 적합하다고 볼 수 있다.

 
ALB/NLB 모두 IP 주소를 직접 DNS 등록하여 사용하는 것은 권장되지 않으며, 이는 클라우드 환경에서 자동으로 IP 주소가 변경될 있기 때문이다.
 
ALB/NLB DNS 이름을 CNAME 레코드를 사용하여 등록하는 것이 좋으나, 위에도 설명했듯이 NLB 활용하는 경우, Elastic IP 통해 일괄된 IP 주소를 유지하는 것도 가능하다. 익명의 사용자가 IP 기반으로 해당 서비스를 사용해야 하는 경우가 바로 해당 케이스이다.
 
지금까지 설명한 NLB 주요 특징을 다시 한번 정리하자면,
 
1.    Layer 4(전송 계층)에서 작동
2.    TCP UDP 프로토콜 기반 트래픽을 처리
3.    초당 수백만 개의 요청을 처리하는 높은 처리량과 성능을 제공
4.    정적 IP (Elastic IP) 지원
5.    TCP UDP 트래픽에 대한 로드 밸런싱이 필요한 경우에 적합
 
ALB 주요 특징은,
 
1.    Layer 7(응용 계층)에서 작동
2.    HTTP HTTPS 프로토콜 기반 트래픽을 처리
3.    고급 라우팅 규칙을 사용하여 요청을 대상 그룹에 분산
4.    소켓 HTTP/2 프로토콜을 지원
5.    SSL 종단 암호화를 처리하고, SSL 인증서를 로드 밸런서에 설치 가능(옵션)
 
일반적으로 웹사이트의 로드 밸런싱에는 ALB(Application Load Balancer) 사용하는 것이 좋으며, ALB 사용하더라도 ALB SSL 인증서를 설치하지 않고, 이중화된 서버에 할당된 SSL 인증서를 사용하여 로드 밸런싱을 수행할 있다. 이러한 구성을 SSL/TLS 패스스루 방식이라고 하며, 이 경우 SSL/TLS 연결이 서버에 직접 전달되어 서버에서 암호화 복호화가 수행된다.
 
다만, SSL/TLS 패스스루를 기능을 사용하는 경우, ALB 요청의 내용을 없기 때문에, 일부 고급 라우팅 기능을 사용할 없고, 오로지 호스트 기반 라우팅 기능만 사용 가능하다.
 

반응형

'IT' 카테고리의 다른 글

Multi-AZ란?  (0) 2023.07.04
페이지 스와핑(Page Swapping) 이해하기  (0) 2023.04.10
IntelliJ IDEA란? 주요 기능 및 특징  (0) 2023.03.19
JavaFX란?  (0) 2023.03.19
AMD의 CPU가 인텔(Intel)보다 저렴한 이유  (0) 2023.03.19