本文描述了如何快速配置弹性伸缩,来自动实现ECS实例的增加或减少,帮助您快速上手弹性伸缩。

背景信息

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

业务场景业务需求描述必选操作步骤
日常运行,且业务量无明显波动时,需要2台ECS实例,实例规格为ecs.g7.large。需求一:最少需要2台ECS实例,实例规格为ecs.g7.large,来满足日常需求。
  1. 步骤一:创建伸缩组
  2. 步骤二:创建伸缩配置
日常运行,但公司可能存在突发的高业务请求量,无法确定此情况下需要的实例数量。
  • 需求二:业务请求量突增时,增加1台ECS实例,实例规格为ecs.g7.large。
  • 需求三:突增的业务请求量回落,应对突增业务量而增加的ECS实例空闲,需要减少1台ECS实例,节约成本。
  1. 步骤一:创建伸缩组
  2. 步骤二:创建伸缩配置
  3. 步骤三:创建伸缩规则
  4. 步骤四:创建报警任务
每天存在业务高峰期(18:00~22:00),需要新增1台ECS实例,实例规格为ecs.g7.large。
  • 需求四:高峰期开始前,需要新增1台ECS实例,实例规格为ecs.g7.large,供高峰期使用。
  • 需求五:高峰期结束后,应对高峰期业务而增加的ECS实例空闲,需减少1台ECS实例,节约成本。
  1. 步骤一:创建伸缩组
  2. 步骤二:创建伸缩配置
  3. 步骤三:创建伸缩规则
  4. 步骤五:创建定时任务

准备工作

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

  • 已创建服务关联角色AliyunServiceRoleForAutoScaling。
  • 如果您使用RAM用户,您还需要为RAM用户添加AliyunESSFullAccess权限。

具体操作,请参见管理弹性伸缩服务关联角色

步骤一:创建伸缩组

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

  1. 登录弹性伸缩控制台
  2. 在左侧导航栏中,单击伸缩组管理
    本步骤中以前往伸缩组列表页面操作为例。如果在当前地域下没有弹性伸缩资源,登录控制台后会显示欢迎页面,您也可以根据页面提示操作。
  3. 在顶部菜单栏处,选择地域。
  4. 在页面左上角,单击创建伸缩组
  5. 完成伸缩组配置,然后单击确认
    伸缩组

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

    配置项示例描述
    伸缩组名称MyFirstScalingGroup
    伸缩组类型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. 完成三个页面的配置后,在确认配置页面中单击确认创建
    伸缩配置

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

    配置页面配置项示例描述
    基础配置付费模式按量付费弹性伸缩服务免费,但是加入伸缩组的ECS实例需要按云服务器ECS的定价支付费用。更多信息,请参见计费概述
    实例配置方式指定实例规格支持指定实例规格智能配置两种配置方式。
    实例规格ecs.g7.large实例提供的计算能力。
    镜像公共镜像CentOS 7.6 64位实例启动后,系统盘将完整复制镜像的操作系统和应用数据。支持公共镜像自定义镜像共享镜像镜像市场四种选择方式。
    存储系统盘(ESSD云盘40 GiB)为ECS实例选择系统盘或者数据盘,用于存储数据。
    公网IP选中分配公网IPv4地址,默认按使用流量计费,调整峰值为1 Mbit/s。按公网出方向实际发生的网络流量计费,带宽不会超过1 Mbit/s。
    安全组sg-bp18kz60mefsicfg****选择您提前创建好的安全组。如需创建安全组,请参见创建安全组
    系配配置登录凭证创建后设置ECS实例创建完成后,再手动为ECS实例设置密码。
    确认配置伸缩配置名称MyFirstScalingConfiguration
  5. 伸缩配置建立成功对话框,单击启用配置
  6. 选用伸缩配置对话框,单击确定

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

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

    您必须启用伸缩组。启用伸缩组后,弹性伸缩才会按照您的配置实现弹性扩张和收缩。

    说明 此时,弹性伸缩会自动创建2台ECS实例,满足了A公司的需求一。如需查看具体实例,请参见查询实例列表

步骤三:创建伸缩规则

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

