文档

快速扩缩容ECS实例

更新时间:

如果您的应用程序部署在ECS实例上,针对业务量不断波动的业务场景(例如有规律或无规律的波动),您可以通过快速配置弹性伸缩实现ECS实例的自动扩缩容,帮助您及时应对业务流量波动,提供稳定的服务,同时极大限度地节约使用成本。

适用场景

弹性伸缩有着广泛的应用场景,不仅适合业务量不断波动的应用程序,同时也适合业务量稳定的应用程序。更多信息,请参见应用场景

本文以A公司的业务场景为例,为您展示如何快速配置弹性伸缩。不同业务场景,所需的操作不同,具体业务场景示例及对应操作如下表所示。如果您想实现下表中所有的业务需求,请依次执行本文操作步骤即可。

业务场景示例

业务需求描述

必选步骤

日常运行,且业务量无明显波动时,需要2台ECS实例,实例规格为ecs.g7.large。

需求一:最少需要2台ECS实例,且实例规格为ecs.g7.large。

  1. 步骤一:创建伸缩组

  2. 步骤二:创建伸缩配置

日常运行,但公司可能存在突发的高业务请求量,无法确定在这种情况下需要的实例数量。

  • 需求二:业务请求量突增时,增加1台ECS实例,且实例规格为ecs.g7.large。

  • 需求三:突增的业务请求量回落时,增加的1台ECS实例空闲,需要减少1台ECS实例来节约成本。

  1. 步骤一:创建伸缩组

  2. 步骤二:创建伸缩配置

  3. 步骤三:创建伸缩规则

  4. 步骤四:创建报警任务

每天存在业务高峰期(18:00~22:00),需要新增1台ECS实例,实例规格为ecs.g7.large。

  • 需求四:高峰期开始前(18:00前),需要新增1台ECS实例,且实例规格为ecs.g7.large,供高峰期使用。

  • 需求五:高峰期结束后(22:00后),增加的1台ECS实例空闲,需减少1台ECS实例来节约成本。

  1. 步骤一:创建伸缩组

  2. 步骤二:创建伸缩配置

  3. 步骤三:创建伸缩规则

  4. 步骤五:创建定时任务

准备工作

如果您初次使用弹性伸缩,您需要完成以下工作:

  • 已创建服务关联角色AliyunServiceRoleForAutoScaling。具体操作,请参见管理弹性伸缩服务关联角色

  • 如果您使用RAM用户,您还需要为RAM用户添加AliyunESSFullAccess权限。具体操作,请参见为RAM用户授权

  • 使用弹性伸缩自动扩容实例时,请确保您的阿里云账户余额(即现金余额)和代金券的总值不小于100.00元人民币。

    重要

    如果您的阿里云账户余额(即现金余额)和代金券的总值小于100.00元人民币,则将无法创建新的按量付费实例,从而导致弹性伸缩的扩容活动失败。

步骤一:创建伸缩组

伸缩组是弹性伸缩的核心单元,用来管理满足该公司业务需求的一组实例。弹性伸缩将会在该伸缩组内自动增加或减少实例。

  1. 登录弹性伸缩控制台
  2. 在左侧导航栏中,单击伸缩组管理

  3. 在顶部菜单栏处,选择地域。

  4. 在页面左上角,单击创建伸缩组

  5. 完成伸缩组配置,然后单击确认

    Createscalinggroup

    本示例中采用以下配置,未提及的配置项保持默认即可。

    配置项

    示例

    描述

    伸缩组名称

    MyFirstScalingGroup

    由2~64个字符组成,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)或短划线(-)。

    伸缩组类型

    ECS

    伸缩组内的实例类型为ECS实例。

    组内实例配置信息来源

    从零开始创建

    伸缩组创建完成后,您需要继续创建伸缩配置。

    组内最小实例数

    2

    伸缩组内最少有2台ECS实例,才能满足A公司的需求一。

    当伸缩组内ECS实例不足2台时,弹性伸缩会自动创建ECS实例,使伸缩组内的实例数量等于2台。

    组内最大实例数

    5

    伸缩组内最多有5台ECS实例,多出的ECS实例会被自动移出,有助于节约成本。

    网络类型

    专有网络

    创建伸缩配置时,只能选择支持专有网络的实例规格。

    专有网络

    vpc-bp1jmxxau0lur929p****

    伸缩组的专有网络和交换机。如需创建专有网络和交换机,请参见搭建IPv4专有网络

    选择交换机

    vsw-bp155oak33mqngov2****

  6. 创建伸缩组对话框,单击关闭

