본문 바로가기

Compute/ELB

AWS NLB(Network Load Balancer)

AWS NLB는 AWS Load Balancer에 Elastic IP(고정)을 부여할 수 있는 현재까진 유일한 Load Balancer 이다.

TCP 레이어를 지원한다. 따라서 http cookie 방식의 sticky는 지원하지 않으며, tcp 세션을 350초 유지한다고 한다.

 

NLB의 장점은 클라이언트의 요청에 대해서 낮은 대기 시간으로 높은 처리가 가능하다는 것이다. 따라서 기존 ELB 사용 시에는 짧은 시간 내 스파크성 트래픽 발생에 대한 대응이 어려웠으나 NLB를 사용함으로 ELB의 단점을 해소할 수 있을 것이다. 또한 이벤트 등으로 사이트의 유입이 늘어날 것을 대비해 ELB의 Prewarm을 준비하곤 했으나, NLB를 사용함으로 ELB의 단점을 해소할 수 있을 것이다.

 

NLB와 묶일 수 있는 대상은 아래와 같다.

1. VPC 내의 EC2 인스턴스(Instance)

2. AWS 다른 대역의 리소스 혹은 VPN, DX로 터널링 된 Private IP 대역

(10.0.0.0/8, 100.64.0.0/10, 172.16.0.0/12, 192.168.0.0/16만 가능하다.)

 

1. Instance Taget Group

Instance Target Group

 

 

2. IP Taget Group

IP Target Group

 

둘의 차이점은 1번과 같은 Instance ID를 이용한 형태로 Taget Group 지정 시에는 DSR(Direct Server Return) 방식으로 동작하여 Response 시에 EC2 Instance는 직접 Client에게 패킷을 전달한다. 따라서 EC2 인스턴스는 IGW, NAT 등을 통해 아웃바운드(Outbound) 통신이 가능해야 하는 제약 조건이 있다.

 

그에 비해 2번과 같이 Private IP로 지정한 Target Group의 경우 기존 방식대로 Request/Response가 모두 LB를 경유하기 때문에 아웃바운드 통신이 되지 않는 Private 구간에서도 NLB를 이용하여 서비스가 가능하다. 따라서 Private IP를 타겟으로 이용한다면 NLB를 사용하더라도 모니터링에 주의해야 할 서이다.

 

개인적인 추축으로 2번 제약은 DX, VPN 터널링 구간까지 통신을 위해 발생되는 것이라 생각한다. 

 

NLB Blog

 

신규 Network Load Balancer 출시 – 초당 수백만 요청을 처리 확장성 제공 | Amazon Web Services

ELB (Elastic Load Balancing)와 Auto Scaling 및 Amazon CloudWatch 등 3종 세트는 AWS 초기 부터 매우 중요한 부분입니다. 그 이후로 많은 기능이 추가하였고, Application Load Balancer는 컨테이너에서 실행되는  애플리케이션의 콘텐츠 기반 라우팅을 지원하도록 설계하여 마이크로서비스, 스트리밍 및 실시간 서비스 등에 최적화되어 있습니다. 오랫 동안 AWS 고객은 ELB를 사용하여 T2 인스턴

aws.amazon.com

NLB Document

 

Network Load Balancer란 무엇입니까? - Elastic Load Balancing

Network Load Balancer란 무엇입니까? Elastic Load Balancing는 다음 유형의 로드 밸런서를 지원합니다. Application Load Balancer, Network Load Balancer, Classic Load Balancer. 이 안내서에서는 Network Load Balancer에 대해 설명합니다. 다른 로드 밸런서에 대한 자세한 내용은 Application Load Balancer 사용 설명서 및 Classic

docs.aws.amazon.com

 

테스트 중 Target에 Instance과 Private IP 사용 시 동작 방식이 달라 삽질한 뒤 블로깅 해봤다.

 

Document에 

"인스턴스 ID를 사용하여 대상을 지정하면 해당 인스턴스의 기본 네트워크 인터페이스에 지정된 기본 프라이빗 IP 주소를 사용하여 트래픽이 인스턴스로 라우팅됩니다. IP 주소를 사용하여 대상을 지정하면 하나 이상의 네트워크 인터페이스에서 프라이빗 IP 주소를 사용하여 트래픽을 인스턴스로 라우팅할 수 있습니다. 그러면 한 인스턴스의 여러 애플리케이션이 동일한 포트를 사용할 수 있습니다. 각 네트워크 인터페이스에는 자체 보안 그룹이 있을 수 있습니다.  

인스턴스 ID를 사용하여 대상을 지정하는 경우 클라이언트의 원본 IP 주소가 보존되고 애플리케이션에 제공됩니다. IP 주소로 대상을 지정하는 경우 원본 IP 주소는 로드 밸런서 노드의 프라이빗 IP 주소입니다." 

 

와 같은 내용은 있으나... 동작 방식을 직관적으로 설명해줬으면 삽질 안했을텐데...

태그

,