AWS Network Load Balancer(NLB)는 이제 Weighted Target Groups(가중치 대상 그룹) 기능을 공식 지원합니다. 이 기능은 여러 Target Group 사이에서 정적 가중치 기반 트래픽 분배가 가능하도록 해, 별도 로드 밸런서를 늘리거나 Route 53 가중치 라우팅을 구성하지 않고도 트래픽 제어 전략을 단일 NLB로 수행할 수 있습니다.
![[AWS] Network Load Balancer( NLB ) 가중치 기반 대상 그룹 구성 방법](https://blog.kakaocdn.net/dna/bgWPOr/dJMcajgpMEz/AAAAAAAAAAAAAAAAAAAAADFhMXQa32139rIYZuY8MCagN6mJEDzs8R23eyvSexmu/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1767193199&allow_ip=&allow_referer=&signature=HcozWKMMNzGWNB4SOJMaWTBS%2FJQ%3D)
사전 준비
대상 그룹(Target Group) 생성
- AWS 콘솔에서 EC2 → Load Balancing → Target Groups로 이동합니다.
- Create target group를 선택합니다.
- Target type을 선택합니다
- instance (EC2 인스턴스)
- ip (IP 주소)
- 또는 ALB를 포함한 다른 로드 밸런서
- 프로토콜 및 포트를 지정하고 대상 그룹을 생성합니다.
- 생성된 대상 그룹에 서비스할 EC2 등을 등록합니다.
각 대상 그룹은 동일한 프로토콜 / 포트로 등록하되, AWS NLB는 L4 기반이기 때문에 HTTP/HTTPS보다는 TCP/UDP 계층 중심으로 생각하여 구성합니다.
NLB 구성 단계
Network Load Balancer 생성
- AWS 콘솔에서 EC2 → Load Balancers → Create load balancer를 선택합니다.
- Network Load Balancer 타입을 선택합니다.
- 이름, Scheme(인터넷-facing 또는 internal), AZ 등을 선택합니다.
- Listener(예: TCP 80 또는 TLS 443)를 추가합니다.
- Listener의 Default Action은 하나의 Target Group을 먼저 지정해 둡니다.
Weighted Target Groups 설정
가중치 기반 대상 그룹 등록 및 설정
AWS NLB가 가중치 기반 분배를 지원하면서 Listener 설정만으로 여러 Target Group의 **가중치(0~999)**를 줄 수 있게 되었습니다.
다음은 AWS CLI 예시입니다:
aws elbv2 modify-listener \
--listener-arn <Listener ARN> \
--default-actions '[
{
"Type": "forward",
"ForwardConfig": {
"TargetGroups": [
{
"TargetGroupArn": "<TargetGroup-A ARN>",
"Weight": 70
},
{
"TargetGroupArn": "<TargetGroup-B ARN>",
"Weight": 30
}
]
}
}
]'
- Weight: 0~999의 정수로 설정 가능합니다.
- 70:30 설정은 전체 트래픽의 70%를 A, 30%를 B로 분배합니다.
배포 전략과 운영
Blue/Green 및 Canary 배포
가중치 값을 점진적으로 변경해 트래픽을 단계적으로 이동할 수 있습니다.
- 예: 신규 버전(B)을 롤아웃할 때
- 초기: A=100, B=0
- 단계적: A=80, B=20
- 완료: A=0, B=100
이를 통해 별도 인프라 변경 없이 무중단 배포가 가능합니다.
모니터링
CloudWatch 지표
가중치 기반 대상 그룹 설정 후 다음 CloudWatch 지표를 사용하여 확인할 수 있습니다:
- NewFlowCount
- ActiveFlowCount
각 대상 그룹별로 분배된 트래픽 흐름을 모니터링하고 설정 대비 정상 동작 여부를 판단할 수 있습니다.
주의 사항
Listener/Protocol 제한
- 한 Listener 안에 포함된 모두의 Target Group은 동일한 프로토콜 (TCP 또는 TLS) 이어야 합니다. HTTP/TLS 혼합은 불가능합니다.
Stickiness
- TCP/UDP/TCP_UDP Listener 모두 **Stickiness(세션 고정)**를 지원합니다.
- Stickiness는 Listener별로 설정되며 모든 대상 그룹에 적용됩니다.
IPv4/IPv6 주의
- 가중치 대상 그룹을 사용할 때 IPv4와 IPv6 혼합은 동일 Listener에서 지원되지 않습니다.
운영 팁
유지보수 및 점검
- 대상 그룹 가중치를 0으로 설정하면 해당 그룹에 신규 트래픽 유입을 차단할 수 있습니다.
- 이를 통해 유지보수 중인 인스턴스 격리가 가능합니다.
Cross-Zone Load Balancing
- 클러스터 내 AZ 간 균등한 분배를 위해 Cross-Zone Load Balancing 옵션을 켜두는 것이 좋습니다.
- CloudWatch의 Weighted Routing Evaluation 기능을 통해 Cross-AZ 불균형을 자동 점검할 수 있습니다.
마무리
이 기능을 활용하면 단일 NLB로 다양한 트래픽 분배 전략을 구현할 수 있습니다. 특히 Blue/Green이나 Canary 배포 전략에서 별도 리소스 추가 없이 가중치 기반 전환이 가능해집니다. 운영 중인 서비스에 적합한 가중치 값을 적용하고 CloudWatch로 지속적인 상태 모니터링을 하면 안정적인 롤아웃과 장애 대응이 가능합니다.
'AWS' 카테고리의 다른 글
| [AWS] Lambda Durable Functions 구성 가이드 (0) | 2025.12.13 |
|---|---|
| [AWS] Amazon VPC IPAM과 Infoblox Universal IPAM 연동 자동 IP 할당 구성 가이드 (0) | 2025.12.13 |
| [AWS] Cross-Region PrivateLink 구성 방법 (0) | 2025.12.11 |
| [AWS] Amazon Route 53 PrivateLink 구성 방법 가이드 (0) | 2025.12.10 |
| [AWS] Site-to-Site VPN Concentrator 구성 방법 (0) | 2025.12.10 |