步骤二:创建伸缩配置

伸缩配置是扩容时ECS实例使用的模板,包括实例规格、存储、公网IP、安全组等配置信息。弹性伸缩使用该伸缩配置创建具有相同配置的ECS实例。

  1. 找到待操作的伸缩组,选择任一种方式打开伸缩组详情页面。
    • 伸缩组名称/ID列,单击伸缩组ID。
    • 操作列,单击查看详情
  2. 在页面上方,单击实例配置来源页签。
  3. 伸缩配置页签下,单击创建伸缩配置

  4. 创建伸缩配置页面,完成相关参数配置,单击创建

    伸缩配置

    本示例中采用以下配置,未提及的配置项保持默认即可。

    区域

    配置项

    示例

    描述

    基础信息

    伸缩配置名称

    MyFirstScalingConfiguration

    自定义伸缩配置的名称。

    由2~40个字符组成,以大小写字母、数字或中文开头,仅包含中文、大小写字母、数字、半角句号(.)、下划线(_)或短划线(-)。

    付费模式

    按量付费

    弹性伸缩服务免费,但是加入伸缩组的ECS实例需要按云服务器ECS的定价支付费用。更多信息,请参见计费概述

    实例和镜像

    实例配置方式

    指定实例规格

    支持指定实例规格指定实例属性两种配置方式。

    选择实例规格

    ecs.n1.large

    实例提供的计算能力。

    您可以根据需要选择是否选中使用vCPU个数计算伸缩组容量功能,使用该功能会重新计算伸缩组当前的容量,可能导致伸缩组触发新的扩缩容活动。

    选择镜像

    公共镜像CentOS 7.6 64位

    实例启动后,系统盘将完整复制镜像的操作系统和应用数据。支持公共镜像自定义镜像共享镜像云市场镜像四种选择方式。

    存储

    系统盘

    系统盘(SSD云盘40 GiB)

    为ECS实例选择系统盘,用于存储数据。

    说明

    您可以根据需要选择数据盘用来存储数据,弹性伸缩支持为系统盘或者数据盘配置多个磁盘类型,提高扩容成功率。

    网络和安全组

    公网IP

    选中分配公网IPv4地址,默认按固定带宽计费,带宽值默认为1 Mbit/s。

    按公网出方向实际发生的带宽计费,带宽费用合并在ECS实例中收取。

    安全组

    sg-bp18kz60mefsicfg****

    选择您提前创建好的安全组。如需创建安全组,请参见创建安全组

    管理设置

    登录凭证

    创建后设置

    ECS实例创建完成后,再手动为ECS实例设置密码。

  5. 伸缩配置预览对话框,单击确认创建

  6. 伸缩配置创建成功对话框,单击启用配置

  7. 选用伸缩配置对话框,单击确定

    在一个伸缩组内,您必须启用一个伸缩配置。启用伸缩配置后,该伸缩配置处于生效状态。

  8. 启用伸缩组对话框,单击确定

    您必须启用伸缩组。启用伸缩组后,弹性伸缩才会按照您的配置实现弹性扩张和收缩,此时,弹性伸缩会自动创建2台ECS实例,满足A公司的需求一。如需查看具体实例,请参见查询实例列表

步骤三:创建伸缩规则

伸缩规则用来指定每次伸缩活动的规则,如增加或者减少ECS实例的数量,或者智能设置伸缩组的最大或最小实例数。

说明

