本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Spot 实例支持
要利用 Amazon EC2 Spot 实例,您可以为您的环境启用 Spot 选项。然后,您环境的 Auto Scaling 组会将 Amazon EC2 购买选项组合在一起,并将按需实例和 Spot 实例组合在一起。
注意
EnableSpot
选项设置可能导致 Elastic Beanstalk 使用启动模板创建环境或将现有环境从启动配置更新为启动模板。有关更多信息,请参阅 启动模板。
以下本主题将介绍为您的环境启用 Spot 实例请求的方法:
-
Elastic Beanstalk 控制台 — 有关更多信息,请参阅 使用 Elastic Beanstalk 控制台进行 Auto Scaling 组配置 中的机群组合 (Fleet composition)。
-
EB CLI – 有关更多信息,请参阅 使用 EB CLI 进行 Auto Scaling 组配置。
-
aws:ec2:instances
命名空间配置选项 – 有关更多信息,请参阅 命名空间配置选项。
重要
对 Spot 实例的需求在不同时间可能有显著的差异,Spot 实例的可用性也会因为未使用 Amazon EC2 实例的可用数量而差别巨大。Spot 实例可能会中断。
为了有助于最大限度地减少这些中断对应用程序的影响,您可以启用 Amazon EC2 Auto Scaling 随附的“容量再平衡”选项。启用此功能后,EC2 会在中断前自动尝试替换 Auto Scaling 组中的 Spot 实例。要启用此功能,请使用 Elastic Beanstalk 控制台以配置 Auto Scaling 组。或者,您可以在 aws:autoscaling:asg 命名空间中将 Elastic Beanstalk EnableCapacityRebalancing
配置选项设置为 true
。
有关更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的 Capacity Rebalancing 和《Amazon EC2 用户指南》中的竞价型实例中断。
Elastic Beanstalk 提供了多个配置选项来支持 Spot 功能。这些内容将在以下与配置 Auto Scaling 组相关的章节中讨论。
在 aws:ec2:instances 命名空间中,这些选项里有两个值得特别注意:
-
SpotFleetOnDemandBase
-
SpotFleetOnDemandAboveBasePercentage
这两个选项与 aws:autoscaling:asg 命名空间中的 MinSize
选项相关联。
-
只有
MinSize
决定了您环境的初始容量,即您希望运行的最低实例数。 -
SpotFleetOnDemandBase
不会影响初始容量。启用 Spot 时,此选项仅确定在考虑任何 Spot 实例前预置的按需实例数。 -
考虑何时
SpotFleetOnDemandBase
小于MinSize
。您仍然会得到完全的MinSize
实例作为初始容量。至少这些实例中的SpotFleetOnDemandBase
必须是按需实例。 -
考虑何时
SpotFleetOnDemandBase
大于MinSize
。随着环境的扩展,将保证您至少可获得等于两个值之间的差值的额外实例数。换句话说,可以保证您在满足SpotFleetOnDemandBase
要求之前至少获得额外的按需(SpotFleetOnDemandBase - MinSize)
实例。
在生产环境中,将 Spot 实例作为可扩展、负载均衡的环境的一部分尤其有用。我们建议不要在单实例环境中使用 Spot。如果 Spot 实例不可用,您可能会丢失环境的所有容量(单实例)。您仍可以在单实例环境中使用 Spot 实例进行开发或测试。此种情况下,请务必将 SpotFleetOnDemandBase
和 SpotFleetOnDemandAboveBasePercentage
均设置为零。任何其他设置都会导致使用按需实例。
注意
-
某些较旧的AWS账户可能会向 Elastic Beanstalk 提供不支持 Spot 实例的默认实例类型(例如,t1.micro)。如果启用 Spot 实例请求,并且显示
None of the instance types you specified supports Spot (您指定的所有实例类型均不支持 Spot)
错误,请务必配置支持 Spot 的实例类型。要选择 Spot 实例类型,请使用 Spot Instance Advisor。 -
启用 Spot 实例请求需要使用 Amazon EC2 启动模板。在创建或更新环境过程中配置此功能时,Elastic Beanstalk 尝试将环境配置为使用 Amazon EC2 启动模板(如果环境尚未使用启动模板)。在这种情况下,如果您的用户策略缺乏必要的权限,则创建或更新环境可能会失败。因此,我们建议您使用托管用户策略,或者将所需的权限添加到自定义策略中。有关所需权限的详细信息,请参阅创建自定义用户策略。
以下示例演示了设置各种调整选项的不同方案。所有示例都采用已启用 Spot 实例请求的负载均衡环境。
例 1:初始容量包含按需实例和 Spot 实例
选项 | 命名空间 | 值 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
在此示例中,环境的初始实例数是十个,其中七个是按需实例(四个基本实例,以及基本实例以外的六个实例的 50%),三个是 Spot 实例。该环境最多可扩展到 24 个实例。扩展时,队列中四个基本按需实例以外的按需实例比例保持为 50%,该队列整体最多可包含 24 个实例,其中 14 个是按需实例(4 个基本实例,以及基本实例以外的 20 个实例的 50%),10 个是 Spot 实例。
例 2:所有按需初始容量
选项 | 命名空间 | 值 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
在此示例中,环境的初始实例数是四个,所有这些实例都是按需实例。该环境最多可扩展到 24 个实例。扩展时,队列中四个基本按需实例以外的按需实例比例保持为 50%,该队列整体最多可包含 24 个实例,其中 14 个是按需实例(4 个基本实例,以及基本实例以外的 20 个实例的 50%),10 个是 Spot 实例。
例 3:初始容量以外的额外按需基本实例
选项 | 命名空间 | 值 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
在此示例中,环境的初始实例数是三个,所有这些实例都是按需实例。该环境最多可扩展到 24 个实例。除开三个初始实例以外添加的第一个实例是按需实例,用于凑齐四个基本按需实例。随着进一步扩展,队列中四个基本按需实例以外的按需实例比例保持为 50%,该队列整体最多可包含 24 个实例,其中 14 个是按需实例(4 个基本实例,以及基本实例以外的 20 个实例的 50%),10 个是 Spot 实例。