基于 Auto Scaling 实现油气智慧基地 AI 视频日报系统的优雅扩缩容

基于 Auto Scaling 实现油气智慧基地 AI 视频日报系统的优雅扩缩容

💡 原文中文,约13200字,阅读约需32分钟。
📝

内容提要

本文介绍油气智慧基地AI视频日报系统基于Auto Scaling的优雅扩缩容方案。通过自定义CloudWatch指标、目标跟踪策略和Lifecycle Hook,实现高峰期自动扩容、低谷期安全缩容,避免任务中断。方案对原系统改动小,兼顾成本与时效,适用于计算密集型视频处理场景。

🔎

延伸解读

为什么选择“每实例平均负载”作为扩容指标

方案采用自定义指标 PendingJobsPerInstance(队列长度除以运行实例数)驱动目标跟踪策略,而非直接使用队列长度。这样能避免队列有大量消息但已有足够实例时仍触发扩容的误判,同时实例数增多时指标自然下降,防止过度扩容。当队列为空时指标归零,自动缩容至最小实例数,兼顾成本与响应速度。

Lifecycle Hook 如何实现任务零中断缩容

缩容时,ASG 通过 Lifecycle Hook 将实例置于 Terminating:Wait 状态,实例上的定时脚本检测到状态后调用 Worker 停止脚本,使其停止拉取新任务并等待当前转码完成。Worker 退出后脚本发送 CONTINUE 信号,实例才被终止。若任务超长,脚本可发送心跳延长等待,但超时后默认强制终止,防止实例卡死。

方案适用场景与扩展建议

该方案适用于计算密集、任务时长不确定且对时效性有要求的批处理场景,如视频转码、AI 分析等。文章指出,对于任务时间短或时效性要求不高的场景,可考虑使用 Spot 实例进一步降低成本。方案对原系统改动小,仅需在 Worker 上增加生命周期监控脚本,适合无专职运维团队的客户。

Q&A

什么是AI视频日报系统?

AI视频日报系统是油气智慧基地管理平台的一项功能,每天凌晨将前一天监控摄像头检测到的违规事件(如未戴安全头盔、未穿安全服等)的视频片段分类汇总合并成一个视频文件,供管理人员查看和推进整改。

为什么AI视频日报系统需要优雅扩缩容?

因为该系统具有计算密集、任务时长不确定、任务量不可预期和时效性要求高的特点,需要在高峰期自动扩容以保证任务按时完成,在低谷期安全缩容以节约成本,同时确保缩容时正在执行的任务不被中断。

在方案选择中,为什么最终选择了EC2 + Auto Scaling方案?

因为客户团队无专职K8S运维人员,系统直接部署在虚拟机上,EC2 + Auto Scaling方案实现简单、运维成本低、学习曲线低,且对原系统改动小,而ECS和EKS方案虽然功能更强但运维复杂度和成本更高。

该方案中自定义监控指标是什么?为什么使用每实例平均负载而不是原始队列长度?

自定义监控指标是PendingJobsPerInstance,即队列长度除以运行实例数。使用每实例平均负载可以避免队列有100条消息但已有50个实例时仍触发扩容的问题,在实例数较多时自然降低指标值,避免过度扩容,且队列为空时自动缩容至最小实例数。

Lifecycle Hook是如何实现优雅缩容的?

当Auto Scaling决定终止实例时,实例进入Terminating:Wait状态,定时脚本检测到状态后调用Worker的停止脚本,Worker停止拉取新任务并等待当前任务完成,然后脚本调用complete-lifecycle-action发送CONTINUE,允许实例被安全终止。

如果Worker任务执行时间超过Lifecycle Hook超时时间怎么办?

方案设计了心跳机制,定时脚本可定期调用record-lifecycle-action-heartbeat API延长等待时间,同时配置了HeartbeatTimeout(如7200秒),如果超时未收到CONTINUE,Auto Scaling将执行默认动作ABANDON强制终止实例,避免实例卡在Wait状态。

该方案适用于哪些场景?

适用于计算密集型业务场景,如无人机拍摄视频的分析与处理、电商推广视频的多分辨率编解码、安防领域的视频AI分析等,这些场景的系统可少量改动后应用该方案实现优雅扩缩容。

🏷️

标签

➡️

继续阅读