创建伸缩规则后,您可以结合业务场景,选择伸缩活动的触发方式。例如,手动执行伸缩规则、通过报警任务或定时任务自动执行伸缩规则。

  1. 在页面上方,单击伸缩规则与报警任务页签,然后单击伸缩规则页签。
  2. 创建两条伸缩规则。

    本示例中,您需要针对不同伸缩场景设置两条伸缩规则,即一条弹性扩张的伸缩规则和一条弹性收缩的伸缩规则。

    弹性扩张规则

    创建一条弹性扩张的伸缩规则(例如Add1)后,当弹性伸缩触发伸缩活动时,会增加1台ECS实例。

    1. 在页面左上角,单击创建伸缩规则

    2. 完成伸缩规则的配置,然后单击确认

      伸缩规则

      本示例中采用以下配置,未提及的配置项保持默认即可。

      配置项

      示例

      描述

      规则名称

      Add1

      由2~64个字符组成,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)或短划线(-)。

      伸缩规则类型

      简单规则

      支持增加或减少指定数量的实例,或者将实例数量调整至指定值。

      执行的操作

      增加1台

      单次弹性扩张,增加1台ECS实例。

    弹性收缩规则

    创建一条弹性收缩的伸缩规则(例如Remove1)后,当弹性伸缩触发伸缩活动时,会减少1台ECS实例。

    1. 在页面左上角,单击创建伸缩规则

    2. 完成伸缩规则的配置,然后单击确认

      伸缩规则2本示例中采用以下配置,未提及的配置项保持默认即可。

      配置项

      示例

      描述

      规则名称

      Remove1

      由2~64个字符组成,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)或短划线(-)。

      伸缩规则类型

      简单规则

      支持增加或减少指定数量的实例,或者将实例数量调整至指定值。

      执行的操作

      减少1台

      单次弹性收缩,减少1台ECS实例。

步骤四:创建报警任务

