使用Network Load Balancer时如何基于连接数触发ASG动态扩缩容策略?
针对Network Load Balancer后端ASG的平均连接数动态扩缩容配置方案
Network Load Balancer(NLB)本身没有提供Application Load Balancer那样的预置请求数 per target扩缩容指标,但可以通过NLB自带的CloudWatch流指标配合ASG的自定义动态策略实现需求,具体配置方式如下:
步骤1:确认NLB目标组指标正常上报
NLB默认会向CloudWatch上报连接数相关指标,先确认数据正常:
- 打开CloudWatch控制台,进入「指标」-「所有指标」,选择AWS命名空间
AWS/NetworkELB - 按「Target Group」维度筛选,找到ASG绑定的目标组对应的两个核心指标:
ActiveFlowCount:统计周期内的平均活跃连接数,适合长连接场景的扩缩容依据NewFlowCount:统计周期内的平均新建连接数,适合短连接场景的扩缩容依据
- 确认对应指标有连续数据上报即可。
步骤2:配置动态扩缩容策略
推荐优先选择目标跟踪策略,和你之前使用的ALB请求数策略逻辑一致,无需手动配置告警,ASG会自动调整实例数将指标维持在目标值附近:
- 进入EC2控制台对应Auto Scaling Group的详情页,切换到「自动扩缩」标签
- 点击「创建动态扩缩容策略」,策略类型选择「目标跟踪策略」
- 指标来源选择「自定义指标」,按以下参数填写:
- 指标命名空间:
AWS/NetworkELB - 指标名称:根据业务场景选
ActiveFlowCount/NewFlowCount - 维度添加:
TargetGroup= 你的目标组ARN、LoadBalancer= 你的NLB ARN - 统计方式:
Average(平均值) - 目标值:填写你期望的单实例平均连接数阈值,例如预期单实例最大承载200个活跃连接,就填200
- 勾选「将指标数据除以实例组大小」,该选项会自动将目标组总连接数除以当前ASG实例数,计算出单实例平均连接数,完全匹配你的需求
- 指标命名空间:
- 根据业务特性设置扩缩容冷却时间,保存策略即可。
如果需要自定义不同阈值对应不同的扩缩容步长,可以选择步进扩缩容方案:先在CloudWatch分别配置扩容、缩容的连接数阈值告警,再到ASG中绑定告警、设置对应扩缩容的实例数量/比例即可。
注意事项
- NLB指标默认采集粒度为1分钟,可根据业务对扩缩容灵敏度的需求调整策略的评估周期
- 缩容冷却时间建议设置得比扩容更长,避免业务波动导致实例频繁上下线
- 配置完成后建议通过压测工具模拟连接数上涨,验证扩缩容逻辑是否符合预期
内容的提问来源于stack exchange,提问作者Cyril N.
相关产品推荐
相关产品推荐

