Elastic Beanstalk 环境的容量配置 - AWS Elastic Beanstalk

Elastic Beanstalk 环境的容量配置

本主题介绍为您的 Elastic Beanstalk 环境配置 Auto Scaling 容量的不同方法。您可以使用 Elastic Beanstalk 控制台、EB CLI、AWS CLI 或命名空间选项。

重要

EnableSpot 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略,则在更新环境配置时,创建或更新环境可能会失败。有关更多信息和重要注意事项,请参阅将 Elastic Beanstalk 环境迁移到启动模板

使用控制台的配置

您可以通过在 Elastic Beanstalk 控制台中环境的配置页面上编辑容量来配置自动扩缩组的容量管理方式。

在 Elastic Beanstalk 控制台中配置自动扩缩组容量
  1. 打开 Elastic Beanstalk 控制台,然后在 Regions(区域)列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

  3. 在导航窗格中,选择 Configuration (配置)

  4. Capacity (容量) 配置类别中,选择 Edit (编辑)

  5. Auto Scaling group (Auto Scaling 组) 部分中,配置以下设置。

    • Environment type (环境类型) - 选择 Load balanced (负载均衡)

    • Min instances (最小实例数) - 组在任何时间均应包含的最小 EC2 实例数。组从最小计数开始,当满足扩展触发条件时,则添加实例。

    • Max instances (最大实例数) - 组在任何时间均应包含的最大 EC2 实例数。

      注意

      如果您使用滚动更新,请确保最大实例计数高于滚动更新的 Minimum instances in service (使用的最小实例数) 设置

    • 机群组合 (Fleet composition) — 默认值为按需实例。要启用 Spot 实例请求,请选择组合购买选项和实例

      重要

      EnableSpot 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略,则在更新环境配置时,创建或更新环境可能会失败。有关更多信息和重要注意事项,请参阅将 Elastic Beanstalk 环境迁移到启动模板

      如果选择启用 Spot 实例请求,请启用以下选项:

      • 竞价型分配策略:根据可用容量、价格和实例类型选择,确定在您的环境中管理和预置竞价型实例的方法。从容量优化型策略(默认)、价格容量优化新房策略容量优化优先性策略最低价格策略中选择。有关每种分配策略的描述和更多信息,请参阅竞价型实例的分配策略

      • 最高 Spot 价格 — 有关竞价型实例最高价格选项的建议,请参阅《Amazon EC2 用户指南》中的竞价型实例定价历史记录

      • 按需基准 (On-Demand base) – 向外扩展环境时,在考虑 Spot 实例之前,Auto Scaling 组预配置的最小按需实例数。

      • 按需上方基准 (On-Demand above base)– Auto Scaling 组在按需基本实例之外调配的任何额外容量中,按需实例所占的百分比。

        注意

        按需型实例基本比例超出基本比例的按需实例百分比选项与前面列出的最小数量最大数量实例选项相关联。有关这些选项和例子的更多信息,请参阅 Elastic Beanstalk 环境的竞价型实例支持

      • 容量重新平衡:仅当自动扩缩组中至少有一个竞价型实例时,此选项才适用。启用此功能后,EC2 会在中断前自动尝试替换自动扩缩组中的竞价型实例,以最大限度地减少竞价型实例中断对应用程序的影响。有关更多信息,请参阅《Amazon EC2 Auto Scaling User Guide》 中的 Capacity Rebalancing

    • 架构:EC2 实例的处理器架构。处理器架构决定了下一个字段中可用的 EC2 实例类型。

    • 实例类型:为运行应用程序而启动的 Amazon EC2 实例的类型。有关详细信息,请参阅实例类型

    • AMI ID - Elastic Beanstalk 用来启动环境中的 Amazon EC2 实例的计算机映像。有关详细信息,请参阅AMI ID

    • Availability Zones (可用区) - 选择环境实例要跨越的可用区的数量。默认情况下,Auto Scaling 组会在所有可用区中均匀启动实例。要将实例集中在少数几个区域中,请选择要使用的区域数。对于生产环境而言,至少要使用两个区域,以确保当一个可用区中断服务时您的应用程序仍然可用。

    • Placement (放置)(可选)- 选择要使用的可用区。如果您的实例需要连接至特定区域中的资源或者您购买了区域特定的预留实例,请使用此设置。如果您在自定义 VPC 中启动环境,则无法配置此选项。在自定义 VPC 中,您需要为分配给环境的子网选择可用区。

    • Scaling cooldown (扩展冷却时间) - 在扩展之后、在继续评估触发器之前等待实例启动或终止的时间(以秒为单位)。有关更多信息,请参阅扩展冷却时间

  6. 要保存更改,请选择页面底部的 Apply(应用)。