本示例中,您需要针对两种伸缩场景设置两个伸缩规则:

  • 弹性扩张:增加1台ECS实例。
  • 弹性收缩:减少1台ECS实例。

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

  1. 在页面上方,单击伸缩规则与伸缩活动页签,然后单击伸缩规则页签。
  2. 创建一个弹性扩张的伸缩规则。
    1. 在页面左上角,单击创建伸缩规则
    2. 完成伸缩规则的配置,然后单击确认
      伸缩规则

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

      配置项示例描述
      规则名称Add1
      伸缩规则类型简单规则支持增加或减少指定数量的实例,或者将实例数量调整至指定值。
      执行的操作增加1台单次弹性扩张,增加1台ECS实例。
  3. 创建一个弹性收缩的伸缩规则。
    1. 在页面左上角,单击创建伸缩规则
    2. 完成伸缩规则的配置,然后单击确认
      伸缩规则2本示例中采用以下配置,未提及的配置项保持默认即可。
      配置项示例描述
      规则名称Remove1
      伸缩规则类型简单规则支持增加或减少指定数量的实例,或者将实例数量调整至指定值。
      执行的操作减少1台单次弹性收缩,减少1台ECS实例。

步骤四:创建报警任务

报警任务通过监控特定的监控指标,对数据指标进行实时的统计,当统计值满足您指定的报警条件时,触发报警并执行您指定的伸缩规则。本示例中,您可以针对需求二和需求三分别设置报警任务,具体如下:

  • 需求二:设置报警任务EventTriggeredScalingOut,在伸缩组内CPU使用率不小于70%时,自动执行伸缩规则Add1,增加1台ECS实例。
  • 需求三:设置报警任务EventTriggeredScalingIn,在伸缩组内CPU使用率不大于20%时,自动执行伸缩规则Remove1,减少1台ECS实例。
  1. 在页面上方,单击伸缩规则与伸缩活动页签,再单击定时/报警任务页签。
  2. 单击报警任务(系统)页签。
    本示例中,报警任务使用系统定义好的系统监控项,即监控指标。如果您单击报警任务(自定义)页签,创建报警任务,您需要将自有的监控系统中的自定义监控指标上报至云监控。更多信息,请参见自定义监控报警任务
  3. 创建一个弹性扩张的报警任务。
    1. 单击创建报警任务
    2. 完成报警任务的配置,然后单击确认
      Triggered

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

      配置项示例说明
      任务名称EventTriggeredScalingOut
      描述平均CPU使用率不小于70%时添加ECS实例
      监控资源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台。
  4. 创建一个弹性收缩的报警任务。
    1. 单击创建报警任务
    2. 完成报警任务的配置,然后单击确认
      收缩报警任务

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

      配置项示例说明
      任务名称EventTriggeredScalingIn
      描述平均CPU使用率不大于20%时移出ECS实例
      监控资源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台。

步骤五:创建定时任务

定时任务是一种预设任务,可以在指定时间执行指定伸缩规则。本示例中,您可以针对需求四和需求五分别设置定时任务,具体如下:
  • 需求四:设置定时任务ScheduledScalingOut,在高峰期前,实现自动扩张,增加1台ECS实例。
  • 需求五:设置定时任务ScheduledScalingIn,在高峰期结束后,实现自动收缩,减少1台ECS实例。
  1. 在页面上方,单击伸缩规则与伸缩活动页签,单击定时/报警任务页签,再单击定时任务页签。
  2. 创建一个弹性扩张的定时任务。
    1. 单击创建定时任务
    2. 完成定时任务的配置,然后单击确认
      定时任务

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

      配置项示例说明
      任务名称ScheduledScalingOut
      描述每天17:55添加1台实例
      执行时间2021年11月1日 17:55任务的触发时间。本示例中,将时间设置为高峰期前的5分钟,即17:55。
      伸缩方式选择已有伸缩规则
      伸缩规则(简单规则)Add1执行伸缩规则Add1,向伸缩组添加1台ECS实例。
      重复周期按天,每1天执行一次每天执行一次该定时任务。本示例中,每天17:55执行伸缩规则,增加1台ECS实例。
  3. 创建一个弹性收缩的定时任务。
    1. 单击创建定时任务
    2. 完成定时任务的配置,然后单击确认
      定时任务2

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

      配置项示例说明
      任务名称ScheduledScalingIn
      描述每天22:05减少1台实例
      执行时间2021年11月1日 22:05任务的触发时间。本示例中,将时间设置为高峰期后的5分钟,即22:05。
      伸缩方式选择已有伸缩规则
      伸缩规则(简单规则)Remove1执行伸缩规则Remove1,向伸缩组减少1台ECS实例。
      重复周期按天,每1天执行一次每天执行一次该定时任务。本示例中,每天22:05执行伸缩规则,减少1台ECS实例。

执行结果

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

  • 伸缩组启用后,弹性伸缩自动增加2台ECS实例,满足需求一。
  • 如果伸缩组内CPU使用率不小于70%时,增加1台ECS实例,满足需求二。
  • 如果伸缩组内CPU使用率不大于20%时,减少1台ECS实例,满足需求三。
  • 每天17:55新增1台ECS实例,满足需求四。
  • 每天22:05减少一台ECS实例,满足需求五。

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

实例列表