报警任务通过监控特定的监控指标,对数据指标进行实时的统计,当统计值满足您指定的报警条件时,触发报警并执行您指定的伸缩规则。

  1. 在页面上方,单击伸缩规则与报警任务页签,然后单击报警任务页签,再根据报警任务的类型选择对应操作。
    • 如果需要选择系统监控报警任务,单击报警任务(系统)页签。
    • 如果需要选择自定义监控报警任务,单击报警任务(自定义)页签。
  2. 创建两条报警任务。

    本示例中,您需要针对不同业务场景设置两条报警任务,即一条弹性扩张的报警任务和一条弹性收缩的报警任务。本步骤以报警任务(系统)为例创建两条报警任务。

    弹性扩张报警任务

    针对需求二设置弹性扩张的报警任务(例如EventTriggeredScalingOut),在伸缩组内CPU使用率不小于70%时,自动执行伸缩规则Add1,增加1台ECS实例。

    1. 单击创建报警任务

    2. 完成报警任务的配置,然后单击确认

      Triggered

      本示例中采用以下配置,未提及的配置项保持默认即可。

      配置项

      示例

      说明

      名称

      EventTriggeredScalingOut

      由2~64个字符组成,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)或短划线(-)。

      描述

      平均CPU使用率不小于70%时添加ECS实例

      由2~255个字符组成。

      监控资源

      asg-bp1g75opkec1fq2y****

      伸缩组MyFirstScalingGroup的伸缩组ID,您无需设置该参数。报警任务会监控该伸缩组内的指标。

      监控类型

      系统监控

      指云监控为您采集的监控指标,默认为系统监控即可,您无需设置该参数。

      说明

      本示例中,报警任务使用系统定义好的系统监控项,即监控指标。如果您单击报警任务(自定义)页签下的创建报警任务,您需要将自有的监控系统中的自定义监控指标上报至云监控。更多信息,请参见自定义监控报警任务

      报警指标描述

      (ECS)CPU使用率 > Average(平均值)>=70%

      表示报警规则进入报警状态时需满足的条件。您需要选择一个或多个系统定义的监控项,选择多个系统定义的监控项时,单击添加指标继续选择即可。

      该部分包含的配置项说明如下:

      • 监控项:系统监控支持的监控指标名称。例如,(ECS)CPU使用率表示监控伸缩组内ECS实例的CPU使用率。

      • 统计办法:即判定云监控指标值超出阈值范围的规则,您可以围绕平均值、最大值或最小值设置规则。例如,Average(平均值)>=70%表示伸缩组内ECS实例的CPU使用率平均值不小于70%触发报警。

      多指标关系

      当所有指标都符合条件时报警

      支持当所有指标都符合条件时报警任意一个指标符合条件时报警两种报警规则的选择方式。

      统计周期

      1分钟

      弹性伸缩会根据统计周期收集、汇总和比较数据,粒度越小,越容易触发报警,请根据业务需要选择合理的统计周期。例如1分钟统计1次数据。

      重复几次后报警

      3次

      ECS实例的CPU使用率统计结果连续3次不小于70%,则触发相应的报警和伸缩规则。

      生效周期

      不设置

      表示报警任务的生效时间范围。在生效周期内,报警任务在报警后会自动执行指定的伸缩规则。否则,报警任务只报警,不执行伸缩规则。

      • 不设置:默认所有时间都生效。

      • Cron表达式:仅在符合表达式的时间范围内生效。Cron表达式的更多信息,请参见Cron表达式

      报警触发规则

      Add1

      触发报警后,执行伸缩规则Add1,将伸缩组内的ECS实例数量增加1台。

    弹性收缩报警任务

    针对需求三设置弹性收缩的报警任务(例如EventTriggeredScalingIn),在伸缩组内CPU使用率不大于20%时,自动执行伸缩规则Remove1,减少1台ECS实例。

    1. 单击创建报警任务

    2. 完成报警任务的配置,然后单击确认

      收缩报警任务

      本示例中采用以下配置,未提及的配置项保持默认即可。

      配置项

      示例

      说明

      名称

      EventTriggeredScalingIn

      由2~64个字符组成,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)或短划线(-)。

      描述

      平均CPU使用率不大于20%时移出ECS实例

      有2~225个字符组成。

      监控资源

      asg-bp1g75opkec1fq2y****

      伸缩组MyFirstScalingGroup的伸缩组ID,您无需设置该参数。报警任务会监控该伸缩组内的指标。

      监控类型

      系统监控

      指云监控为您采集的监控指标,默认为系统监控即可,您无需设置该参数。

      报警指标描述

      (ECS)CPU使用率 > Average(平均值)<=20%

      表示报警规则进入报警状态时需满足的条件。您需要选择一个或多个系统定义的监控项,选择多个系统定义的监控项时,单击添加指标继续选择即可。

      该部分包含的配置项说明如下:

      • 监控项:系统监控支持的监控指标名称。例如,(ECS)CPU使用率表示监控伸缩组内ECS实例的CPU使用率。

      • 统计办法:即判定云监控指标值超出阈值范围的规则,您可以围绕平均值、最大值或最小值设置规则。例如,Average(平均值)<=20%表示伸缩组内ECS实例的CPU使用率平均值不大于20%触发报警。

      多指标关系

      当所有指标都符合条件时报警

      支持当所有指标都符合条件时报警任意一个指标符合条件时报警两种报警规则的选择方式。

      统计周期

      1分钟

      弹性伸缩会根据统计周期收集、汇总和比较数据,粒度越小,越容易触发报警,请根据业务需要选择合理的统计周期。例如1分钟统计1次数据。

      重复几次后报警

      3次

      ECS实例的CPU使用率统计结果连续3次不大于20%,则触发报警。

      生效周期

      不设置

      表示报警任务的生效时间范围。在生效周期内,报警任务在报警后会自动执行指定的伸缩规则。否则,报警任务只报警,不执行伸缩规则。

      • 不设置:默认所有时间都生效。

      • Cron表达式:仅在符合表达式的时间范围内生效。Cron表达式的更多信息,请参见Cron表达式

      报警触发规则

      Remove1

      触发报警后,执行伸缩规则Remove1,将伸缩组内的ECS实例数量减少1台。