使用命名空间选项进行配置

Elastic Beanstalk 在以下两个命名空间中提供了用于 Auto Scaling 设置的配置选项aws:autoscaling:asgaws:ec2:instances

aws:autoscaling:asg 命名空间

aws:autoscaling:asg 命名空间提供了用于整体调整和可用性的选项。

以下配置文件示例配置 Auto Scaling 组以便使用两到四个实例、特定可用区和 12 分钟(720 秒)的冷却时间。它为竞价型实例启用了容量重新平衡。只有在 aws:ec2:instances 命名空间中将 EnableSpot 设置为 true 时,EnableCapacityRebalancing 选项才会生效,如下面的配置文件示例所示。

option_settings: aws:autoscaling:asg: Availability Zones: Any Cooldown: '720' Custom Availability Zones: 'us-west-2a,us-west-2b' MaxSize: '4' MinSize: '2' EnableCapacityRebalancing: true

aws:ec2:instances 命名空间

注意

当您更新环境配置并从 InstanceTypes 选项中删除一个或多个实例类型时,Elastic Beanstalk 会终止在任何已删除的实例类型上运行的任何 Amazon EC2 实例。然后,您环境的 Auto Scaling 组根据需要启动新实例,以使用当前指定的实例类型来完成所需的容量。

aws:ec2:instances 命名空间提供与环境的实例相关的选项,包括 Spot 实例管理。它是 aws:autoscaling:launchconfigurationaws:autoscaling:asg 的补充。

以下配置文件示例配置 Auto Scaling 组,以便为环境启用 Spot 实例请求。它指定了三种可以使用的实例类型。至少采用一个按需实例作为基准容量,并采用 33% 的按需实例作为补充用的任何额外容量。

此配置将竞价型分配策略设置为 capacity-optimized-prioritized。这种特殊的分配策略根据 InstanceTypes 选项中指定的实例类型的顺序确定实例从实例池中启动的优先级。如果未指定 SpotAllocationStrategy,则其默认为 capacity-optimized

option_settings: aws:ec2:instances: EnableSpot: true InstanceTypes: 't2.micro,t3.micro,t3.small' SpotAllocationStrategy: capacity-optimized-prioritized SpotFleetOnDemandBase: '1' SpotFleetOnDemandAboveBasePercentage: '33'

要选择 Spot 实例类型,请使用 Spot Instance Advisor

重要

EnableSpot 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略,则在更新环境配置时,创建或更新环境可能会失败。有关更多信息和重要注意事项,请参阅将 Elastic Beanstalk 环境迁移到启动模板

使用 AWS CLI 进行配置

本节提供了一些示例,说明如何使用 AWS CLI create-environment 命令通过下列各部分中所述的 Auto Scaling 和容量选项来配置您的环境。您会注意到,此示例中还配置了前面命名空间配置选项一节中所述的 aws:autoscaling:asgaws:ec2:instances 的命名空间设置。

AWS 命令行界面提供了用于创建和配置 Elastic Beanstalk 环境的命令。使用 --option-settings 选项,您可以传入 Elastic Beanstalk 支持的命名空间选项。这意味着,可以将前面描述的命名空间配置选项传递到适用的 AWS CLI 命令,以此配置 Elastic Beanstalk 环境。

注意

您还可以使用带有 --option-settingsupdate-environment 命令来添加或更新命名空间选项。如果您需要从环境中移除任何命名空间选项,请使用带有 --options-to-removeupdate-environment 命令。

以下示例会创建一个新环境。有关传入的选项的更多上下文信息,请参阅上一个命名空间配置选项主题。

列出的第一个选项,即 aws:autoscaling:launchconfiguration 命名空间中的 IamInstanceProfile,是 Elastic Beanstalk 实例配置文件。创建新环境时需要该选项。

