本文描述了如何快速配置弹性伸缩,来自动实现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. 单击创建伸缩配置
  5. 完成三个页面的配置,然后在确认配置页面中单击确认创建
    伸缩配置

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

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

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

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

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

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

步骤三:创建伸缩规则

伸缩规则用来指定每次伸缩活动的规则,如增加或者减少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. 完成报警任务的配置,然后单击提交
      报警扩张本示例中采用以下配置,未提及的配置项保持默认即可。
      配置项 示例 说明
      任务名称 EventTriggeredScalingOut
      描述 平均CPU使用率不小于70%时添加ECS实例
      监控资源 asg-bp1g75opkec1fq2y**** 伸缩组MyFirstScalingGroup的伸缩组ID,报警任务会监控该伸缩组内的指标。
      监控类型 系统监控 报警任务使用系统定义好的系统监控项。
      监控项 (ECS)CPU使用率 监控伸缩组内ECS实例的CPU使用率。
      统计周期(分钟) 1分钟 1分钟统计1次数据。
      统计方法 Average(平均值) >= 70% 如果伸缩组内ECS实例的CPU使用率平均值不小于70%,则记录1次。
      重复几次后报警 3次 ECS实例的CPU使用率统计结果连续3次不小于70%,则触发报警。
      报警触发规则 Add1 触发报警后,执行伸缩规则Add1,将伸缩组内的ECS实例数量增加1台。
  4. 创建一个弹性收缩的报警任务。
    1. 单击创建报警任务
    2. 完成报警任务的配置,然后单击提交
      报警任务本示例中采用以下配置,未提及的配置项保持默认即可。
      配置项 示例 说明
      任务名称 EventTriggeredScalingIn
      描述 平均CPU使用率不大于20%时移出ECS实例
      监控资源 asg-bp1g75opkec1fq2y**** 伸缩组MyFirstScalingGroup的伸缩组ID,报警任务会监控该伸缩组内的指标。
      监控类型 系统监控
      监控项 (ECS)CPU使用率 监控伸缩组内ECS实例的CPU使用率。
      统计周期(分钟) 1分钟 1分钟统计1次数据。
      统计方法 Average(平均值) <= 20% 如果伸缩组内ECS实例的CPU使用率平均值不大于20%,则记录1次。
      重复几次后报警 3次 ECS实例的CPU使用率统计结果连续3次不大于20%,则触发报警。
      报警触发规则 Remove1 触发报警后,执行伸缩规则Remove1,将伸缩组内的ECS实例数量减少1台。

步骤五:创建定时任务

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

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

      配置项 示例 说明
      任务名称 ScheduledScalingOut
      描述 每天17:55添加1台实例
      执行时间 2021年11月1日 17:55 任务的触发时间。本示例中,将时间设置为高峰期前的5分钟,即17:55。
      伸缩方式 选择已有伸缩规则
      伸缩规则(简单规则) Add1 执行伸缩规则Add1,向伸缩组添加1台ECS实例。
      重复周期 按天,每1天执行一次 每天执行一次该定时任务。本示例中,每天17:55执行伸缩规则,增加1台ECS实例。
  2. 创建一个弹性收缩的定时任务。
    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实例配置和伸缩配置保持一致。具体操作,请参见查询ECS实例列表

实例列表