什么是弹性伸缩ESS

弹性伸缩(Elastic Scaling Service,简称ESS),也称为Auto Scaling,其能根据您设定的策略自动调整计算资源数量(即业务所需的实例数量),帮助您应对业务流量波动的同时,提高资源利用率,有效降低成本。

本视频以ECS实例为例介绍弹性伸缩产品。

前置概念

阅读本文前,您可能需要了解如下概念:

为什么选择弹性伸缩

在业务需求增长时,弹性伸缩自动增加指定类型的实例(即ECS实例或ECI实例),来保证计算能力;在业务需求下降时,弹性伸缩自动减少指定类型的实例(即ECS实例或ECI实例),来节约成本。当您的业务需求量有波动时,弹性伸缩能够帮助您自动调整指定类型的实例数量,以满足业务需求。

弹性伸缩可以为您提供以下优势:

优势

说明

自动化

  • 弹性扩张时,自动创建指定类型的实例,为该实例关联负载均衡服务,同时也支持为该实例自动关联RDS实例。

  • 弹性收缩时,自动移出指定类型的实例,为该实例取消关联负载均衡服务。同时也支持为该实例自动取消关联RDS实例。

降成本

无需投入大量人力来调整计算资源,无需提前预备计算资源,也无需担心不能及时释放冗余资源。弹性伸缩在适当的时间进行伸缩任务,降低资源拥有成本。

弹性伸缩会自动监测对应的伸缩指标(或期望实例数)的变化(检测频率默认是每分钟一次),如果检查到对应的伸缩指标与您指定的阈值不匹配,弹性伸缩会立即触发扩缩容活动。弹性伸缩的响应时间取决于以下因素:

  • 伸缩组中待扩缩容的实例启动时间,即实例从创建开始到创建完成且实例系统可以使用的时间。

  • 伸缩组中待扩缩容的实例数量。如果实例数量不超过千台,一般会在1分钟内完成扩缩容。

高可用

无需担心ECS实例或ECI实例的运行状态。弹性伸缩提供健康检查功能,在ECS实例或ECI实例不健康,即实例未处于运行中状态时,自动增加相应类型的实例替换不健康的实例。

灵活智能

  • 支持指定提供计算能力的实例类型,即ECS实例或ECI实例。

  • 支持多种伸缩模式兼容,可灵活调度应对各种复杂场景。伸缩模式包括固定数量、健康、定时、动态、自定义等,其中动态模式支持通过API对接外部的监控系统。

  • 支持灵活的实例模板,提高创建实例的成功率。

  • 支持丰富的扩缩容策略,可灵活适用于各种业务场景。

易审计

弹性伸缩支持记录每个伸缩活动,提供伸缩组监控功能,有助于您快速定位问题根源。

更多信息,请参见产品优势

功能说明

弹性伸缩仅支持ECS实例或ECI实例数量的增加和减少,但不支持单个ECS实例或ECI实例的配置变更。例如需要调整ECS实例的CPU、内存和带宽等配置,您可以通过阿里云运维编排服务(Operation Orchestration Service,简称OOS)功能来实现。更多信息,请参见什么是运维编排服务

弹性伸缩可以根据业务需求,自动创建或者移出ECS实例或ECI实例。您需要配置以下主要功能组件:

功能名称

说明

伸缩组

用来管理一组具有相同应用场景、相同实例类型的实例。您需要指定伸缩组类型(即ECS实例或ECI实例,用于指定提供计算能力的实例类型)、实例配置来源、边界值(即最大实例数和最小实例数)或负载均衡(CLB实例或ALB服务器组)等。如果您有多个应用场景,您可以创建多个伸缩组。弹性伸缩按照您的配置为每个伸缩组分别调整计算能力。

实例配置来源

用来管理ECS实例或ECI实例使用的模板信息。在弹性扩张时,弹性伸缩使用ECS类型的模板信息创建ECS实例,使用ECI类型的模板信息创建ECI实例。

伸缩规则

主要用来触发伸缩活动,例如增加1台ECS实例或ECI实例,您可以手动执行伸缩规则,或者通过报警任务或定时任务执行伸缩规则。伸缩规则还支持智能设置伸缩组的边界值(即最大实例数和最小实例数)。

报警任务

通过云监控系统,实时监测伸缩组的各项指标,在指标满足配置的阈值条件时,执行相应的伸缩规则。

定时任务

指定时间执行相应的伸缩规则。

