Network Load Balancer란?
Network Load Balancer는 개방형 시스템 간 상호 연결(OSI)모델의 L4게층에서 작동합니다. 초당 수백만 개의 요청을 처리할 수 있으며, 로드밸런서가 연결 요청을 받으면 기본 규칙의 대상 그룹에서 대상을 선택하여 통신합니다.
리스너 구성에 지정된 포트에서 선택한 대상에 대한 TCP연결을 열려고 통신합니다.
NLB 특징
- NLB는 4계층 프로토콜인 TCP/UDP를 지원합니다.
• 초 당 수백만 건의 요청을 처리할 수 있습니다.
• 100ms 정도의 낮은 지연 시간을 보인다(ALB의 경우 400ms 정도의 지연시간을 갖는다).
- NLB는 AZ 당 하나의 고정된 IP 주소를 가지며 Elastic IP 주소를 할당해 줍니다.
• 이 덕분에, 특정 IP 주소를 화이트리스트에 넣어 사용해야 할 때 IP 주소를 알고 있기 때문에 편리합니다.
• NLB와는 반대로 CLB와 ALB는 고정된 IP 주소가 아니라 고정된 호스트명을 가집니다.
• 1~3개의 IP로만 액세스할 수 있는 애플리케이션으로 사용에 적당
- 고성능이거나 TCP/UDP 레벨의 트래픽을 원할 때 사용하기 좋습니다.
- NLB는 프리 티어가 아니기 때문에 메모리 비용을 지불해야 합니다.
ALB와 NLB의 활용
NLB의 가장 큰 특징은 Elastic IP를 가지는 것 입니다. Private IP 뿐만 아니라 Public IP까지도 제공합니다. IP를 통한 접근 제어를 수행할 경우, 이와 같은 고정 IP는 매우 중요합니다. NLB과 달리 ALB는 IP가 끊임없이 변화하기 때문에 ALB의 public IP를 목적지 삼아 접근 제어(ACL)를 실시하는 네트워크 장비는 이를 처리하기 매우 까다로워집니다.
ALB의 이런 점을 보완하기 위해, NLB를 ALB의 앞단에 세워는 설계를 통해 NLB의 고정 IP 주소를 얻을 수 있고 애플리케이션 로드 밸런서 덕분에
접근 제어 정책을 만들어 HTTP 유형의 트래픽을 처리하는 규칙을 얻을 수 있습니다. 그리고 ALB IP의 변화는 Cloudwatch, Lambda를 통해 감지/변경한 후 NLB의 대상그룹에 집어넣어 서비스를 유지합니다.
물론 ALB없이 NLB를 EC2나 온프레미스에 연결하는 방식도 많이 사용합니다.
ALB vs NLB 차이점
ALB
- L7단의 로드 밸런서를 지원한다.
HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송한다.
- IP주소 + 포트번호 + 패킷 내용을 보고 스위칭한다.
- IP 주소가 변동되기 때문에 Client에서 Access 할 ELB의 DNS Name을 이용해야 한다.
- L7단을 지원하기 때문에 SSL 적용이 가능하다.
NLB
- L4단의 로드 밸런서를 지원한다.
- TCP/IP 프로토콜의 헤더를 보고 적절한 패킷으로 전송한다.
- IP + 포트번호를 보고 스위칭한다.
- 할당한 Elastic IP를 Static IP로 사용이 가능하여 DNS Name과 IP주소 모두 사용이 가능하다.
- SSL 적용이 인프라 단에서 불가능하여 애플리케이션에서 따로 적용해 주어야 한다.
- 패킷을 까보는 등 단계가 생량되기에 지연시간이 아주 적다.
Gateway Load Balancer
네트워크 트래픽이 애플리케이션으로 이동하기 전에 모든 트래픽을 검사하기 위해 사용할 수 있습니다.
GWLB의 트래픽 흐름
- Gateway Load Balancer를 사용하면 vpc에 대한 라우팅 테이블이 생성됩니다.
- 이후, 모든 사용자 트래픽은 GWLB를 통과합니다.
- 그러면 GWLB는 3rd party virtual appliances(target group)로 트래픽을 확산하고,
- 트래픽을 받은 해당 appliancees는 트래픽을 분석하고 처리합니다
- 만약 이상이 없으면 해당 트래픽을 다시 GWLB로 보내며 반면 이상이 있다면 트래픽을 drop 합니다.
- 그리고 해당 트래픽을 받아서 GWLB는 이를 application으로 보내고,
GWLB는 네트워크 계층인 3계층(IP 패킷)에서 운영 됩니다.
GWLB는 크게 두 가지 기능을 합니다.
- 투명한 Network Gateway: 트래픽에 대한 단일 입구/출구를 갖는다.
- 로드 밸런서: virtual appliances에 트래픽을 분산한다.
포트 번호 6081인 GENEVE 프로토콜을 사용한다.
- 대상 그룹: EC2 인스턴스, private IP주소(온프레미스)
https://aws.amazon.com/ko/blogs/networking-and-content-delivery/integrate-your-custom-logic-or-appliance-with-aws-gateway-load-balancer/
https://velog.io/@combi_jihoon/Load-Balancer-%EC%A2%85%EB%A5%98%EC%99%80-%ED%8A%B9%EC%A7%95NLB
https://velog.io/@ksu9704/Load-Balancer-ALB-NLB
AWS Certified Solutions Architect Associate 시험합격!