如何使用AWS服务实现load balancer在指定时间自动启停?
可以通过CloudWatch、Auto Scaling等AWS服务实现该定时启停负载均衡的需求
以下是两种常见的落地方案,可根据你的实际业务场景选择:
方案1:仅需定时启停业务访问,无需关停负载均衡实例省成本
该方案无需编写代码,配置成本最低,适合仅需工作时段开放业务、非工作时段禁止访问的场景:
- 提前将负载均衡的后端服务全部托管到Auto Scaling(ASG)弹性伸缩组中
- 为ASG配置两条定时调度动作:
- 上午9:00触发的动作:将ASG的最小容量、期望容量调整为业务所需的实例数(例如2台)
- 下午5:00触发的动作:将ASG的最小容量、期望容量调整为0
- 非工作时段ASG内无运行的业务实例,流量请求到负载均衡后会直接返回报错,等同于业务关停
方案2:需要彻底关停负载均衡实例,避免闲置费用产生
如果非工作时段不需要保留负载均衡实例,希望完全关停减少成本支出,可通过组合服务实现:
- 使用Amazon EventBridge(原CloudWatch Events)配置两条定时触发规则:
- 规则1:Cron表达式设置为每天上午9:00触发,执行目标为Lambda函数
- 规则2:Cron表达式设置为每天下午5:00触发,执行目标为Lambda函数
- 编写Lambda函数调用ELB的开放API完成对应操作:
- 9点触发执行逻辑:调用
modify-load-balancer-attributes接口启用负载均衡,或直接根据预配置创建负载均衡实例 - 17点触发执行逻辑:调用
modify-load-balancer-attributes接口禁用负载均衡,或直接删除闲置的负载均衡实例
- 9点触发执行逻辑:调用
- 说明:ALB/NLB类型的负载均衡禁用后不会再处理流量,也不会产生实例使用费用,仅收取极低的配置存储成本
额外优化建议
- 可搭配CloudWatch告警做状态校验:配置规则监控9点后负载均衡的请求成功率、ASG运行实例数是否符合预期,出现异常时及时发送通知
- 配置定时规则时可指定对应时区,避免时区偏差导致的启停时间不符预期
内容的提问来源于stack exchange,提问作者LightYagami
相关产品推荐
相关产品推荐

