如何排查 Elastic Beanstalk 中的扩展触发器问题?

上次更新时间:2019 年 10 月 8 日

我的 AWS Elastic Beanstalk 环境不按预期方式扩展。如何解决此问题?

简短描述

您的 Elastic Beanstalk 环境中的 Auto Scaling 组使用两个 Amazon CloudWatch 警报触发扩展操作。默认的 Auto Scaling 触发器被配置为,在每个实例的平均出站网络流量 (NetworkOut) 在五分钟内大于 6 MB 或小于 2 MB 时扩展。

要有效使用 Amazon EC2 Auto Scaling,您必须配置适用于您的应用程序、实例类型和服务要求的扩展触发器。

注意:您可以根据多个统计数据扩展您的环境,包括延迟、磁盘 I/O、CPU 利用率和请求计数。在高级场景中,基于内存等自定义指标考虑使用 .ebextensions

开始解决方法部分中的步骤之前,请确认以下事项:

  • 您拥有足够的容量,可使您的 Amazon Elastic Compute Cloud (Amazon EC2) 实例基于您的环境配置中所定义的 Auto Scaling 组可包含的最大实例数量在您的 AWS 区域中扩展。
  • 必要时,您可以根据您的应用程序安装和配置要求设置冷却期
  • 您通过使用 CloudWatch 的默认指标进行的负载测试或使用 Locust 进行的更高级的负载生成和测试确定了您的环境要触发的最佳指标。

解决方法

要配置您的扩展触发器,请使用 AWS 管理控制台或选项设置完成步骤:

在 Elastic Beanstalk 控制台中配置扩展触发器

1.    打开 Elastic Beanstalk 控制台,然后选择您的环境。

2.    在导航窗格中,选择配置

3.    对于容量类别,选择修改

4.    在扩展触发器部分中,根据您的需求选择触发选项,然后选择应用

注意:Elastic Beanstalk 为 aws:autoscaling:trigger 命名空间中的 Auto Scaling 设置提供配置选项。此命名空间中的设置由它们所应用到的资源组织。

使用选项设置配置扩展触发器

使用选项设置中的 .ebextensions 修改您的扩展配置。

以下示例将扩展触发器修改为基于 CPU 利用率。如果所有实例的 CPU 利用率在三个连续的两分钟周期内均超过 80%,则在 Auto Scaling 组中添加一个实例。如果所有实例的 CPU 利用率在相同周期内低于 2%,则从 Auto Scaling 组中移除一个实例。

option_settings:
  aws:autoscaling:trigger:
    MeasureName: CPUUtilization
    Statistic: Average
    Unit: Percent
    Period: '2'
    EvaluationPeriods: '3'
    UpperThreshold: '80'
    UpperBreachScaleIncrement: '1'
    LowerThreshold: '20'
    LowerBreachScaleIncrement: '-1'

这篇文章对您是否有帮助?

我们可以改进什么?


需要更多帮助吗?