Step scaling和Simple scaling

Step scalingsimple scaling都需要从CloudWatch alarm里拿指标数据,用户需要定义当检测到达到阈值后ASG如何进行扩容

一般建议优先使用target tracking scaling方式,因为它可以根据线上的负载成正比扩容;如果需要额外的补充扩容方式,则可以额外配置step scaling作为更加激进的扩容方式

step scaling和simple scaling比较

相同之处:

  1. 两种方式都需要配置CloudWatch alarm指标,而且需要配置两个alarm(触发扩容和缩容的条件)。
  2. 都需要配置触发条件后,增加或减少具体多少台机器

不同点:

  1. 绝大部分场景,step scaling优于simple scalingsimple scaling的最大问题在于它有冷确时间(cooldown period),前面我们也介绍过这个设计;而step scaling即使在扩缩容活动发生后,仍然可以响应其他的触发条件
  2. 一开始,AWS ASG只有simple scalingtarget trackingstep scaling是后面AWS才推出的特性。所以你懂的,越新的通常越好

Demo

在这一部分,我们将简单演示两种扩容方式如何创建

创建CloudWatch Alarm

一开始提到,Step scalingsimple scaling都需要从CloudWatch alarm里拿指标数据,所以我们要提前创建好一个alarm:

image-20221005213719522

选择任意一台EC2的CPU使用率(或者其他监控指标,本节只演示如何创建,不会测试实际效果)当作监控指标:

image-20221005213759522

当CPU使用率大于60的时候触发告警:

image-20221005213817894

选择好SNS当作通知目标,将alarm命名为EC2CPUForASG,最后创建好alarm:

image-20221005213850243

配置Step scaling

在ASG控制台上创建一个新的Dynamic scaling policy:

image-20221005214615247

选择step scaling类型,并选择上面创建好的alarm:

image-20221005214116353

此时我们可以配置具体的扩容策略:

  • 如果CPU使用率在60-80%,则每次扩容1台EC2

  • 如果CPU使用率在80-90%,则每次扩容3台EC2

  • 如果CPU使用率在90-100%,则每次扩容5台EC2

所以Step scaling在线上流量突增时,能够采取更激进的扩容方案来应对

Simple scaling

在ASG控制台上创建一个新的Dynamic scaling policy,选择Simple scaling类型:

image-20221005214159556

Simple scaling只支持固定数量的扩缩容方式,比如一次增加/移除 2台EC2;或者当触发告警时,把ASG机器数量设置成固定某个值