导读:
如何方便快速应对业务变化造成资源的弹性需求?
如何在高可用和低成本间找到更合适的解决方案?
本次分享主要帮助用户快速了解云上弹性能力和应用方式,同时通过弹性伸缩和弹性供应组多种方式实现成本优化。
作者 | 阿里云高级技术专家 贾少天
来源 | 弹性计算百晓生
01
ECS概况
ECS计算产品家族谱
ECS产品是云服务器产品,具有各种各样实例规格,不同的实例规格具有不同适用场景,用户可通过自身使用的业务场景或是运行内所需性能等方面的考量选择适合自己的实例规格。针对不同的场景,我们所推荐的实例规格不同,如下图所示,对比自身业务领域的情况选择合适的实例规格。
ECS付费方式
阿里推出后付费和预付费两种付费类型。
后付费按照用户使用情况付费,按量付费是秒级计费方式,使用一秒钟或一分钟则收取一秒钟或一分钟的费用。抢占式实例是根据价格的意向来使用ECS,根据市场价格变化或是需求发展变化系统会随时进行资源释放,但可以保障用户最低一个小时的使用,且用户必须保证业务产品是无状态业务产品,这样可以更大程度上降低业务成本。
预付费模式可按月、按年、按周的方式购买实例规格,如果用户预期两年内使用阿里云服务,则可选择按年方式购买,在年付费方式的基础上还具有各种各样的折扣。如果用户的业务场景预期以周为单位,例如已知下一周有大的负载情况或做一期业务场景活动推广等,则用户可按周的方式购买,同时也可按月方式购买,用户可根据自身的不同业务场景自定义选择购买方式。
另外在此基础上阿里还提供了预留实例,预留实例与包年包月相近,可按照年、月、周的方式购买,但该方式不根据资源实例规格长短定,用户可选择自身范围的实例规格在一定周期内使用,是资源与折扣的解耦。
用户可能会在这些实例规格和付费类型的选择方面存在各种各样的问题,不了解在什么情况下选择最合适的实例规格和付费类型,所以阿里会推荐一种面向业务的最佳实践。
购买包年包月资源或预留资源可作为基础业务负载的保证,例如购买二十台资源作为日常基础请求量的负载保证,在此基础上购买按量付费类型来支撑每天负载发生的变化,只要能快速扩容或是负载快速缩容,就可以使用比包年包月更低成本的资源。另外用户具有无状态的业务创建,可做到高容错,可在此基础上使用Spot扛最上面的高峰值。
希望通过包年包月、按量、抢占式三种付费类型的结合,让用户整体的成本达到最低的同时拥有高质量的服务器。
ECS资源弹性交付方式
阿里云提供四种ECS资源弹性交付方式,Create Instance是最早期提供的单实例支付方式,每次可交付一个实例。随着业务的发展在此基础上提供了Run Instances接口,单次可批量交付100+实例,但该支付方式限制单可用区和单实例规格。随后阿里提供弹性伸缩和弹性供应两个产品,来帮助用户解决更加复杂的业务需求。
弹性伸缩是自动化的交付工具,可以一次性批量交付(2000/50000)实例。
如果伸缩组配置的普通安全组,那伸缩组的最大实例数是2000,如果有更多实例的需求的话就需要配置企业安全组,同时一次配置后可重复使用。
另外,该产品支持定时和触发等功能,例如CPU达到70%时触发扩容,少于30%时触发缩容,或是用户对于自身业务场景非常清楚扩容的时机则可进行主动触发,预测功能可通过过去使用情况自动预测未来的发展变化,自动进行扩容缩容。
在此基础上该产品支持多可用区和多实例规格,方便用户在不同的可用区做高可用甚至提供更多的实例规格使成功率更高。另外还提供了成本优化模式。
弹性供应在原有基础上提供了交付资源至交付计算力的环节,同时也是ECS原生大规划交付方式。原先用户交付1000个实例,现在可以交付1000vCPU或是其他纬度的业务场景,变成一种灵活度很高的产品形态。同产品伸缩相同批量交付实例规格达(2000/50000),以及配置的重复使用。同时也支持按量+Spot+RI的组合。
云上弹性面临的挑战
用户在云上弹性方面面临各种各样的挑战:
-
例如某创业公司在app爆红后频繁无法访问,是由于业务突然大量涌入后业务增添的负担支撑不住这么大的压力;
-
或是在线视频网站每天早八点或中午十二点都会迎来业务的高峰期,而对于如何应对高峰期则可能需要定时的扩容缩容;
-
或艺人爆出八卦引发社交用户的热议,突然变为之前频率流量的十倍左右的负载,如何快速解决该类问题的扩容来满足业务场景;
-
或是双十一大促销需要临时扩容时企业如何准备;
-
以及业务低谷期也保有全量资源,闲置成本非常高时包年包月成本如何解决。
在云上很多时候会认为不可同时做到高可用和低成本,如果做到低成本可能顾不到高可用,在后面讲师会分享某些场景上可以同步做到高可用和低成本。
02
弹性伸缩
弹性伸缩概述
弹性应用的产品应该满足的业务场景有几种。首先是传统模式,会保有一部分资源,但该资源刚好可以扛住平时的高峰期,在低峰期就会形成资源浪费,或是在高分期扛不住,只能扛住业务的平均值时,那么在高峰期时会无法支持业务导致崩溃或不可用,又或是到一定程度需要扩容时要进行人工扩容,但是需要收容时还需人工自行判断。所以采用弹性伸缩就会自动根据整体业务负载的情况自动做扩容缩容,保证用户用最少的资源负载业务整体的变化。
从下图右边中可看到关于弹性伸缩整体提供的能力:
缩组最大实例数:以组的方式进行管理,最大实例数值为2000/50000。
组合方式:支持五种可用区和十种实例规格提高了整体资源交付的成功率。
三种策略:提供优先级策略、均衡策略及成本优化策略。优化策略是指用户可设置一批资源,该策略按照每种资源创建的成功率自动判断每种资源当前交付使用最快最高成功率的方式。均衡策略是指用户设置多个可用区后,在多个可用区下进行整体均衡的分配,这样可保证一旦某一个可用区下发现整体不可用时业务依旧可以继续有效运行。成本优化策略结合Spot+RI场景可帮助用户在稳定的同时做到低成本。
五种伸缩模式:定时、动态、人工、固定和健康检查模式。动态模式分为三种:简单、目标追踪和预测。简单伸缩策略可以定义为CPU达到70%时增加五台,CPU小于20%时减少三台,用户可根据自身经验判断当天需要扩缩的数量。目标追踪可定义为整体业务需要保持CPU达到60%,当业务高峰期CPU达到80%时这时系统会自动帮用户换算具体需要扩容多少资源才能满足业务不受损,当CPU降到40%或30%时系统会判断当前整体减少多少资源来保证业务最低运行。预测策略根据过去使用情况来预测未来的使用情况。
通过云监控实现弹性:支持十七种云监控指标进行触发包括ASMA、SLS等。
提供事件通知能力:事中+事后整体的事件订阅,可保证业务起到全局控制。
弹性伸缩核心概念
弹性伸缩的核心概念主要分为四种,如下图所示。
在伸缩组上设置弹性伸缩配置,例如实例规格种类,整体启动脚本的样式,使用登录方式以及镜像等,设置完可随时使用和修改。
在此基础上设置伸缩规则和通知,伸缩规则是指具体增加多少台减少多少台,或者按照目标追踪的方式设置CPU保持在70%,另外在每次成功或失败时可以订阅最终的结果到云监控或MNS消息队列中进行编程,来应对每次成功或失败的结果,里面会包含成功时扩容多少资源,资源ID是什么样的,或者对接到云监控系统或者钉钉,可以知道导致失败的原因并快速做出预警进行干预。
伸缩任务具有定时任务,支持一年和临时提醒功能,在一年期限到达前会及时进行提醒,报警任务涉及到CPU或Memory等,另外伸缩任务还可进行自动或手动触发。
多种伸缩模式
阿里云弹性计算提供不同的伸缩的规则,对应了不同的伸缩模式,包括:
健康模式:通过健康检查发现一些不健康ECS实例时会进行自动清理,并创建新实例来替换不健康实例。
固定模式:可设置最大值最小值实例期望数量来保证业务正常运行。
手工模式:用户如果对自己业务场景有非常详细的了解或自有监控系统时,可通过API方式执行手工模式。
定时模式:例如在线视频网站每天早八点或中午十二点会迎来业务的高峰期,可以在此期间进行定时扩容,度过高峰期的两三个小时后再缩容。
动态模式:通过负载变化进行扩容缩容。
多种伸缩模式灵活组合
图片中显示在不同场景下不同模式的表现。
定时模式,是在一个时间点扩容运行几个小时后再缩容,整体线条是直上直下的。
动态模式,是服务器的变化走向是与整体负载环境的变化走向一致,趋向于负载的变化。
手动+动态模式,购买包年包月资源作为底座来扛日常业务,高峰期的负载环境变化通过按年的方式扩容缩容来保证,这样整体稳定性更高,因为已有60%或70%的负载情况被cover,剩下的30%负载情况通过动态的方式cover。
定时+动态模式,说的则是例如资源扩容完后可能会发生数量变化,如有新电影或电视剧上映时具有高热度,此时原先扩容的值会不够用,则需要通过监控指标的变化在此基础上进一步扩容。
动态模式-预测模式,预测模式通过过去1-14天的CPU使用情况或实例个数的变化进行建模,通过机器学习预测算法预测未来2天整体的使用情况,并自动进行扩容缩容操作。
此场景适合非常规则的周期性场景,每天的业务在固定的时间点上进行固定变化,图片中展示的场景就很规律,每天都在固定的时间点周围进行扩容和缩容,这样所达到的预测结果会更加准确,所以推荐规则性的场景使用预测模式效果会更好。
该模式好处在于不用感知CPU的设置值,它会自动进行运算并自动判断多少实例可在此基础上满足当前的业务需要,是因为历史上实际的整体情况已经被纳入到所考虑的范围内。如果用户某一天做活动或推广的业务期间突然涌入大量流量时,也可叠加目标追踪模式,预测模式+目标追踪模式叠加后在发生变化时可自动感知和扩容,并在此基础上再进行扩容或缩容,所以频率性在遇到特殊的抖动或是特殊的变化时是有相关的规避方式的。
成本优化方案
前面讲解了解到阿里云ECS的多种付费方式以及弹性伸缩的多种策略之后,用户可以利用这两种能力来实现成本优化。接下来会讲解多种成本优化方案,用户可根据自身情况自行选择。
在ECS付费方式中提到了包年包月、按量付费和抢占式Spot等不同付费类型,这些付费类型可组合成多种成本优化方案。用户可根据上图中显示的六种方案选择成本最低稳定性更高的使用方式。
然而在方案选择上阿里平台则非常推荐A(预付费/RI+按量+Spot)方式,该方式将稳定性和低成本做到相对较好的结合,从上图右边图片中看出A方式的位置在四项中相对较好。但在此基础上也与其他产品进行了对比,例如B是预付费/RI+按量方式,C是预付费/RI+Spot方式,D是按量+Spot方式,E是全按量方式,F是全Spot方式。
因为Spot场景价格非常低,所以F方式的成本很低,而系统带来的一些释放行为,也是导致F方式的稳定性最差的原因。因此希望在F方式的基础上作出成本更低稳定性更高的使用方式,所以推出了成本优化模式新功能。
F方式(全Spot)在原先全部适用于一种实例规格的基础上,在此实例规格上做出一些调整,允许实例打散,将多种实例规格组合来满足资源的交付。下图中从左边一种实例规格到右边多种实例规格混合交付的方式,如果一次性交付是三种或四种,这样即便有一种实例规格出现问题也不会影响整体使用关联性。
另外,Spot在此基础上又提供了提前补偿机制,Spot实例在释放前五分钟可通过事件示例订阅此消息,在Spot实例释放前五分钟时自动开启补偿机制,知道某些实例被释放后就开始创建替换实例,创建完后立刻将Spot释放的实例替换掉,这样就不会出现图中左边断崖式释放。
否则,在Spot实例释放完后再重新创建替换实例中间的时间周期会导致一定的抖动,而右边提前五分钟在Spot实例还没有释放完时新的实例已经创建出来,所以业务上不会出现抖动情况。需要注意的一点是使用Spot实例时一定要保证业务是无状态的。
事件驱动
弹性伸缩提供的事件驱动能力,阿里在提供开放接口(OpenApi)的基础上又提供事件通知(Notification)和生命周期挂钩(Hook)的能力。通过这三种方式的结合可以让用户拥有更全面控制弹性伸缩组的能力。
关于事件通知和生命周期挂钩的职能,从图中可以看到扩容时需要创建资源、关联RDS白名单、启动中、运行中、挂载SLB并且最终加入到ESC弹性伸缩组中,而缩容时是从ESC弹性伸缩组挪出、取消SLB挂载、关机、取消RDS白名单、移除最终释放。
无论是扩容还是缩容最后执行结果时都会有事件通知,该事件通知可以通过事件订阅,例如MNS消息队列、CMS云监控、OOC运维编排方式订阅信息,然后将信息进行相关处理,可集成到自身系统中待资源成功时添加到系统当中,如果失败可进行自动化重试。
而生命周期挂钩在每一次扩容或缩容时会先发出消息,在用户接受到消息时可以判断当前这次扩容或缩容能否进行,例如创建实例后在挂载SLB之前会给用户发送消息,订阅消息后就可知道当前多少实例创建成功,并通过自身业务场景进行判断这些实例是否需要继续往下走,是否需要挂载SLB,是否需要最终交付到弹性伸缩组中。如果不需要,可直接选择Rollback,这些资源将会自动清理掉,如果需要就继续往下走最后添加到弹性伸缩组中。
缩容也是同样,当某些资源需要被释放时会将消息发送给用户,提示当前要释放哪些资源,用户在获取到消息后可以进行验证,看资源上的任务是否进行完毕,是否有数据需要进行同步和备份。
如果任务还未进行完毕时,用户可以选择等待或者直接取消,如果所有任务进行完毕且符合预期则可以继续往下走并进行释放。
通过生命周期挂钩能力和事件通知能力可以让用户了解到一个事件中所有行为的全面感知,这样无论是自己做业务报警还是系统集成,都拥有更全面的控制能力。
03
弹性供应
弹性供应(Auto provisioning)介绍
弹性供应是一种全新算力交付方式,可以整合包年包月、按量和Spot多种能力的付费类型实例,并且跨实例规格族、跨可用区的计算集群交付。
其优势在于相比以前交付1000资源,现在在弹性供应上交付1000vCPU、交付1000Memory或者用户自身定义纬度应该交付的资源权重的样式,按照权重定义资源数量。
图中显示可定义当前伸缩组所有资源的比例,如33%按量资源和67%Spot资源,这样用户可在整体成本上自行控制,在自身想要的成本情况下来满足自身业务需要。最终交付的成果如图A、B、C、D,是多种实例规格多种可用区资源的整体结构。
弹性供应的基本组件
目标容量:定义目标容量,可以定义vCPU的维度、实例维度或者其他需要的维度。
实例权重:为每个实例规格都定义自己的权重,如果是按照vCPU维度定义的权重,最终交付的资源整体容量是以vCPU为维度,如果是以用户自己业务产品计算力或是推出能力去定义,最终的效果就是以自己产品的权重容量交付,此能力最大的好处在于完全依照自身方式去定义期望的结果。
实例优先级:交付实例时可以定义每一种实例先后顺序,这样在创建时可以优先极高的实例。
Instance Pool To Use Count:指在成本优化策略时,可以选择最便宜的实例规格数量,进行一定程度的多种实例规格打散,在弹性收缩中使用一种Spot实例时有可能出现大面积的Spot资源全部清零的情况,然而现在可以用Instance Pool设定几种可接触的最低价的Spot实例数量,例如数量设定为三种时,资源创建的时候救可以选择最低价的三种Spot实例进行创建,这样即便出现一种Spot实例释放也不会导致整体业务受到损失。
弹性供应的产品优势
超低成本:如果全部使用Spot实例交付时,最高可节省90%的成本,同时也可设置全局和单个实例规格价格上限,这样用户可以完全保证低成本,如果超过上限阿里就会帮助取消创建的资格,只有满足用户定义的范围之内才可进行创建。
多种策略组合:可以支持所有的按量资源的实例交付策略或是具体成本的数量。
快速交付:单个供应组支持20种实例规格和多可用区部署,可分钟级快速交付2000实例。
智能打散:降低Spot被整体释放的风险,自动托管,分钟级巡检,动态保证集群的整体算力。
产品链接
如果用户对弹性伸缩或弹性供应相关产品有兴趣的话,可以点进链接查看,该产品是在云上解决希望用云上弹性降低整体成本的需求。
现在无论是电商或是视频类等许多用户都在使用该产品解决自身的业务问题,使用的效果也非常不错,可以以更低的价格保证自己的业务运行。尤其现在大部分用户都对成本有需求时,阿里也提供了很多种新功能,包括滚动升级等功能帮助用户在使用产品的过程中可以更好的融合到业务中。
因为资源交付置换的下一步就是如何进行应用发布等流程。用户后续如果有相关的问题可以在系统中提出,阿里也会在后续的具体细节中与用户进行沟通。
弹性伸缩
产品介绍页:https://www.aliyun.com/product/ecs/ess
产品文档:https://help.aliyun.com/document_detail/25857.html
产品控制台:https://essnew.console.aliyun.com/
弹性供应
产品文档:https://help.aliyun.com/document_detail/120020.html
产品控制台:https://ecs.console.aliyun.com/#/fleet/region/
关注百晓生,笑谈云计算
导读:
如何方便快速应对业务变化造成资源的弹性需求?
如何在高可用和低成本间找到更合适的解决方案?
本次分享主要帮助用户快速了解云上弹性能力和应用方式,同时通过弹性伸缩和弹性供应组多种方式实现成本优化。
作者 | 阿里云高级技术专家 贾少天
来源 | 弹性计算百晓生
01
ECS概况
ECS计算产品家族谱
ECS产品是云服务器产品,具有各种各样实例规格,不同的实例规格具有不同适用场景,用户可通过自身使用的业务场景或是运行内所需性能等方面的考量选择适合自己的实例规格。针对不同的场景,我们所推荐的实例规格不同,如下图所示,对比自身业务领域的情况选择合适的实例规格。
ECS付费方式
阿里推出后付费和预付费两种付费类型。
后付费按照用户使用情况付费,按量付费是秒级计费方式,使用一秒钟或一分钟则收取一秒钟或一分钟的费用。抢占式实例是根据价格的意向来使用ECS,根据市场价格变化或是需求发展变化系统会随时进行资源释放,但可以保障用户最低一个小时的使用,且用户必须保证业务产品是无状态业务产品,这样可以更大程度上降低业务成本。
预付费模式可按月、按年、按周的方式购买实例规格,如果用户预期两年内使用阿里云服务,则可选择按年方式购买,在年付费方式的基础上还具有各种各样的折扣。如果用户的业务场景预期以周为单位,例如已知下一周有大的负载情况或做一期业务场景活动推广等,则用户可按周的方式购买,同时也可按月方式购买,用户可根据自身的不同业务场景自定义选择购买方式。
另外在此基础上阿里还提供了预留实例,预留实例与包年包月相近,可按照年、月、周的方式购买,但该方式不根据资源实例规格长短定,用户可选择自身范围的实例规格在一定周期内使用,是资源与折扣的解耦。
用户可能会在这些实例规格和付费类型的选择方面存在各种各样的问题,不了解在什么情况下选择最合适的实例规格和付费类型,所以阿里会推荐一种面向业务的最佳实践。
购买包年包月资源或预留资源可作为基础业务负载的保证,例如购买二十台资源作为日常基础请求量的负载保证,在此基础上购买按量付费类型来支撑每天负载发生的变化,只要能快速扩容或是负载快速缩容,就可以使用比包年包月更低成本的资源。另外用户具有无状态的业务创建,可做到高容错,可在此基础上使用Spot扛最上面的高峰值。
希望通过包年包月、按量、抢占式三种付费类型的结合,让用户整体的成本达到最低的同时拥有高质量的服务器。
ECS资源弹性交付方式
阿里云提供四种ECS资源弹性交付方式,Create Instance是最早期提供的单实例支付方式,每次可交付一个实例。随着业务的发展在此基础上提供了Run Instances接口,单次可批量交付100+实例,但该支付方式限制单可用区和单实例规格。随后阿里提供弹性伸缩和弹性供应两个产品,来帮助用户解决更加复杂的业务需求。
弹性伸缩是自动化的交付工具,可以一次性批量交付(2000/50000)实例。
如果伸缩组配置的普通安全组,那伸缩组的最大实例数是2000,如果有更多实例的需求的话就需要配置企业安全组,同时一次配置后可重复使用。
另外,该产品支持定时和触发等功能,例如CPU达到70%时触发扩容,少于30%时触发缩容,或是用户对于自身业务场景非常清楚扩容的时机则可进行主动触发,预测功能可通过过去使用情况自动预测未来的发展变化,自动进行扩容缩容。
在此基础上该产品支持多可用区和多实例规格,方便用户在不同的可用区做高可用甚至提供更多的实例规格使成功率更高。另外还提供了成本优化模式。
弹性供应在原有基础上提供了交付资源至交付计算力的环节,同时也是ECS原生大规划交付方式。原先用户交付1000个实例,现在可以交付1000vCPU或是其他纬度的业务场景,变成一种灵活度很高的产品形态。同产品伸缩相同批量交付实例规格达(2000/50000),以及配置的重复使用。同时也支持按量+Spot+RI的组合。
云上弹性面临的挑战
用户在云上弹性方面面临各种各样的挑战:
-
例如某创业公司在app爆红后频繁无法访问,是由于业务突然大量涌入后业务增添的负担支撑不住这么大的压力;
-
或是在线视频网站每天早八点或中午十二点都会迎来业务的高峰期,而对于如何应对高峰期则可能需要定时的扩容缩容;
-
或艺人爆出八卦引发社交用户的热议,突然变为之前频率流量的十倍左右的负载,如何快速解决该类问题的扩容来满足业务场景;
-
或是双十一大促销需要临时扩容时企业如何准备;
-
以及业务低谷期也保有全量资源,闲置成本非常高时包年包月成本如何解决。
在云上很多时候会认为不可同时做到高可用和低成本,如果做到低成本可能顾不到高可用,在后面讲师会分享某些场景上可以同步做到高可用和低成本。
02
弹性伸缩
弹性伸缩概述
弹性应用的产品应该满足的业务场景有几种。首先是传统模式,会保有一部分资源,但该资源刚好可以扛住平时的高峰期,在低峰期就会形成资源浪费,或是在高分期扛不住,只能扛住业务的平均值时,那么在高峰期时会无法支持业务导致崩溃或不可用,又或是到一定程度需要扩容时要进行人工扩容,但是需要收容时还需人工自行判断。所以采用弹性伸缩就会自动根据整体业务负载的情况自动做扩容缩容,保证用户用最少的资源负载业务整体的变化。
从下图右边中可看到关于弹性伸缩整体提供的能力:
缩组最大实例数:以组的方式进行管理,最大实例数值为2000/50000。
组合方式:支持五种可用区和十种实例规格提高了整体资源交付的成功率。
三种策略:提供优先级策略、均衡策略及成本优化策略。优化策略是指用户可设置一批资源,该策略按照每种资源创建的成功率自动判断每种资源当前交付使用最快最高成功率的方式。均衡策略是指用户设置多个可用区后,在多个可用区下进行整体均衡的分配,这样可保证一旦某一个可用区下发现整体不可用时业务依旧可以继续有效运行。成本优化策略结合Spot+RI场景可帮助用户在稳定的同时做到低成本。
五种伸缩模式:定时、动态、人工、固定和健康检查模式。动态模式分为三种:简单、目标追踪和预测。简单伸缩策略可以定义为CPU达到70%时增加五台,CPU小于20%时减少三台,用户可根据自身经验判断当天需要扩缩的数量。目标追踪可定义为整体业务需要保持CPU达到60%,当业务高峰期CPU达到80%时这时系统会自动帮用户换算具体需要扩容多少资源才能满足业务不受损,当CPU降到40%或30%时系统会判断当前整体减少多少资源来保证业务最低运行。预测策略根据过去使用情况来预测未来的使用情况。
通过云监控实现弹性:支持十七种云监控指标进行触发包括ASMA、SLS等。
提供事件通知能力:事中+事后整体的事件订阅,可保证业务起到全局控制。
弹性伸缩核心概念
弹性伸缩的核心概念主要分为四种,如下图所示。
在伸缩组上设置弹性伸缩配置,例如实例规格种类,整体启动脚本的样式,使用登录方式以及镜像等,设置完可随时使用和修改。
在此基础上设置伸缩规则和通知,伸缩规则是指具体增加多少台减少多少台,或者按照目标追踪的方式设置CPU保持在70%,另外在每次成功或失败时可以订阅最终的结果到云监控或MNS消息队列中进行编程,来应对每次成功或失败的结果,里面会包含成功时扩容多少资源,资源ID是什么样的,或者对接到云监控系统或者钉钉,可以知道导致失败的原因并快速做出预警进行干预。
伸缩任务具有定时任务,支持一年和临时提醒功能,在一年期限到达前会及时进行提醒,报警任务涉及到CPU或Memory等,另外伸缩任务还可进行自动或手动触发。
多种伸缩模式
阿里云弹性计算提供不同的伸缩的规则,对应了不同的伸缩模式,包括:
健康模式:通过健康检查发现一些不健康ECS实例时会进行自动清理,并创建新实例来替换不健康实例。
固定模式:可设置最大值最小值实例期望数量来保证业务正常运行。
手工模式:用户如果对自己业务场景有非常详细的了解或自有监控系统时,可通过API方式执行手工模式。
定时模式:例如在线视频网站每天早八点或中午十二点会迎来业务的高峰期,可以在此期间进行定时扩容,度过高峰期的两三个小时后再缩容。
动态模式:通过负载变化进行扩容缩容。
多种伸缩模式灵活组合
图片中显示在不同场景下不同模式的表现。
定时模式,是在一个时间点扩容运行几个小时后再缩容,整体线条是直上直下的。
动态模式,是服务器的变化走向是与整体负载环境的变化走向一致,趋向于负载的变化。
手动+动态模式,购买包年包月资源作为底座来扛日常业务,高峰期的负载环境变化通过按年的方式扩容缩容来保证,这样整体稳定性更高,因为已有60%或70%的负载情况被cover,剩下的30%负载情况通过动态的方式cover。
定时+动态模式,说的则是例如资源扩容完后可能会发生数量变化,如有新电影或电视剧上映时具有高热度,此时原先扩容的值会不够用,则需要通过监控指标的变化在此基础上进一步扩容。
动态模式-预测模式,预测模式通过过去1-14天的CPU使用情况或实例个数的变化进行建模,通过机器学习预测算法预测未来2天整体的使用情况,并自动进行扩容缩容操作。
此场景适合非常规则的周期性场景,每天的业务在固定的时间点上进行固定变化,图片中展示的场景就很规律,每天都在固定的时间点周围进行扩容和缩容,这样所达到的预测结果会更加准确,所以推荐规则性的场景使用预测模式效果会更好。
该模式好处在于不用感知CPU的设置值,它会自动进行运算并自动判断多少实例可在此基础上满足当前的业务需要,是因为历史上实际的整体情况已经被纳入到所考虑的范围内。如果用户某一天做活动或推广的业务期间突然涌入大量流量时,也可叠加目标追踪模式,预测模式+目标追踪模式叠加后在发生变化时可自动感知和扩容,并在此基础上再进行扩容或缩容,所以频率性在遇到特殊的抖动或是特殊的变化时是有相关的规避方式的。
成本优化方案
前面讲解了解到阿里云ECS的多种付费方式以及弹性伸缩的多种策略之后,用户可以利用这两种能力来实现成本优化。接下来会讲解多种成本优化方案,用户可根据自身情况自行选择。
在ECS付费方式中提到了包年包月、按量付费和抢占式Spot等不同付费类型,这些付费类型可组合成多种成本优化方案。用户可根据上图中显示的六种方案选择成本最低稳定性更高的使用方式。
然而在方案选择上阿里平台则非常推荐A(预付费/RI+按量+Spot)方式,该方式将稳定性和低成本做到相对较好的结合,从上图右边图片中看出A方式的位置在四项中相对较好。但在此基础上也与其他产品进行了对比,例如B是预付费/RI+按量方式,C是预付费/RI+Spot方式,D是按量+Spot方式,E是全按量方式,F是全Spot方式。
因为Spot场景价格非常低,所以F方式的成本很低,而系统带来的一些释放行为,也是导致F方式的稳定性最差的原因。因此希望在F方式的基础上作出成本更低稳定性更高的使用方式,所以推出了成本优化模式新功能。
F方式(全Spot)在原先全部适用于一种实例规格的基础上,在此实例规格上做出一些调整,允许实例打散,将多种实例规格组合来满足资源的交付。下图中从左边一种实例规格到右边多种实例规格混合交付的方式,如果一次性交付是三种或四种,这样即便有一种实例规格出现问题也不会影响整体使用关联性。
另外,Spot在此基础上又提供了提前补偿机制,Spot实例在释放前五分钟可通过事件示例订阅此消息,在Spot实例释放前五分钟时自动开启补偿机制,知道某些实例被释放后就开始创建替换实例,创建完后立刻将Spot释放的实例替换掉,这样就不会出现图中左边断崖式释放。
否则,在Spot实例释放完后再重新创建替换实例中间的时间周期会导致一定的抖动,而右边提前五分钟在Spot实例还没有释放完时新的实例已经创建出来,所以业务上不会出现抖动情况。需要注意的一点是使用Spot实例时一定要保证业务是无状态的。
事件驱动
弹性伸缩提供的事件驱动能力,阿里在提供开放接口(OpenApi)的基础上又提供事件通知(Notification)和生命周期挂钩(Hook)的能力。通过这三种方式的结合可以让用户拥有更全面控制弹性伸缩组的能力。
关于事件通知和生命周期挂钩的职能,从图中可以看到扩容时需要创建资源、关联RDS白名单、启动中、运行中、挂载SLB并且最终加入到ESC弹性伸缩组中,而缩容时是从ESC弹性伸缩组挪出、取消SLB挂载、关机、取消RDS白名单、移除最终释放。
无论是扩容还是缩容最后执行结果时都会有事件通知,该事件通知可以通过事件订阅,例如MNS消息队列、CMS云监控、OOC运维编排方式订阅信息,然后将信息进行相关处理,可集成到自身系统中待资源成功时添加到系统当中,如果失败可进行自动化重试。
而生命周期挂钩在每一次扩容或缩容时会先发出消息,在用户接受到消息时可以判断当前这次扩容或缩容能否进行,例如创建实例后在挂载SLB之前会给用户发送消息,订阅消息后就可知道当前多少实例创建成功,并通过自身业务场景进行判断这些实例是否需要继续往下走,是否需要挂载SLB,是否需要最终交付到弹性伸缩组中。如果不需要,可直接选择Rollback,这些资源将会自动清理掉,如果需要就继续往下走最后添加到弹性伸缩组中。
缩容也是同样,当某些资源需要被释放时会将消息发送给用户,提示当前要释放哪些资源,用户在获取到消息后可以进行验证,看资源上的任务是否进行完毕,是否有数据需要进行同步和备份。
如果任务还未进行完毕时,用户可以选择等待或者直接取消,如果所有任务进行完毕且符合预期则可以继续往下走并进行释放。
通过生命周期挂钩能力和事件通知能力可以让用户了解到一个事件中所有行为的全面感知,这样无论是自己做业务报警还是系统集成,都拥有更全面的控制能力。
03
弹性供应
弹性供应(Auto provisioning)介绍
弹性供应是一种全新算力交付方式,可以整合包年包月、按量和Spot多种能力的付费类型实例,并且跨实例规格族、跨可用区的计算集群交付。
其优势在于相比以前交付1000资源,现在在弹性供应上交付1000vCPU、交付1000Memory或者用户自身定义纬度应该交付的资源权重的样式,按照权重定义资源数量。
图中显示可定义当前伸缩组所有资源的比例,如33%按量资源和67%Spot资源,这样用户可在整体成本上自行控制,在自身想要的成本情况下来满足自身业务需要。最终交付的成果如图A、B、C、D,是多种实例规格多种可用区资源的整体结构。
弹性供应的基本组件
目标容量:定义目标容量,可以定义vCPU的维度、实例维度或者其他需要的维度。
实例权重:为每个实例规格都定义自己的权重,如果是按照vCPU维度定义的权重,最终交付的资源整体容量是以vCPU为维度,如果是以用户自己业务产品计算力或是推出能力去定义,最终的效果就是以自己产品的权重容量交付,此能力最大的好处在于完全依照自身方式去定义期望的结果。
实例优先级:交付实例时可以定义每一种实例先后顺序,这样在创建时可以优先极高的实例。
Instance Pool To Use Count:指在成本优化策略时,可以选择最便宜的实例规格数量,进行一定程度的多种实例规格打散,在弹性收缩中使用一种Spot实例时有可能出现大面积的Spot资源全部清零的情况,然而现在可以用Instance Pool设定几种可接触的最低价的Spot实例数量,例如数量设定为三种时,资源创建的时候救可以选择最低价的三种Spot实例进行创建,这样即便出现一种Spot实例释放也不会导致整体业务受到损失。
弹性供应的产品优势
超低成本:如果全部使用Spot实例交付时,最高可节省90%的成本,同时也可设置全局和单个实例规格价格上限,这样用户可以完全保证低成本,如果超过上限阿里就会帮助取消创建的资格,只有满足用户定义的范围之内才可进行创建。
多种策略组合:可以支持所有的按量资源的实例交付策略或是具体成本的数量。
快速交付:单个供应组支持20种实例规格和多可用区部署,可分钟级快速交付2000实例。
智能打散:降低Spot被整体释放的风险,自动托管,分钟级巡检,动态保证集群的整体算力。
产品链接
如果用户对弹性伸缩或弹性供应相关产品有兴趣的话,可以点进链接查看,该产品是在云上解决希望用云上弹性降低整体成本的需求。
现在无论是电商或是视频类等许多用户都在使用该产品解决自身的业务问题,使用的效果也非常不错,可以以更低的价格保证自己的业务运行。尤其现在大部分用户都对成本有需求时,阿里也提供了很多种新功能,包括滚动升级等功能帮助用户在使用产品的过程中可以更好的融合到业务中。
因为资源交付置换的下一步就是如何进行应用发布等流程。用户后续如果有相关的问题可以在系统中提出,阿里也会在后续的具体细节中与用户进行沟通。
弹性伸缩
产品介绍页:https://www.aliyun.com/product/ecs/ess
产品文档:https://help.aliyun.com/document_detail/25857.html
产品控制台:https://essnew.console.aliyun.com/
弹性供应
产品文档:https://help.aliyun.com/document_detail/120020.html
产品控制台:https://ecs.console.aliyun.com/#/fleet/region/
关注百晓生,笑谈云计算