

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建混合实例组的设置概述
<a name="mixed-instances-groups-set-up-overview"></a>

本主题提供创建混合实例自动扩缩的概述和最佳实践。

**Topics**
+ [概述](#mixed-instances-groups-overview)
+ [实例类型灵活性](#mixed-instances-group-instance-flexibility)
+ [可用区灵活性](#mixed-instances-group-az-flexibility)
+ [Spot 最高价](#mixed-instances-group-spot-max-price)
+ [主动容量再平衡](#use-capacity-rebalancing)
+ [扩展行为](#mixed-instances-group-scaling-behavior)
+ [实例类型的区域可用性](#setup-overview-regional-availability-of-instance-types)
+ [相关资源](#setup-overview-related-resources)
+ [限制](#setup-overview-limitations)

## 概述
<a name="mixed-instances-groups-overview"></a>

要创建混合实例组，您有两个选项：
+ [基于属性的实例类型选择](create-mixed-instances-group-attribute-based-instance-type-selection.md)：定义您的计算要求，以便根据其特定实例属性自动选择实例类型。
+ [手动实例类型选择](create-mixed-instances-group-manual-instance-type-selection.md)：手动选择适合您工作负载的实例类型。

------
#### [ Manual selection ]

以下步骤介绍如何通过手动选择实例类型来创建混合实例组：

1. 选择一个启动模板，器中包含用于启动 EC2 实例的参数。启动模板中的参数是可选的，但是如果启动模板中缺少 amilong; (AMI) ID，Amazon EC2 Auto Scaling 将无法启动实例。

1. 选择选项以覆盖启动模板。

1. 手动选择适合您的工作负载的实例类型。

1. 指定要启动的按需型实例和竞价型实例的百分比。

1. 选择决定 Amazon EC2 Auto Scaling 将如何利用可能的实例类型来达到您的按需型和竞价型容量的分配策略。

1. 选择要在其中启动实例的可用区和 VPC 子网。

1. 指定组的初始大小（所需容量）以及该组的最小和最大大小。

必须进行覆盖，才能覆盖启动模板中声明的实例类型并使用嵌入在自动扩缩组自有资源定义中的多个实例类型。有关可用实例类型的更多信息，请参阅《Amazon EC2 用户指南》**中的[实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。

您还可以为每种实例类型配置以下可选参数：
+ `LaunchTemplateSpecification`：您可以根据需要为实例类型分配不同的启动模板。此选项目前在控制台中不可用。有关更多信息，请参阅 [使用多个启动模板](ec2-auto-scaling-mixed-instances-groups-launch-template-overrides.md)。
+ `WeightedCapacity`：与组中其余实例相比，您可以决定该实例在所需容量中所占的比例。如果您为一种实例类型指定 `WeightedCapacity` 值，则必须为所有实例类型指定 `WeightedCapacity` 值。默认情况下，每个实例在您的所需容量中计为一个。有关更多信息，请参阅 [配置自动扩缩组以使用实例权重](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)。

------
#### [ Attribute-based selection ]

要让 Amazon EC2 Auto Scaling 根据实例的特定属性自动选择您的实例类型，请使用以下步骤通过指定您的计算要求来创建混合实例组：

1. 选择一个启动模板，器中包含用于启动 EC2 实例的参数。启动模板中的参数是可选的，但是如果启动模板中缺少 amilong; (AMI) ID，Amazon EC2 Auto Scaling 将无法启动实例。

1. 选择选项以覆盖启动模板。

1. 指定与您的计算要求相匹配的实例属性，例如 v CPUs 和内存要求。

1. 指定要启动的按需型实例和竞价型实例的百分比。

1. 选择决定 Amazon EC2 Auto Scaling 将如何利用可能的实例类型来达到您的按需型和竞价型容量的分配策略。

1. 选择要在其中启动实例的可用区和 VPC 子网。

1. 指定组的初始大小（所需容量）以及该组的最小和最大大小。

必须进行覆盖，才能覆盖启动模板中声明的实例类型并使用一组实例属性来描述您的计算要求。有关支持的属性，请参阅 [InstanceRequirements](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_InstanceRequirements.html)*Amazon EC2 Auto Scaling API 参考*中的。或者，您可以使用已有实例属性定义的启动模板。

您也可以在覆盖结构中配置 `LaunchTemplateSpecification` 参数，以便根据需要为一组实例要求分配不同的启动模板。此选项目前在控制台中不可用。有关更多信息，请参阅[LaunchTemplateOverrides](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_LaunchTemplateOverrides.html)《*亚马逊 EC2 Auto Scaling API 参考*》。

默认情况下，您将自动扩缩组的所需容量值设置为实例的数量。

或者，您可以将所需容量的值设置为 v 数CPUs 或内存量。为此，请使用 `CreateAutoScalingGroup` API 操作中的 `DesiredCapacityType` 属性或 AWS 管理控制台中的**所需容量类型**下拉字段。这是[实例权重](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)的实用替代方案。

------

## 实例类型灵活性
<a name="mixed-instances-group-instance-flexibility"></a>

要提高可用性，请跨多种实例类型部署应用程序。最佳实践是使用多种实例类型来满足容量要求。这样，如果您选择的可用区中实例容量不足，则 Amazon EC2 Auto Scaling 可以启动另一种实例类型。

如果竞价型实例的实例容量不足，则 Amazon EC2 Auto Scaling 将继续尝试从其他竞价型实例池启动。（它使用的池由您选择的实例类型和分配策略决定。） Amazon EC2 Auto Scaling 通过启动竞价型实例而不是按需型实例，帮助您利用竞价型实例节省的成本。

我们建议灵活地为每种工作负载在至少 10 种实例类型之间进行选择。选择实例类型时，不要局限于最热门的新实例类型。选择老一代实例类型往往会导致竞价型中断较少，因为按需客户对它们的需求较少。

## 可用区灵活性
<a name="mixed-instances-group-az-flexibility"></a>

我们强烈推荐您在多个可用区之间跨越您的自动扩缩组。利用多个可用区，您可以设计在可用区之间自动实现故障转移的应用程序，从而提高弹性。

作为额外优势，与单个可用区中的组相比，您可以访问更充足的 Amazon EC2 容量池。由于可用区内每个实例类型的容量分开波动，您可以灵活使用实例类型和可用区，通常可以获得更多计算容量。

有关使用多可用区的详细信息，请参阅 [示例：在可用区之间分配实例](auto-scaling-benefits.md#arch-AutoScalingMultiAZ)。

## Spot 最高价
<a name="mixed-instances-group-spot-max-price"></a>

使用 AWS CLI 或软件开发工具包创建 Auto Scaling 组时，可以指定`SpotMaxPrice`参数。`SpotMaxPrice` 参数确定您愿意为竞价型实例一小时支付的最高价。

当您在覆盖（或 `"DesiredCapacityType": "vcpu"` 或在组级别的 `"DesiredCapacityType": "memory-mib"`）中指定 `WeightedCapacity` 参数时，最高价格代表的是最高单价，而不是整个实例的最高价格。

我们强烈建议您不要指定最高价。如果您未收到任何竞价型实例 (例如当您的最高价太低时)，您的应用程序可能不运行。如果未指定最高价，则默认最高价为按需价格。您只需为您启动的竞价型实例支付 Spot 价格。您仍然可以享受竞价型实例提供的大幅折扣。这些折扣得以实现，是由于借助[竞价型定价模型](https://aws.amazon.com/blogs/compute/new-amazon-ec2-spot-pricing/)带来了稳定的竞价型定价。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[定价和节省](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html#spot-pricing)。

## 主动容量再平衡
<a name="use-capacity-rebalancing"></a>

如果您的用例允许，我们建议您进行容量再平衡。容量再平衡可主动替换存在中断风险的竞价型实例，从而帮助维持工作负载的可用性。

当启用容量再平衡时，Amazon EC2 Auto Scaling 将尝试主动替换已收到 EC2 实例再平衡建议的竞价型实例。这让您能够将工作负载转移到不具有较高中断风险的新竞价型实例。

有关更多信息，请参阅 [Auto Scaling 进行容量再平衡以替换存在风险的竞价型实例](ec2-auto-scaling-capacity-rebalancing.md)。

## 扩展行为
<a name="mixed-instances-group-scaling-behavior"></a>

当您创建混合实例组时，它默认使用按需型实例。要使用竞价型实例，您必须修改要启动的按需型实例启动的百分比。您可以指定 0 到 100 之间的任意数字来作为按需百分比。

或者，您也可以指定要开始使用的按需型实例的基本数量。如果您这样操作，则 Amazon EC2 Auto Scaling 将等待，直到它在组横向扩展时启动按需型实例的基本容量之后，才会启动竞价型实例。超出基本容量的任何内容都使用按需百分比来确定要启动多少按需型实例和竞价型实例。

Amazon EC2 Auto Scaling 将百分比转换为等效数量的实例。如果结果创建一个小数，向上舍入为下一个整数，以支持按需型实例。

下表展示了自动扩缩组随着规模的增加和减少而采取的行为。


**示例：扩展行为**  

| 购买选项 | 各购买选项的运行实例的组大小和数量 | 
| --- |--- |
|  | **10** | **20** | **30** | **40** | 
| --- |--- |--- |--- |--- |
| **示例 1**：以 10 为基准，50/ 50% 按需/竞价型 |  |  |  |  | 
| 按需实例（基本数量） | 10 | 10 | 10 | 10 | 
| 按需型实例 | 0 | 5 | 10 | 15 | 
| 竞价型实例 | 0 | 5 | 10 | 15 | 
| **示例 2**：以 0 为基准，0/ 100% 按需/竞价型 |  |  |  |  | 
| 按需实例（基本数量） | 0 | 0 | 0 | 0 | 
| 按需型实例 | 0 | 0 | 0 | 0 | 
| 竞价型实例 | 10 | 20 | 30 | 40 | 
| **示例 3**：以 0 为基准，60/ 40% 按需/竞价型 |  |  |  |  | 
| 按需实例（基本数量） | 0 | 0 | 0 | 0 | 
| 按需型实例 | 6 | 12 | 18 | 24 | 
| 竞价型实例 | 4 | 8 | 12 | 16 | 
| **示例 4**：以 0 为基准，100/ 0% 按需/竞价型 |  |  |  |  | 
| 按需实例（基本数量） | 0 | 0 | 0 | 0 | 
| 按需型实例 | 10 | 20 | 30 | 40 | 
| 竞价型实例 | 0 | 0 | 0 | 0 | 
| **示例 5**：以 12 为基准，0/ 100% 按需/竞价型 |  |  |  |  | 
| 按需实例（基本数量） | 10 | 12 | 12 | 12 | 
| 按需型实例 | 0 | 0 | 0 | 0 | 
| 竞价型实例 | 0 | 8 | 18 | 28 | 

当组规模*增加*时，Amazon EC2 Auto Scaling 将尝试在您指定的可用区之间均匀平衡您的容量。然后，它根据指定的分配策略启动实例类型。

当组规模*减少*时，Amazon EC2 Auto Scaling 首先确定应终止两种类型中的哪一种类型（竞价型或按需）。然后，它会尝试以平衡的方式终止您指定的可用区的实例。它还倾向于以更接近您的分配策略的方式终止实例。有关终止策略的更多信息，请参阅 [配置 Amazon EC2 Auto Scaling 的终止策略](ec2-auto-scaling-termination-policies.md)。

## 实例类型的区域可用性
<a name="setup-overview-regional-availability-of-instance-types"></a>

EC2 实例类型的可用性因您而异 AWS 区域。例如，最新一代实例类型可能尚未在给定区域中可用。由于不同区域的实例可用性存在差异，如果您的覆盖中的多个实例类型在您所在的地区不可用，则在提出编程请求时可能会遇到问题。使用您所在地区不可用的多个实例类型可能会导致请求完全失败。要解决此问题，请使用不同的实例类型重试请求，确保每个实例类型在该区域中都可用。要搜索按位置提供的实例类型，请使用[describe-instance-type-offerings](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-instance-type-offerings.html)命令。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[查找 Amazon EC2 实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-discovery.html)。

## 相关资源
<a name="setup-overview-related-resources"></a>

有关竞价型实例的更多最佳实践，请参阅《Amazon EC2 用户指南》**中的 [EC2 竞价型的最佳实践](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-best-practices.html)。

## 限制
<a name="setup-overview-limitations"></a>

使用[混合实例策略](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_MixedInstancesPolicy.html)向自动扩缩组添加覆盖后，您可以通过 `UpdateAutoScalingGroup` API 调用更新覆盖，但无法将其删除。要完全移除覆盖，必须先将自动扩缩组切换为使用启动模板或启动配置，而不是混合实例策略。然后，您可以再次添加混合实例策略，而无需任何覆盖。