步骤五:创建定时任务

定时任务是一种预设任务,可以在指定时间执行指定伸缩规则。

  1. 在页面上方,单击伸缩规则与报警任务页签,然后单击定时任务页签。
  2. 创建两条定时任务。

    本示例中,您需要针对不同业务场景设置两条定时任务,即一条弹性扩张的定时任务和一条弹性收缩的定时任务。

    弹性扩张定时任务

    针对需求四设置一条弹性扩张的定时任务(例如ScheduledScalingOut),在业务高峰期前,实现自动扩张,增加1台ECS实例。

    1. 单击创建定时任务

    2. 完成定时任务的配置,然后单击确认

      定时任务

      本示例中采用以下配置,未提及的配置保持默认即可。

      配置项

      示例

      说明

      任务名称

      ScheduledScalingOut

      由2~64个字符组成,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)或短划线(-)。

      描述

      每天17:55添加1台实例

      由2~200个字符组成。

      执行时间

      2021年11月1日 17:55

      任务的触发时间。本示例中,将时间设置为高峰期前的5分钟,即17:55。

      伸缩方式

      选择已有伸缩规则

      伸缩规则(简单规则)

      Add1

      执行伸缩规则Add1,向伸缩组添加1台ECS实例。

      重复周期

      按天,每1天执行一次

      每天执行一次该定时任务。本示例中,每天17:55执行伸缩规则,增加1台ECS实例。

      重复结束时间

      2021年11月3日 17:55

      选择定时任务的重复结束时间。其中,重复结束时间必须晚于任务的首次执行时间。

      说明

      如果重复周期设置为按天、按星期、按月或Cron表达式任一方式时,才会出现该配置项。

    弹性收缩定时任务

    针对需求五设置一条弹性收缩的定时任务(例如ScheduledScalingIn),在高峰期结束后,实现自动收缩,减少1台ECS实例。

    1. 单击创建定时任务

    2. 完成定时任务的配置,然后单击确认

      定时任务2

      本示例中采用以下配置,未提及的配置保持默认即可。

      配置项

      示例

      说明

      任务名称

      ScheduledScalingIn

      由2~64个字符组成,以大小写字母、数字或中文开头,可包含半角句号(.)、下划线(_)或短划线(-)。

      描述

      每天22:05减少1台实例

      由2~200个字符组成。

      执行时间

      2021年11月1日 22:05

      任务的触发时间。本示例中,将时间设置为高峰期后的5分钟,即22:05。

      伸缩方式

      选择已有伸缩规则

      伸缩规则(简单规则)

      Remove1

      执行伸缩规则Remove1,向伸缩组减少1台ECS实例。

      重复周期

      按天,每1天执行一次

      每天执行一次该定时任务。本示例中,每天22:05执行伸缩规则,减少1台ECS实例。

      重复结束时间

      2021年11月3日 17:55

      选择定时任务的重复结束时间。其中,重复结束时间必须晚于任务的首次执行时间。

      说明

      如果重复周期设置为按天、按星期、按月或Cron表达式任一方式时,才会出现该配置项。

执行结果

弹性伸缩会按照您的配置,在以下场景自动扩缩容ECS实例:

  • 伸缩组启用后,弹性伸缩自动增加2台ECS实例,满足需求一

  • 如果伸缩组内CPU使用率不小于70%时,增加1台ECS实例,满足需求二

  • 如果伸缩组内CPU使用率不大于20%时,减少1台ECS实例,满足需求三

  • 每天17:55新增1台ECS实例,满足需求四

  • 每天22:05减少一台ECS实例,满足需求五

您可以在伸缩组的实例列表页签查看实例,自动创建出的ECS实例配置和伸缩配置保持一致。具体操作,请参见查询实例列表

实例列表

  • 本页导读 (1)
文档反馈