弹性伸缩(Auto Scaling)的伸缩组支持关联应用型负载均衡ALB的服务器组,通过配置触发任务,自动调整伸缩组的ECS实例个数并将ECS实例添加到ALB实例的服务器组。ALB实例将访问流量分发到通过伸缩组自动创建的ECS实例中,有效增强了ALB的服务能力。

背景信息

伸缩组关联ALB实例的服务器组后,无论是伸缩组自动创建ECS实例,还是您向伸缩组手动添加ECS实例,ECS实例都会自动加入到ALB实例的服务器组。ALB实例会根据流量分发、健康检查等策略灵活使用ECS实例资源,在资源弹性的基础上大大提高资源可用性。

场景示例

某新闻网站播出了一则新闻,访问量突增,服务器无法承载巨大访问量,导致新闻页面刷新不出来。新闻的时效性降低后,访问量回落,可以正常访问新闻页面。由于该新闻网站的访问量突增和回落的具体时间难以预测,无法及时手动调整实例,且实例的调整数量也不确定,为维护新闻网站的服务增加了困难。面对以上的场景,您可以利用弹性伸缩的报警任务,由阿里云云监控根据CPU使用率等衡量指标自动调整其弹性资源服务,同时自动关联ALB服务器组。在业务需求高峰期时,无缝增加计算资源。在业务量下降时,可以自动减少计算资源,从而节约成本。

ALB通过配置的转发规则将客户端的请求分发给后端服务器ECS01,当ECS01的CPU使用率达到设定的阈值时(本文设定阈值为60%),通过创建弹性伸缩服务并配置报警任务,自动新建ECS实例并添加到ALB实例的服务器组RS1。
说明 这些ECS实例的权重默认为50,您可以根据需要在对应ALB实例中调整权重。
弹性伸缩场景图

配置流程

弹性伸缩流程图

前提条件

  • 您已创建一个或多个处于运行中状态的ALB实例。具体操作,请参见创建应用型负载均衡
  • ALB实例和伸缩组必须位于同一专有网络。
  • ALB实例至少配置了一个监听。具体操作,请参见添加HTTP监听
  • ALB实例必须开启健康检查。具体操作,请参见健康检查
  • ALB实例已创建服务器组RS1并添加了ECS01实例,服务器组处于可用状态。
  • 您已创建了ECS01实例的自定义镜像。具体操作,请参见使用实例创建自定义镜像

步骤一:创建伸缩组

介绍在创建伸缩组时,与ALB实例相关的参数配置。关于其他参数的配置,请参见配置伸缩组

  1. 登录弹性伸缩控制台
  2. 在左侧导航栏中,单击伸缩组管理
  3. 在顶部菜单栏处,选择地域。
  4. 进入伸缩组管理页面。
    • 创建关联ALB实例的伸缩组时,单击创建伸缩组
    • 修改未配置ALB实例的伸缩组时,找到目标伸缩组,在操作列单击修改
    说明 您在创建伸缩组时,需在创建伸缩组对话框,配置网络类型专有网络,配置添加已有实例ECS01
  5. 创建伸缩组或者修改伸缩组对话框,配置关联应用型负载均衡ALB服务器组
    1. 选择已创建的服务器组RS1。
    2. 设置服务器组的端口为80,权重默认为50
    关联ALB实例
  6. 根据需要配置其余选项,单击确认
    您可以在伸缩组管理页面查看已创建的伸缩组,此时总实例数为1。
创建伸缩组

步骤二:创建伸缩配置

  1. 伸缩组管理页面的操作列单击查看详情,在实例配置来源页签选择伸缩配置
  2. 伸缩配置页签,单击创建伸缩配置并完成以下配置,然后单击下一步系统配置
    配置项说明
    付费模式ECS的付费方式,本文选择按量付费
    实例规格与创建的ECS01实例规格相同,本文选择ecs.s6-c1m1.small
    镜像选择已经创建的ECS01实例的自定义镜像。
    安全组选择已创建的ECS01实例所在安全组。
  3. 系统配置配置向导,单击下一步确认配置
  4. 确认配置配置向导,填写伸缩配置名称,然后单击确认创建
  5. 伸缩配置建立成功对话框,单击启用配置
    您可以在实例配置来源 > 伸缩配置页签查看已启用的伸缩配置。
创建伸缩配置

步骤三:创建伸缩规则

  1. 伸缩组管理页面的操作列单击查看详情,在伸缩规则与伸缩活动页签单击伸缩规则
  2. 伸缩规则页签,单击创建伸缩规则完成以下配置,单击确认
    配置项说明
    规则名称输入自定义规则名称。
    伸缩规则类型本文选择简单规则
    执行的操作基于报警任务触发条件继续设置分步步骤,指定违例规模及相应操作,在报警任务触发后,弹性伸缩会根据违例规模执行相应操作。本文选择调整至2台

步骤四:创建报警任务并添加伸缩规则

  1. 在左侧导航栏选择自动触发任务管理 > 报警任务
  2. 报警任务页面,选择系统监控页签,然后单击创建报警任务
  3. 创建报警任务对话框中,完成以下配置,然后单击确认
    配置项说明
    名称自定义任务名称。
    监控资源选择步骤一创建的伸缩组。
    监控项本文选择CPU使用率
    统计周期本文选择1分钟
    统计办法本文设置Maximum(最大值)>= 阈值 60%
    重复几次后报警本文选择1次
    报警触发规则选择步骤三创建的伸缩规则。
创建报警

步骤五:基于CPU使用率自动创建ALB后端服务器

通过stress压测的方式,增加ECS01实例的CPU使用率,使CPU使用率达到60%,从而触发弹性伸缩的报警任务,根据创建的弹性伸缩服务自动新建ECS实例并添加到ALB实例的服务器组。

  1. 远程登录ECS01实例后,执行以下命令安装stress工具。
    sudo yum install -y epel-release 
    sudo yum install stress -y
  2. 执行以下命令通过stress工具对ECS01实例进行压测。
    sudo stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 60s &
  3. 返回步骤弹性伸缩的报警任务页面,等待几分钟后,报警状态显示报警
    报警异常
  4. 进入伸缩组管理页面,在实例数/容量列查看总实例数变为2个。证明已添加一台新的ECS实例到伸缩组。
    伸缩组管理验证图
  5. 登录应用型负载均衡ALB控制台
  6. 在左侧导航栏,选择应用型负载均衡ALB > 服务器组
  7. 单击创建的目标服务器组RS1的ID,单击后端服务器页签,可以看到后端服务器有两台实例,其中以ESS命名的实例为通过弹性伸缩服务自动添加的ECS实例。
    弹性伸缩图1