例 :使用 Auto Scaling 选项创建环境(命名空间选项内联)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2023 v4.3.0 running Python 3.12" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role Namespace=aws:autoscaling:asg,OptionName=Availability Zones,Value=Any \ Namespace=aws:autoscaling:asg,OptionName=Cooldown,Value=720 \ Namespace=aws:autoscaling:asg,OptionName=Custom Availability Zones,Value=us-west-2a,us-west-2b \ Namespace=aws:autoscaling:asg,OptionName=MaxSize,Value=4 \ Namespace=aws:autoscaling:asg,OptionName=MinSize,Value=2 \ Namespace=aws:autoscaling:asg,OptionName=EnableCapacityRebalancing,Value=true \ Namespace=aws:ec2:instances,OptionName=EnableSpot,Value=true \ Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t2.micro,t3.micro,t3.small \ Namespace=aws:ec2:instances,OptionName=SpotAllocationStrategy,Value=capacity-optimized-prioritized \ Namespace=aws:ec2:instances,OptionName=SpotFleetOnDemandBase,Value=1 \ Namespace=aws:ec2:instances,OptionName=SpotFleetOnDemandAboveBasePercentage,Value=33

重要

EnableSpot 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略,则在更新环境配置时,创建或更新环境可能会失败。有关更多信息和重要注意事项,请参阅将 Elastic Beanstalk 环境迁移到启动模板

作为替代方法,请使用 options.json 文件来指定命名空间选项,而不是将其内联。

例 :使用 Auto Scaling 选项创建环境(options.json 文件中的命名空间选项)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2023 v4.3.0 running Python 3.12" --option-settings file://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "Availability Zones", "Value": "Any" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "Cooldown", "Value": "720" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "Custom Availability Zones", "Value": "us-west-2a,us-west-2b" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "MaxSize", "Value": "4" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "MinSize", "Value": "2" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "EnableCapacityRebalancing", "Value": "true" }, { "Namespace": "aws:ec2:instances", "OptionName": "EnableSpot", "Value": "true" }, { "Namespace": "aws:ec2:instances", "OptionName": "InstanceTypes", "Value": "t2.micro,t3.micro,t3.small" }, { "Namespace": "aws:ec2:instances", "OptionName": "SpotAllocationStrategy", "Value": "capacity-optimized-prioritized" }, { "Namespace": "aws:ec2:instances", "OptionName": "SpotFleetOnDemandBase", "Value": "1" }, { "Namespace": "aws:ec2:instances", "OptionName": "SpotFleetOnDemandAboveBasePercentage", "Value": "33" } ]

使用 EB CLI 进行配置

使用 eb create 命令创建环境时,可以指定几个与环境的 Auto Scaling 组相关的选项。这些选项可帮助您控制环境的容量。

--single

使用一个 Amazon EC2 实例创建环境,并且不使用负载均衡器。如果您未使用此选项,负载均衡器会被添加到创建的环境中。

--enable-spot

为您的环境启用 Spot 实例请求。

重要

enable-spot 选项设置可能导致 Elastic Beanstalk 将具有启动配置的现有环境迁移到启动模板。此行为需要具备管理启动模板的必要权限。这些权限包含在我们的托管式策略中。如果您使用自定义策略而非托管式策略,则在更新环境配置时,创建或更新环境可能会失败。有关更多信息和重要注意事项,请参阅将 Elastic Beanstalk 环境迁移到启动模板

只有 eb create 命令的以下这些选项才能与 --enable-spot 一起使用。

--instance-types

列出您希望环境使用的 Amazon EC2 实例类型。

--spot-max-price

您愿意为 Spot 实例支付的每单位小时的最高价(美元)。有关竞价型实例最高价格选项的建议,请参阅《Amazon EC2 用户指南》中的竞价型实例定价历史记录

--on-demand-base-capacity

扩展环境时,在考虑 Spot 实例之前,Auto Scaling 组预配置的最小按需实例数。

--on-demand-above-base-capacity

Auto Scaling 组在 --on-demand-base-capacity 选项指定的超过的实例数作为额外容量预配置的按需实例的百分比。

以下示例创建一个环境,并配置 Auto Scaling 组以便为新环境启用 Spot 实例请求。在此示例中,可以使用这三种实例类型。

$ eb create --enable-spot --instance-types "t2.micro,t3.micro,t3.small"
重要

还有另一个名称类似的选项,称为 --instance-type(无“s”),EB CLI 仅在处理按需实例时识别该选项。请勿将 --instance-type(无“s”)与 --enable-spot 选项一同使用。如果您这样做,EB CLI 将忽略它。请改为将 --instance-types(带有“s”)与 --enable-spot 选项一同使用。