- 최신
- 최다 투표
- 가장 많은 댓글
결론부터 말씀드리면 ALB와 NLB는 DNS 동작 방식과 AZ affinity 지원 여부가 다릅니다.
- ALB는 DNS 기반 AZ affinity 기능을 제공하지 않습니다 Application Load Balancer의 DNS 이름을 조회하면 여러 Load Balancer 노드의 IP 주소가 반환되며, 클라이언트가 그 중 하나를 선택하여 연결합니다. AWS 공식 문서: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/how-elastic-load-balancing-works.htm
즉 ALB에서는
Client ↓ DNS query ALB DNS ↓ [LB node IP1, LB node IP2 ...]
형태로 응답이 반환되며 어떤 노드에 연결할지는 클라이언트가 결정합니다. 또한 공식 문서 어디에도 클라이언트 AZ와 동일한 AZ의 노드를 우선 반환한다는 보장은 없습니다.
- NLB는 DNS 기반 AZ affinity 기능을 제공합니다 Network Load Balancer는 DNS 수준에서 AZ affinity 정책을 설정할 수 있습니다. AWS 공식 문서: https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancers.html
NLB에서는 다음 attribute를 통해 DNS 응답 정책을 설정할 수 있습니다.
dns_record.client_routing_policy
설정 가능한 값
값 설명 availability_zone_affinity 동일 AZ 노드를 우선 반환 partial_availability_zone_affinity 동일 AZ 노드를 선호 any_availability_zone AZ 관계없이 반환
따라서 NLB는 DNS 단계에서 AZ locality를 제어할 수 있습니다.
- ALB에서도 Zonal DNS를 통해 특정 AZ 노드를 조회할 수 있습니다 ALB는 자동 AZ affinity 기능은 없지만 각 AZ별 zonal DNS endpoint를 제공합니다.
문서 내용: Each load balancer also has a zonal DNS name for each Availability Zone.
예시
ap-northeast-2a.my-alb.elb.ap-northeast-2.amazonaws.com ap-northeast-2b.my-alb.elb.ap-northeast-2.amazonaws.com 이 DNS 이름을 사용하면 특정 AZ에 있는 ALB 노드만 조회됩니다.
✔ 정리 ALB: DNS 조회 시 여러 AZ 노드가 반환되며 AZ affinity 기능은 제공하지 않음 NLB: dns_record.client_routing_policy를 통해 DNS 기반 AZ affinity 설정 가능 ALB zonal DNS를 사용하면 특정 AZ 노드를 직접 조회할 수 있음
**추가 참고 (비용 / 성능 관점)
- 비용 관점 만약 Cross-AZ 트래픽 비용을 걱정하시는 경우라면, 동일 VPC 내에서 Client → ALB → Target 간의 Cross-AZ 통신에 대해서는 추가 요금이 부과되지 않습니다.
AWS 공식 문서: https://aws.amazon.com/elasticloadbalancing/pricing/ 즉 동일 VPC 내부에서는 다음 구조에서 발생하는 Cross-AZ 트래픽에 대해 추가 요금은 발생하지 않습니다.
Client ↓ ALB node ↓ Target
- 성능 관점
반면 네트워크 지연(latency)이나 AZ locality가 중요한 워크로드라면, ALB 앞단에 NLB를 배치하는 구조를 검토해볼 수 있습니다.
예시 아키텍처
Client ↓ NLB (AZ DNS affinity 가능) ↓ ALB ↓ Target
이 경우 NLB의 AZ affinity 기능을 활용하여 같은 AZ 경로로 트래픽을 유도할 수 있습니다.
네, ALB와 NLB의 DNS 동작 방식에는 중요한 차이가 있습니다.
**Network Load Balancer (NLB)**의 경우, DNS 수준에서 AZ affinity를 설정할 수 있는 기능이 있습니다. NLB는 dns_record.client_routing_policy라는 로드밸런서 속성을 제공하며, 이를 통해 트래픽이 NLB의 가용 영역들 사이에서 어떻게 분산되는지 제어할 수 있습니다. 이 속성은 세 가지 값을 가질 수 있습니다:
availability_zone_affinity: 100% zonal affinity (같은 AZ 우선)partial_availability_zone_affinity: 85% zonal affinity (부분적으로 같은 AZ 우선)any_availability_zone: 0% zonal affinity (AZ 선호도 없음)
**Application Load Balancer (ALB)**의 경우, 제공된 공식 문서에서는 NLB와 같은 DNS 수준의 AZ affinity 설정 기능이 명시되어 있지 않습니다. ALB는 인터넷 연결 ALB의 경우 FQDN(Fully Qualified Domain Name)을 제공하며, AWS가 자동으로 ALB의 공용 IP 주소로 FQDN을 업데이트합니다. 클라이언트는 DNS를 사용하여 ALB 뒤에 호스팅된 애플리케이션에 액세스하지만, NLB처럼 DNS 수준에서 AZ affinity를 구성하는 기능은 문서에 언급되어 있지 않습니다.
따라서 NLB는 DNS 수준의 zonal affinity 설정을 지원하지만, ALB는 이러한 기능이 공식 문서에 명시되어 있지 않습니다.
Sources
Network Load Balancers - Elastic Load Balancing
Simplify ALB’s public IP address assignment with VPC IPAM | Networking & Content Delivery