上述功能组件中,弹性伸缩必须配置并启用了伸缩组和组内实例配置来源,其他功能组件可以按需配置。弹性伸缩的使用流程如下图所示:

image

弹性伸缩还为您提供了其他更多功能,来实现您不同场景的需求:

  • 在伸缩活动成功、失败或者被拒绝时,弹性伸缩支持通过以下方式发送通知信息:

    功能名称

    说明

    消息通知

    支持通过短信、站内信和邮件发送消息通知。

    事件通知

    支持发送消息到云监控系统事件或轻量消息队列(原 MNS)轻量消息队列(原 MNS)包括MNS主题和MNS队列两种服务模型。轻量消息队列(原 MNS)涉及计费,更多计费详情,请参见定价中心

  • 在管理伸缩组内的实例时,弹性伸缩还支持以下功能:

    功能名称

    说明

    生命周期挂钩

    管理伸缩组内ECS实例或ECI实例生命周期的工具。弹性伸缩自动触发扩缩容活动,并触发生命周期挂钩使伸缩活动中的ECS实例或ECI实例处于挂起中的状态(即等待的状态),为您保留一段自定义操作的时间,直至生命周期挂钩超时结束。

    手动配置伸缩组实例

    自定义方式,手动向伸缩组添加或移出ECS实例、ECI实例或托管实例等。

    滚动升级

    如果伸缩组类型为ECS实例,即您指定由ECS实例提供计算能力时,支持滚动升级功能。通过任务形式批量更新ECS实例配置,您可以为伸缩组内处于服务中状态的ECS实例批量更新镜像、执行脚本或者安装OOS软件包。

应用场景

弹性伸缩为您提供了丰富的伸缩功能,适用各种业务量有变化的场景:

  • 业务量变化有规律。

    例如,每周五20:00热门节目来临时,某视频公司的业务量激增,您可以创建定时任务,在每周五20:00自动增加1台ECS实例或ECI实例。

  • 业务量变化无规律。

    例如,某视频直播公司的日常业务量难以预测,您可以创建报警任务,在CPU使用率大于60%时自动增加1台ECS实例或ECI实例。

更多信息,请参见应用场景

工作原理

弹性伸缩会自动根据伸缩模式的配置适时触发伸缩活动,增加或移出伸缩组内的ECS实例或ECI实例。您可以通过弹性伸缩调整ECS实例或ECI实例(该实例主要负责处理客户端请求)数量,从而自动调整业务请求的处理能力。更多信息,请参见工作原理

产品计费

弹性伸缩本身不收取任何费用,但使用ECS实例、ECI实例、RDS实例、负载均衡服务(例如CLB实例、ALB服务器组或者NLB服务器组)、轻量消息队列(原 MNS)等其他产品资源时涉及收费。更多信息,请参见产品计费

使用方式

  • 弹性伸缩控制台:具有交互式操作的Web服务页面。

  • API:支持GET和POST请求的RPC风格API。关于API的更多信息,请参见API概览。以下为调用弹性伸缩API的常用开发者工具:

    • 命令行工具CLI:基于阿里云API建立的灵活且易于扩展的管理工具。您可基于命令行工具封装阿里云的原生API,扩展出您需要的功能。

    • OpenAPI开发者门户:提供快速检索接口、在线调用API和动态生成SDK示例代码等服务。

相关服务

服务名称

说明

云服务器ECS

是阿里云提供的IaaS(Infrastructure as a Service)级别云计算服务,可以帮助您实现计算资源的即开即用和弹性伸缩。

弹性容器实例ECI

是阿里云提供的敏捷安全的Serverless容器运行服务,使用ECI作为容器运行环境,可以为您的业务系统提供更高的弹性和安全性,同时降低使用和运维成本。

云数据库RDS

是一种安全、稳定、可靠、高性价比、可弹性伸缩的在线数据库服务,可以帮助您解决数据库运维的烦恼。

负载均衡SLB产品

是一种对流量进行按需分发的服务,可以消除应用系统中的单点故障,提升应用系统的可用性。包括应用型ALB、网络型NLB或传统型CLB三种产品类型。

云监控CloudMonitor

是一项针对阿里云资源和互联网应用进行监控的服务。帮助您全面了解阿里云上资源的使用情况和业务运行状况,并及时对故障资源进行处理,保证业务正常运行。

轻量消息队列(原 MNS)

是一种高效、可靠、安全、便捷和可弹性扩展的轻量消息队列服务。能够帮助开发者在应用的分布式组件之间自由地传递数据、通知消息,从而构建松耦合系统。