管理按需型实例和竞价型实例 - AWS Elastic Beanstalk

管理按需型实例和竞价型实例

您可以启动并自动扩展单个 Auto Scaling 组中的一组按需实例和竞价型实例。可以同时使用以下选项来配置 Auto Scaling 服务管理您环境中竞价型实例和按需型实例的方式。

您可以使用 Elastic Beanstalk 控制台命名空间配置选项AWS CLIEB CLI 为环境配置这些选项。

以下选项是 aws:ec2:instances 命名空间的一部分:

  • EnableSpot:当设置为 true 时,此设置会为您的环境启用竞价型实例请求。

  • SpotFleetOnDemandBase:此选项会设置在随着环境纵向扩展时考虑竞价型实例之前自动扩缩组预置的最小按需型实例数量。

  • SpotFleetOnDemandAboveBasePercentage:自动扩缩组在 SpotOnDemandBase 实例之外作为额外容量预置的按需型实例的百分比。

全面列出的选项与 aws:autoscaling:asg 命名空间中的以下选项相关联:

  • MinSize:自动扩缩组中所需的最小实例数量。

  • MaxSize:自动扩缩组中所需的最大实例数量。

重要

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

同时应用两组命名空间选项

以下几点描述了将这些选项设置组合起来使用对环境扩展有何影响。

  • 只有 MinSize 决定了您环境的初始容量,即您希望运行的最低实例数。

  • SpotFleetOnDemandBase 不会影响初始容量。在启用竞价型实例的情况下,此选项决定在考虑竞价型实例前,先预置的按需型实例数量。

  • 考虑何时 SpotFleetOnDemandBase 小于 MinSize。您仍然会得到完全的 MinSize 实例作为初始容量。至少这些实例中的 SpotFleetOnDemandBase 必须是按需实例。

  • 考虑何时 SpotFleetOnDemandBase 大于 MinSize。随着环境的扩展,将保证您至少可获得等于两个值之间的差值的额外实例数。换句话说,可以保证您在满足 SpotFleetOnDemandBase 要求之前至少获得额外的按需 (SpotFleetOnDemandBase - MinSize) 实例。

单实例环境

在生产环境中,将 Spot 实例作为可扩展、负载均衡的环境的一部分尤其有用。我们建议不要在单实例环境中使用 Spot。如果 Spot 实例不可用,您可能会丢失环境的所有容量(单实例)。您仍可以在单实例环境中使用 Spot 实例进行开发或测试。此种情况下,请务必将 SpotFleetOnDemandBaseSpotFleetOnDemandAboveBasePercentage 均设置为零。任何其他设置都会导致使用按需实例。

扩展选项设置示例

以下示例演示了设置各种调整选项的不同方案。所有示例都采用已启用 Spot 实例请求的负载均衡环境。

例 1:初始容量包含按需实例和 Spot 实例
选项设置
选项 命名空间

MinSize

aws:autoscaling:asg

10

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

在此示例中,环境的初始实例数是十个,其中七个是按需实例(四个基本实例,以及基本实例以外的六个实例的 50%),三个是 Spot 实例。该环境最多可扩展到 24 个实例。扩展时,队列中四个基本按需实例以外的按需实例比例保持为 50%,该队列整体最多可包含 24 个实例,其中 14 个是按需实例(4 个基本实例,以及基本实例以外的 20 个实例的 50%),10 个是 Spot 实例。

例 2:所有按需初始容量
选项设置
选项 命名空间

MinSize

aws:autoscaling:asg

4

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

在此示例中,环境的初始实例数是四个,所有这些实例都是按需实例。该环境最多可扩展到 24 个实例。扩展时,队列中四个基本按需实例以外的按需实例比例保持为 50%,该队列整体最多可包含 24 个实例,其中 14 个是按需实例(4 个基本实例,以及基本实例以外的 20 个实例的 50%),10 个是 Spot 实例。

例 3:初始容量以外的额外按需基本实例
选项设置
选项 命名空间

MinSize

aws:autoscaling:asg

3

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

在此示例中,环境的初始实例数是三个,所有这些实例都是按需实例。该环境最多可扩展到 24 个实例。除开三个初始实例以外添加的第一个实例是按需实例,用于凑齐四个基本按需实例。随着进一步扩展,队列中四个基本按需实例以外的按需实例比例保持为 50%,该队列整体最多可包含 24 个实例,其中 14 个是按需实例(4 个基本实例,以及基本实例以外的 20 个实例的 50%),10 个是 Spot 实例。