본문 바로가기

Compute/ELB

AWS Network Load Balancer(NLB) 동작 방식과 주의사항

AWS Network Load Balancer(NLB)란?

AWS(Amazon Web Services) NLB(Network Load Balancer)는 들어오는 트래픽을 하나 이상의 가용성 영역에서 Amazon EC2 인스턴스, 컨테이너 및 IP 주소와 같은 여러 대상에 분산하는 로드 밸런싱 서비스입니다. NLB는 초저지연 상태를 유지하면서 초당 수백만 건의 요청을 처리하도록 설계되었습니다.

NLB는 연결 수준(계층 4)에서 작동하며 대상 IP 주소 및 포트, 소스 IP 주소 및 포트와 같은 IP 프로토콜 데이터를 기반으로 트래픽을 라우팅합니다. NLB는 TCP 및 UDP 트래픽을 모두 처리할 수 있으며 초당 수백만 패킷으로 확장할 수 있습니다. 따라서 HTTP(S)의 cookie 방식의 sticky는 지원하지 않으며, TCP 세션을 350초 그리고 UDP의 120초를 유지합니다.

NLB는 온라인 게임, 미디어 스트리밍 및 대규모 엔터프라이즈 애플리케이션과 같이 고성능과 확장성이 필요한 애플리케이션에 적합합니다. 또한 정적 IP 주소가 필요하거나 중요한 비즈니스 애플리케이션과 같이 높은 수준의 가동 시간이 필요한 애플리케이션에도 유용합니다.

 

따라서 이벤트 등으로 사이트의 유입이 늘어날 것을 대비해 ELB의 Prewarm을 준비하곤 했으나, NLB를 사용함으로 ELB의 단점을 해소할 수 있습니다.

 

AWS NLB에 Elastic IP 연결 방법

AWS의 NLB에는 Elastic IP 주소를 연결할 수 있습니다. Elastic IP 주소는 네트워크 인터페이스 또는 로드 밸런서에 할당할 수 있는 정적 공용 IP 주소입니다.

NLB에 Elastic IP 주소를 연결하려면 다음 단계를 수행해야 합니다:

1) Elastic IP 주소를 할당합니다. 먼저 NLB와 동일한 영역에 Elastic IP 주소를 할당해야 합니다. 이 작업은 AWS 관리 콘솔, AWS CLI(명령줄 인터페이스) 또는 AWS API를 사용하여 수행할 수 있습니다.

2) Elastic IP 주소를 NLB와 연결: 다음으로 Elastic IP 주소를 NLB와 연결해야 합니다. 이렇게 하려면 AWS Management Console, AWS CLI 또는 AWS API를 사용해야 합니다.

3) Elastic IP 주소가 NLB에 연결되었는지 확인: Elastic IP 주소를 NLB에 연결했으면 AWS Management Console의 NLB 세부 정보 페이지에서 Elastic IP 주소 필드를 확인하여 연결되었는지 확인할 수 있습니다.

NLB에는 한 번에 하나의 Elastic IP 주소만 연결할 수 있습니다. 

 

AWS NLB와 Target Group과 주의사항

NLB의 Target Group으로는 아래 두 가지를 사용할 수 있습니다.

 

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

Instance Target Group

 

2. AWS 다른 대역의 리소스 혹은 VPN, DX로 터널링 된 Private IP 대역. Private IP 대역은 10.0.0.0/8, 100.64.0.0/10, 172.16.0.0/12, 192.168.0.0/16만 가능합니다.

IP Target Group

둘은 구동 방식에 차이가 있습니다.

1번과 같은 Instance ID로 지정한 Taget Group의 경우 DSR(Direct Server Return)과 비슷하게 동작합니다.

Target group: Intance ID

1) 사용자는 NLB로 요청을 보냅니다.
2) NLB는 요청을 수신하고 EC2 인스턴스의 Public IP를 사용하여 EC2 인스턴스로 전달합니다.
3) EC2 인스턴스는 요청을 처리하고 NLB에 응답을 반환합니다.
4) NLB는 EC2 인스턴스의 Public IP를 사용하여 응답을 사용자에게 다시 보냅니다.

 

반면, 2번은 아래와 같이 동작합니다.

Target Group: Private IP

1) 사용자는 NLB로 요청을 보냅니다.
2) NLB는 요청을 수신하고 EC2 인스턴스의 Private IP 주소를 사용하여 EC2 인스턴스로 전달합니다.
3) EC2 인스턴스는 요청을 처리하고 NLB에 응답을 반환합니다.
4) NLB는 NLB의 Public IP 주소를 사용하여 응답을 사용자에게 다시 보냅니다.

 

1번의 DSR과 유사한 동작과 다르게 2번과 같이 Private IP로 지정한 Target Group의 경우 기존 방식대로 Request/Response가 모두 LB를 경유하기 때문에 NLB의 장점은 Instance ID일 때 보장 받을 수 있습니다.

 

Private IP로 지정해도 Instance ID 처럼 동작하는 경우

NLB의 Target Group을 Private IP로 지정했더라도 NAT를 사용한다면 1번 Intance ID를 Target Group으로 지정했던 방식과 동일한 방식으로 사용자와 통신을 합니다.

 

또한 VPN, DX, VPC 피어링 역시 Private IP로 지정했더라도 1번 Intance ID와 동일한 방식으로 통신하게 됩니다.