본문 바로가기

AWS

[AWS] Network Load Balancer( NLB ) 가중치 기반 대상 그룹 구성 방법

반응형

AWS Network Load Balancer(NLB)는 이제 Weighted Target Groups(가중치 대상 그룹) 기능을 공식 지원합니다. 이 기능은 여러 Target Group 사이에서 정적 가중치 기반 트래픽 분배가 가능하도록 해, 별도 로드 밸런서를 늘리거나 Route 53 가중치 라우팅을 구성하지 않고도 트래픽 제어 전략을 단일 NLB로 수행할 수 있습니다. 

 

[AWS] Network Load Balancer( NLB ) 가중치 기반 대상 그룹 구성 방법
[AWS] Network Load Balancer( NLB ) 가중치 기반 대상 그룹 구성 방법


사전 준비

대상 그룹(Target Group) 생성

  1. AWS 콘솔에서 EC2 → Load Balancing → Target Groups로 이동합니다.
  2. Create target group를 선택합니다.
  3. Target type을 선택합니다
    • instance (EC2 인스턴스)
    • ip (IP 주소)
    • 또는 ALB를 포함한 다른 로드 밸런서
  4. 프로토콜 및 포트를 지정하고 대상 그룹을 생성합니다.
  5. 생성된 대상 그룹에 서비스할 EC2 등을 등록합니다.

각 대상 그룹은 동일한 프로토콜 / 포트로 등록하되, AWS NLB는 L4 기반이기 때문에 HTTP/HTTPS보다는 TCP/UDP 계층 중심으로 생각하여 구성합니다.

 

NLB 구성 단계

Network Load Balancer 생성

  1. AWS 콘솔에서 EC2 → Load Balancers → Create load balancer를 선택합니다.
  2. Network Load Balancer 타입을 선택합니다.
  3. 이름, Scheme(인터넷-facing 또는 internal), AZ 등을 선택합니다.
  4. Listener(예: TCP 80 또는 TLS 443)를 추가합니다.
  5. 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로 지속적인 상태 모니터링을 하면 안정적인 롤아웃과 장애 대응이 가능합니다.

반응형