弹性伸缩产品支持关联网络型负载均衡NLB的服务器组,通过配置触发任务,自动调整服务器组内的ECS实例个数,从而有效增强了NLB的高可用服务能力并降低了资源使用成本。
场景示例
某新闻网站播出了一则新闻,访问量突增,服务器无法承载巨大访问量,导致新闻页面刷新不出来。新闻的时效性降低后,访问量回落,可以正常访问新闻页面。由于该新闻网站的访问量突增和回落的具体时间难以预测,无法及时手动调整实例,且实例的调整数量也不确定,为维护新闻网站的服务增加了困难。
面对以上的场景,您可以利用弹性伸缩的报警任务,由阿里云云监控根据CPU使用率等衡量指标自动调整其弹性资源服务,同时自动关联NLB服务器组。伸缩组关联NLB实例的服务器组后,无论是伸缩组自动添加或移除ECS实例,还是您向伸缩组手动添加或移除ECS实例,都会自动同步到NLB实例的服务器组。NLB实例会根据流量分发、健康检查等策略灵活使用ECS实例资源,在资源弹性的基础上大大提高资源可用性。
本文以如下方案作为示例进行介绍,NLB通过配置的转发规则将客户端的请求分发给后端服务器ECS01。通过创建弹性伸缩服务并配置报警任务,当ECS01的CPU使用率上升到设定的阈值时,自动新建ECS实例并添加到后端服务器组;当ECS01的CPU使用率下降到设定的阈值时,自动将ECS实例从后端服务器组移除并删除。
前提条件
- 您已创建一个或多个处于运行中状态的NLB实例。具体操作,请参见创建和管理NLB实例。 
- NLB实例已创建服务器组RS1并添加了ECS01实例,且开启了健康检查,服务器组处于可用状态。 
- 您已创建了ECS01实例的自定义镜像。具体操作,请参见使用实例创建自定义镜像。 
- NLB实例至少配置了一个监听。具体操作,请参见添加TCP监听。 
- NLB实例和伸缩组必须位于同一专有网络。 
步骤一:创建伸缩组
- 登录弹性伸缩控制台。 
- 在左侧导航栏中,单击伸缩组管理。 
- 在顶部菜单栏处,选择地域。 
- 进入伸缩组管理页面。单击创建伸缩组,您在创建伸缩组时,部分配置项可参考如下配置。 - 配置项 - 说明 - 组内实例配置信息来源 - 选择从零开始创建 - 组内最小实例数 - 当伸缩组的当前实例数小于伸缩最小实例数时,弹性伸缩服务会自动添加实例,使得伸缩组的当前实例数等于伸缩最小实例数。本文配置示例为1(至少需要1个已有ECS01实例) - 组内最大实例数 - 当伸缩组的当前实例数大于伸缩最大实例数时,弹性伸缩服务会自动移出实例,使得伸缩组的当前实例数等于伸缩最大实例数。本文配置示例为2(本文示例中除ECS01实例外最多添加一个实例) - 默认冷却时间 - 一个伸缩活动(添加或移出实例)执行完成后的一段冷却时间内,该伸缩组不执行其他的伸缩活动。目前仅针对报警任务(云监控)触发的伸缩活动有效。本文配置示例为0,实际使用时需要根据实际情况调整 - 专有网络、选择交换机 - 选择ECS01实例所在的专有网络及交换机 - 关联负载均衡ALB、NLB服务器组 - 选择对应服务器组,并配置端口及权重 
- 根据需要配置其余选项,单击确认。完成后您可以在伸缩组管理页面查看已创建的伸缩组。 
步骤二:创建伸缩配置
- 在伸缩组管理页面的操作列单击查看详情,在实例配置来源页签选择伸缩配置。 
- 在伸缩配置页签,单击创建伸缩配置并完成配置,部分配置项可参考下表,其他配置项可根据实际需求进行配置。 - 配置项 - 说明 - 付费模式 - ECS的付费方式,本文选择按量付费 - 实例配置方式 - 本文选择指定实例规格 - 选择实例规格 - 选择与创建的ECS01实例规格相同的规格 - 选择镜像 - 选择已经创建的ECS01实例的自定义镜像 - 安全组 - 选择已创建的ECS01实例所在安全组 
- 配置完成后单击创建,然后单击确认创建。 
- 在伸缩配置创建成功对话框,单击启用配置,并在弹窗中启动伸缩配置与伸缩组。 
步骤三:创建伸缩规则
- 在伸缩组管理页面的操作列单击查看详情,在伸缩规则与报警任务页签单击伸缩规则。 
- 创建自动添加的伸缩规则:在伸缩规则页签,单击创建伸缩规则完成配置,部分配置项可参考下表,其他配置项可根据实际需求进行配置。完成后单击确认。 - 配置项 - 说明 - 规则名称 - 自定义填写,例如:自动添加1台的规则 - 伸缩规则类型 - 本文选择简单规则 - 执行的操作 - 本文选择增加1台 
- 创建自动移除的伸缩规则:在伸缩规则页签,单击创建伸缩规则完成配置,部分配置项可参考下表,其他配置项可根据实际需求进行配置。完成后单击确认。 - 配置项 - 说明 - 规则名称 - 自定义填写,例如:自动移除1台的规则 - 伸缩规则类型 - 本文选择简单规则 - 执行的操作 - 本文选择减少1台 
步骤四:创建报警任务并添加伸缩规则
- 在左侧导航栏选择报警任务。 
- 在报警任务页面,单击创建报警任务。 
- 创建自动添加的报警任务:在创建报警任务对话框中完成配置,部分配置项可参考下表,其他配置项可根据实际需求进行配置。完成后单击确认。 - 配置项 - 说明 - 名称 - 自定义任务名称,例如:自动添加1台的报警任务 - 监控资源 - 选择步骤一中创建的伸缩组 - 报警指标描述 - 本文选择(Agent)CPU使用率、Maximum(最大值)>= 60% - 统计周期 - 本文选择1分钟 - 重复几次后报警 - 本文选择1次 - 报警后执行规则 - 选择步骤三中创建的自动添加的伸缩规则 
- 创建自动减少的报警任务:在创建报警任务对话框中完成配置,部分配置项可参考下表,其他配置项可根据实际需求进行配置。完成后单击确认。 - 配置项 - 说明 - 名称 - 自定义任务名称,例如:自动移除1台的报警任务 - 监控资源 - 选择步骤一中创建的伸缩组 - 报警指标描述 - 本文选择(Agent)CPU使用率、Maximum(最大值)<= 30% - 统计周期 - 本文选择1分钟 - 重复几次后报警 - 本文选择1次 - 报警后执行规则 - 选择步骤三中创建的自动移除的伸缩规则 
步骤五:已有实例添加到伸缩组中进行监控
弹性伸缩需要基于已有业务服务器进行监控,根据报警任务触发实例。因此需要将已有服务器实例添加到伸缩组中进行监控。
- 在伸缩组管理页面的操作列单击查看详情,在实例列表页签单击手动创建。 
- 单击添加已有实例,选择并添加ECS01实例,完成后单击确认添加。 
- 在手动创建页签,可查看到ECS01实例已添加成功。 
步骤六:验证自动添加和移除效果
通过stress压测的方式,增加ECS01实例的CPU使用率超过60%,从而触发弹性伸缩的自动添加报警任务,在这期间登录控制台可查看到ECS实例自动增加。压测时间结束后,ECS01实例的CPU使用率低于30%,从而触发弹性伸缩的自动移除报警任务,自动移除此前自动添加的ECS实例。
- 远程登录ECS01实例后,执行以下命令安装stress工具。 - sudo yum install -y epel-release sudo yum install -y stress
- 执行以下命令通过stress工具对ECS01实例进行压测,压测时间为60s。 - sudo stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 60s &
- 返回弹性伸缩的报警任务页面,等待几分钟后,报警状态显示报警。 
- 进入伸缩组管理页面,在实例数/容量列查看总实例数增加1个。证明已添加一台新的ECS实例到伸缩组。 
- 登录网络型负载均衡NLB控制台。
- 在左侧导航栏,选择 。 
- 单击创建的目标服务器组的ID,单击后端服务器页签,可以看到后端服务器有两台实例,其中以 - ESS-XX命名的实例为通过弹性伸缩服务自动添加的ECS实例。
- 压测时间60s结束后,可再次登录弹性伸缩与负载均衡控制台,可查看到此前已经添加的实例已自动移除。 
相关文档
- 如您想详细了解弹性伸缩服务,可参考什么是弹性伸缩ESS。 
- 如您需要设置定时任务进行服务器数量自动调整,可参考通过定时任务设置伸缩组内的实例数量。 
- 结合云监控配置不同的伸缩规则,可实现基于监控指标的伸缩、指标预测等更多高级功能,详情可参考配置伸缩规则。