AWS Autoscaling的Scheduled Scaling(计划扩展)
介绍
除了用Alarm触发的Scaling Policy,AWS Autoscaling(ASG) 还提供了一个Scheduled Scaling(计划扩展)的功能。该功能主要用作一些流量可预测的情形。比如国外的Black Friday和国内6.18或双11这种活动时,就可以使用Scheduled Scaling来提前规划好机器数量。
详细说明和设置参见 AWS官方文档Scheduled Scaling for Amazon EC2 Auto Scaling。
例子
举基于如下场景的一个例子
- 正常流量下,2台服务器就可以支撑。
- 周一到周五的早上8点~10点间是流量高峰期,此时需要4台服务器才能支撑对应的流量。
- 10点过后恢复正常流量。
如上场景分解为2个Schedule Action
- 周一到周五每天早上8点,扩展服务器数量为4.
- 周一到周五每天早上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可以留空。
设置缩减
设置周一到周五的早上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可以留空。
扩展列表
设置就好后,在列表中可以看到所设置的Scheduled Action。
注意点
- Schedule Action中时间格式是按照UTC来设置的,进行设置时,需要将北京时间-8来换算成UTC时间
- 如果除了Scheduled Action以外,ASG还设置了Scaling Policies,那么设置Scheduled Action的时候,无论是扩展还是缩减,建议都只修改Min和Max,而将Desired Capacity都留空。这样可以让ASG使用Scaling Policies判定的Desired Capacity, 避免Scheduled Action和Scaling Policies之间有冲突。