Step scaling
和simple scaling
都需要从CloudWatch alarm
里拿指标数据,用户需要定义当检测到达到阈值后ASG如何进行扩容
一般建议优先使用target tracking scaling
方式,因为它可以根据线上的负载成正比扩容;如果需要额外的补充扩容方式,则可以额外配置step scaling
作为更加激进的扩容方式
相同之处:
CloudWatch alarm
指标,而且需要配置两个alarm(触发扩容和缩容的条件)。不同点:
step scaling
优于simple scaling
。simple scaling
的最大问题在于它有冷确时间(cooldown period
),前面我们也介绍过这个设计;而step scaling
即使在扩缩容活动发生后,仍然可以响应其他的触发条件simple scaling
;target tracking
和step scaling
是后面AWS才推出的特性。所以你懂的,越新的通常越好在这一部分,我们将简单演示两种扩容方式如何创建
一开始提到,Step scaling
和simple scaling
都需要从CloudWatch alarm
里拿指标数据,所以我们要提前创建好一个alarm:
选择任意一台EC2的CPU使用率(或者其他监控指标,本节只演示如何创建,不会测试实际效果)当作监控指标:
当CPU使用率大于60的时候触发告警:
选择好SNS当作通知目标,将alarm命名为EC2CPUForASG
,最后创建好alarm:
在ASG控制台上创建一个新的Dynamic scaling policy
:
选择step scaling
类型,并选择上面创建好的alarm:
此时我们可以配置具体的扩容策略:
如果CPU使用率在60-80%,则每次扩容1台EC2
如果CPU使用率在80-90%,则每次扩容3台EC2
如果CPU使用率在90-100%,则每次扩容5台EC2
所以Step scaling
在线上流量突增时,能够采取更激进的扩容方案来应对
在ASG控制台上创建一个新的Dynamic scaling policy
,选择Simple scaling
类型:
Simple scaling
只支持固定数量的扩缩容方式,比如一次增加/移除 2台EC2;或者当触发告警时,把ASG机器数量设置成固定某个值