介绍

除了用Alarm触发的Scaling Policy,AWS Autoscaling(ASG) 还提供了一个Scheduled Scaling(计划扩展)的功能。该功能主要用作一些流量可预测的情形。比如国外的Black Friday和国内6.18或双11这种活动时,就可以使用Scheduled Scaling来提前规划好机器数量。
详细说明和设置参见 AWS官方文档Scheduled Scaling for Amazon EC2 Auto Scaling

例子

举基于如下场景的一个例子

  1. 正常流量下,2台服务器就可以支撑。
  2. 周一到周五的早上8点~10点间是流量高峰期,此时需要4台服务器才能支撑对应的流量。
  3. 10点过后恢复正常流量。

如上场景分解为2个Schedule Action

  1. 周一到周五每天早上8点,扩展服务器数量为4.
  2. 周一到周五每天早上10点,缩减服务器数量为2.

设置扩展

设置周一到周五的早上8点进行扩展
选中要设置的autoscaling组,点开[Scheduled Actions]的tab,点击Create Scheduled Action按钮。
设置如下:

  • Name: 设为WorkdayMorningScalingOut
  • Min: 设为4
  • Max和Desired Capacity为空,即Scheduled Actions策略不会修改ASG的对应值
  • Recurrence:
    • 下拉菜单选择Cron
    • 时间填写 0 0 * * 1-5 (Schedule Action中时间格式是按照UTC来设置的,因此北京时间8点,应该设置为UTC 0时)
  • Start Time和End Time可以留空。
    workday_morning_scaling_out.png

设置缩减

设置周一到周五的早上10点进行缩减
选中要设置的autoscaling组,点开[Scheduled Actions]的tab,点击Create Scheduled Action按钮。
设置如下:

  • Name: 起名为WorkdayMorningScalingIn
  • Min: 设为2
  • Max 为空
  • Desired Capacity 设为2。(注意如果ASG有Scaling Policies,那么此处建议留空,从而让ASG使用Scaling Policies判定的Desired Capacity)
  • Recurrence:
    • 下拉菜单选择Cron
    • 时间填写 0 2 * * 1-5 (Schedule Action中时间格式是按照UTC来设置的,因此北京时间10点,应该设置为UTC 2时)
  • Start Time和End Time可以留空。

workday_morning_scaling_in.png

扩展列表

设置就好后,在列表中可以看到所设置的Scheduled Action。
schedule_action_list.png

注意点

  1. Schedule Action中时间格式是按照UTC来设置的,进行设置时,需要将北京时间-8来换算成UTC时间
  2. 如果除了Scheduled Action以外,ASG还设置了Scaling Policies,那么设置Scheduled Action的时候,无论是扩展还是缩减,建议都只修改Min和Max,而将Desired Capacity都留空。这样可以让ASG使用Scaling Policies判定的Desired Capacity, 避免Scheduled Action和Scaling Policies之间有冲突。

Reference

留言