弹性伸缩(Elastic Scaling Service,ESS),是阿里云提供的一种弹性计算资源管理服务,能够根据您的业务需求与策略,动态的调整计算资源,在业务高峰时,为您增加 ECS 实例,同时,在业务低谷时,减少 ECS 实例,使用ESS服务管理您的 ESC 实例能够有效降低您的生产成本。在 ESS 中,您除了能够购买 按量付费 类型的实例之外,还能够购买 竞价实例(spot instance),在 ESS 的伸缩配置中,选用竞价实例,你将可以享受竞价实例优惠价格(价格波动是按量付费价格的1~10折),同时,当竞价实例的市场价格高于您设定的最高出价,导致您的实例被释放时,ESS 将尝试为您创建新的竞价实例,尽可能的保证伸缩组所需的最小实例数。
弹性伸缩服务(ESS)
弹性伸缩服务可以帮助您建立一组 ECS 实例的集合,称为伸缩组。您可以指定伸缩组中拥有的实例个数的最小值和最大值,ESS 会通过弹性扩张,弹性收缩,弹性自愈的方式保证伸缩组中的实例个数不小于最小值,并且不大于最大值,同时,您可以根据自己的业务特点制定自己的弹性伸缩策略,目前 ESS 提供了定时任务和监控任务两种方式,您可以据此制定您的伸缩策略。
考虑下述的业务场景,您的公司业务具有较强的时间性,比如您提供了一种票务预订服务,在周内的时候,使用您服务的客户较少,而在周末以及其他节假日时,您的应用服务人数会剧增。在传统的解决方法中,用户通常有两种选择方案。
一种是事先准备较多的机器,以应对服务高峰期的需求,但是这种方式将造成计算能力的在周内的时候过剩,造成了额外的浪费
第二种方法是合适的评估业务需求,选择一个合适的或者需求的平均值,这种方式在周内通常能够很好的提供服务,但是在周末需求高峰期,将不能满足服务需求,这很可能将导致服务的不可用或者较差的用户体验。
当然,用户还有另外的选择,那就是,周内的时候,使用较少的机器,每当节假日,则手动增加额外的机器,应对服务需求的增长。但是,这将大大的增加管理和运维的成本。
使用 ESS 服务管理您的 ECS 实例,您便可以制定定时的扩容/缩容策略,在周末来临时增加额外的实例,在周末结束时,再释放这些机器。同时,这些伸缩过程都将由 ESS 为您保证可靠,稳定的执行。
使用 ESS 服务将有效的减少您的服务器成本,运维成本和管理成本,关于 ESS 的详细介绍您可以参考 弹性伸缩 相关文档。
竞价实例(spot instance)
竞价实例是一种按照供需关系变化价格波动的一种后付费类型实例,相对于按量付费实例价格有较低的折扣。使用竞价实例的时候,您可以对 ECS 实例进行出价,设定您的最高出价,ECS 竞价实例的市场价格会根据当前的供需关系浮动(目前价格波动是按量付费价格的1~10折),您的出价将确保您不会以超过您最高出价的价格购买 ECS 实例,当市场价格高于您的最高出价时,阿里云将不会为您生产 ECS 实例,这将保证您的生产成本不会超出您从预期。
需要注意的是,竞价实例低廉的价格也伴随着一定的风险,当市场价格高于您的最高出价,或者市场供需严重不均衡时,阿里云有权释放您的 ECS 实例。当然,在释放前5分钟,阿里云将会进行meta信息的通知,您可以订阅阿里云metasdata的信息,以便您能够及时的进行数据的保存和清理。
合理的使用竞价实例,相比于同规格按量付费实例将会为您节约大量的服务器成本
竞价实例最佳适用场景:
- 实时分析业务
- 大数据业务
- 图像和媒体编码业务
- 科学计算业务
- 可弹性伸缩的业务站点、网络爬虫业务
- 图像和媒体编码业务
- 基因计算业务
- 地理空间勘测分析业务
使用ESS管理竞价实例
ESS 通过伸缩组的概念来管理同一伸缩组内的 ECS 实例,通过伸缩配置来指定所管理实例的规格,网络等具体配置,通过伸缩规则来制定管理伸缩组的策略,同时,还提供了报警任务,用户可以定时,或者按照云监控的相关指标来进行伸缩规则的执行。ESS同时提供了更多丰富的服务,这些服务使得您方便,高效的管理多个 ECS 实例,更为重要的是 ESS 为互不相关的实例,提供了逻辑上的 组 的概念。
使用 ESS 服务来管理竞价实例类似于管理普通按量付费实例,但是使用竞价实例时,您可以对 ECS 实例进行最高出价,当市场价格低于您的最高出价时,则为您创建实例,对于一些需要严格控制生产成本的应用场景下,您可能需要在较低价格出购买实例,而在价格较高时释放掉实例,靠人工去完成这样的过程将会耗费巨大的人力成本,并且是不可靠的。而利用ESS的特性,伸缩组将尽量保证组内实例的最小个数,对于采用竞价实例的伸缩配置,在市场价格高于您的最高出价时,此时无法成功创建实例,或者现有实例可能被释放,但是,ESS 将自动尝试为您创建新的实例,以保证组内最小实例数,这意味着,当市场价格降低,ESS 将为您创建新的实例。
最佳实践
为了使您能够更加清晰的了解如何使用 ESS 弹性伸缩服务创建使用竞价实例的伸缩组,本节将手把手的教您如何创建伸缩组和创建使用竞价实例的伸缩配置。
创建伸缩组
使用弹性伸缩服务,第一步需要做的就是创建一个伸缩组。您可以登录 ESS控制台,点击右上角的创建伸缩组按钮,然后将弹出伸缩组创建的对话框,如下图所示:
首先,您需要为您的伸缩组起一个容易区分的名字,然后指定伸缩组最大和最小实例个数,ESS 将为您保证伸缩组内的实例个数不小于该最小值,同时不大于该最大值。
默认冷却时间是指一个伸缩活动完成之后,在该冷却时间内不执行其他伸缩活动。关于冷却时间的详细含义您可以参考 ESS冷却时间。这里我们使用了默认值300秒。
移出策略是指当需要从伸缩组移出 ECS 实例并且有多种选择时,则按该策略选择需要移出的 ECS 实例。ECS 实例移出伸缩组的策略参考 ,这里使用了默认的移除策略。
ESS支持创建经典网络和专有网络两种网络类型的实例,当您选择专有网络类型时,您需要指定专有网络以及对应的虚拟交换机,您可以指定一个以上的交换机,这将使得您的伸缩组可以跨可用区,提高伸缩活动成功的概率。
您同时也可以指定您的负载均衡实例以及数据库实例,当然,您也可以稍后再通过修改伸缩组来进行添加。这里我们没有选择添加负载均衡和数据库实例,仅创建一个最简单的伸缩组。
创建伸缩配置
在创建完伸缩组之后,将会弹出创建伸缩配置对话框,如下图:
点击,创建伸缩配置按钮,将进入创建伸缩配置的页面,如图:
当然,您也可以在伸缩组列表页点击添加伸缩配置,进入创建伸缩配置页面。
下面我们将创建使用竞价实例的伸缩配置
如图所示,我们选择竞价实例的计费方式,然后选择您想要的实例规格(ecs.n1.tiny),在选定实例规格之后将要求您设置单台实例规格上限价格,后面的一行字提示您实例当前的价格区间以及查看历史价格的链接。您应当设定一个合理的上限价格,以免您由于市场价格高于您的最高出价而导致实例释放。
在完成上述操作后,您只需要类似普通ECS实例的创建过程,配置实例的镜像,带宽,公网,安全组等信息。除此之外,ESS 弹性伸缩配置中新增了 UserData、KeyPair、RamRole、Tags 四个特性,关于这些特性的详细配置,您可以参考 让 ESS 更灵活的新特性:UserData & KeyPair & RamRole & Tags。
至此,您已经成功的创建了使用竞价实例的伸缩配置。
启用伸缩组和伸缩配置
在成功的创建一个伸缩配置之后,将会弹出创建成功的对话框,在该对话框中您可以选择启用该伸缩配置。
当然,您也可以稍后在伸缩组中查看伸缩配置列表页,选用您想要使用的伸缩配置如下图所示:
在启动伸缩配置之后,您就可以启动您的伸缩组了,启动伸缩组可以在 伸缩组列表页 进行启动。
验证伸缩活动
本文示例中创建的伸缩组最小实例数为3,最大实例数为9,在成功启动伸缩组之后我们在伸缩组的伸缩活动信息中可以看到生成了一条伸缩活动,我们可以查看绳索活动的简要信息,下图中的伸缩活动限时执行了添加3台ECS实例的活动,执行状态为成功,点击查看详情将在页面下方显示伸缩活动的详情。
点击ECS实例列表,可以查看当前伸缩组中的实例信息:
可以看到,伸缩组中成功加入了三台ECS实例,并且,实例类型都为竞价实例。
当伸缩组中的ECS竞价实例由于市场价格高于您设定的最高出价而被释放,伸缩组健康状态检查将标记伸缩组内实例状态为不健康。
ESS将负责把不健康状态的实例移除伸缩组,当伸缩组中的三个实例被移除,此时,伸缩组内实例数不满足伸缩组最小实例数要求,ESS将为您自动创建新的实例,满足伸缩组最小实例数。在伸缩活动列表页我们可以看到,伸缩组成功执行了3个伸缩活动
- 创建了3台竞价实例,加入伸缩组,组内实例数达到伸缩组最小实例数
- 从伸缩组中移除了3台竞价实例
- 再次创建3台竞价实例,加入伸缩组,使组内实例数再次达到伸缩组最小实例数
写在最后
ESS 为您提供了一种高效,灵活的管理 ECS 实例的方式,使用 ESS 可以帮助您适应业务的不断变化,及时的响应业务的需求,进行服务的快速部署和管理。在业务高峰期和低谷期,ESS 将根据您制定的策略进行自动的扩容和缩容,这将有效的降低您的服务器成本已经运维管理成本,配合使用竞价实例,你可以为伸缩组中的实例指定您的最高出价,当市场价格高于您的最高出价而导致实例释放时,ESS 将尝试为您重新生产新的实例,尽力保证伸缩组内拥有最小个数的实例。针对特定的特务场景,这将在 ESS 的基础上进一步降低您的生产成本,让 ESS 省上加省。