
ALB (HTTP/HTTPS, L7)
NLB (TCP/UDP/TLS, L4)
GWLB
(ALB) Target Group Stickiness 켜기
aws elbv2 modify-target-group-attributes \
--target-group-arn arn:aws:elasticloadbalancing:...:targetgroup/app-tg/... \
--attributes Key=stickiness.enabled,Value=true \
Key=stickiness.type,Value=lb_cookie \
Key=stickiness.lb_cookie.duration_seconds,Value=1800
(NLB) Source IP Stickiness
aws elbv2 modify-target-group-attributes \
--target-group-arn arn:aws:elasticloadbalancing:...:targetgroup/nlb-tg/... \
--attributes Key=stickiness.enabled,Value=true \
Key=stickiness.type,Value=source_ip \
Key=stickiness.duration_seconds,Value=3600
팁: Deregistration delay(기본 300s)를 함께 조정해 세션 드레이닝을 부드럽게.

(NLB/GWLB) Cross-Zone On/Off
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn arn:aws:elasticloadbalancing:...:loadbalancer/net/my-nlb/... \
--attributes Key=load_balancing.cross_zone.enabled,Value=true
ALB는 일반적으로 Cross-Zone이 활성 상태이며, 실무에서는 별도 설정 없이 사용하는 경우가 대부분입니다.
세션 고정 + Cross-Zone 활성
세션 비고정 + Cross-Zone 활성(권장 기본)
세션 고정 + Cross-Zone 비활성(NLB)
Q1. ALB Stickiness는 언제 꼭 필요?
Q2. NLB에서 Source IP Stickiness가 무조건 이득?
Q3. Cross-Zone을 켜면 항상 좋나?
(ALB TG) Stickiness
Resources:
AppTg:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
TargetType: instance
Protocol: HTTP
Port: 80
VpcId: vpc-xxxx
TargetGroupAttributes:
- Key: stickiness.enabled
Value: 'true'
- Key: stickiness.type
Value: lb_cookie
- Key: stickiness.lb_cookie.duration_seconds
Value: '1800'
(NLB) Cross-Zone
Resources:
Nlb:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Type: network
Subnets: [subnet-azA, subnet-azB]
LoadBalancerAttributes:
- Key: load_balancing.cross_zone.enabled
Value: 'true'