亚马逊AWS官方博客

Lightsail流量监控与自动扩容方案

引言

Amazon Lightsail 以其简洁的界面和可预测的固定月费,成为了许多开发者和小型企业的首选云服务。用户期望的是一笔清晰固定的月度开销,然而在实际使用中,许多用户都曾遇到一个令人困惑的难题:尽管业务流量看似平稳,月底却收到了远超预期的账单,其主要原因来自数据传输(流量)的超额费用。本文将介绍一种方案来监控和自动扩容Lightsail来避免流量超出导致的额外账单。

Lightsail流量计算规则

  • Lightsail每台累计流量单独计算
  • 所有Lightsail产生的流量会均分到区域已启动的所有相同的Lightsail作为累计流量
  • 任意一台流量累计超过限额则会产生费用
  • 删除/停机无法避免流量继续累计
  • 流量周期为自然月
  • Lightsail实例按包月价格平均到小时收费

监控思路

  • 基于产生流量均分的规则,Lightsail流量相当于一个区域级别的流量池,扩容可以减少流量对于每台Lightsail的累计速度
  • 监控需要根据每个月的时间进度对比流量使用进度来进行预警和扩容,这样是最安全可靠的方式
  • 计算当月运行时长最久实例的剩余流量 x 区域相同lightsail的数量 = 当月剩余流量池
  • 自动扩容逻辑:当月运行时长最久实例的剩余流量 x (区域相同lightsail的数量 +扩容数量)= 当月剩余流量池
  • 扩容的机器可以只启动不使用,可以避免业务上的修改配置
  • 监控部署在Lambda,输出可选email/短信/电话/im机器人消息等各种灵活渠道
  • 推荐监控周期,一天 2~6次(基于预测,不需要太过密集,也可以提高监控频率)

监控流程图

方案架构

这个方案架构较为简单,直接使用Event Bridge来进行定时任务触发,使用Lambda来进行逻辑检测和自动扩容逻辑,使用SNS来进行通知

告警输出&可选参数

  • 告警输出可以根据需要,编写各种渠道的报警,比如短信、邮件、IM的告警 (一般IM都会有机器人,开放一个公开的api来使用)
  • 在监控流程中,调整缓冲流量大小,可以最大程度的避免流量超出费用,比如当月时间已过50%,这时候流量使用了流量池的45%,这时候也启动扩容,避免后续出现风险
  • 也可以每日都输出一个报表,报告流量使用的进度,同时证明这个监控在运行

场景示例一

  • 月初$5 bundle的Lightsail 有100台,这时候流量池供100T
  • 15日监控检测到使用了55T,时间进度为50%,流量进度为55%,每台Lightsail剩余流量45T
  • 触发告警和自动扩容
  • 预测该月剩余时长使用55T,需要扩容 (55T/0.45T) -100 = 23台
  • 流量损耗(0.55T*23) = 12.65T

场景示例二

  • 月初$5 bundle的Lightsail 有300台,这时候流量池供300T
  • 5日检测使用流量60T,时间进度为1/6,流量进度为1/5. 每台Lightsail剩余流量8T
  • 触发告警和自动扩容
  • 预测该月剩余时长使用300T流量,需要扩容(300T/0.8T)-300 = 75台
  • 流量损耗2T*75 = 15T

总结

本方案核心逻辑是根据流量使用的进度和自然月时间流逝的进度对比来预测流量是否够用。通过进度来进行预测监控,可以更早发现进度异常进行监控和自动扩容,最大程度的避免流量超出。月中扩容会有一定的流量损耗,但根据按小时计费的规则,如果按进度来监控,实际损失不大。

本篇作者

邱鹏峻

亚马逊云科技解决方案架构师,专注于为企业提供基于亚马逊云服务的架构设计、技术咨询及最佳实践指导,具有多年一线研发经验。