

# 置放群组的置放策略
<a name="placement-strategies"></a>

可以使用以下某种置放策略来创建 EC2 实例的置放群组。

**Topics**
+ [集群置放群组](#placement-groups-cluster)
+ [分区置放群组](#placement-groups-partition)
+ [分布置放群组](#placement-groups-spread)

## 集群置放群组
<a name="placement-groups-cluster"></a>

集群置放群组是单个可用区中的实例的逻辑分组。实例未隔离到单个机架上。集群置放群组可横跨同一区域中的对等虚拟专用网络（VPC）。同一集群置放群组中的实例可针对 TCP/IP 流量享受更高的每流吞吐量限制，并且这些实例将处于网络的同一高等分带宽段中。

下图显示放入集群置放群组中的实例。

![\[集群置放群组。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/placement-group-cluster.png)


建议将集群置放群组用于可受益于低网络延迟和/或高网络吞吐量的应用程序。如果大部分网络流量在组中的实例之间进行，也建议使用集群置放群组。要为置放群组提供最低延迟和最高每秒数据包数的网络性能，请选择支持增强联网的实例类型。有关更多信息，请参阅[增强联网](enhanced-networking.md)。

我们建议您按照以下方法启动您的实例：
+ 使用单个启动请求在置放群组中启动所需的实例数。
+ 对置放群组中的所有实例使用相同的实例类型。

如果您以后尝试将更多实例添加到置放群组，或者如果您尝试在置放群组中启动多个实例类型，都会增大发生容量不足错误的可能性。

如果您停止置放群组中的某个实例，然后重启该实例，则其仍将在该置放群组中运行。但是，如果没有足够容量可用于该实例，则启动将会失败。

如果您在已有正在运行的实例的置放群组中启动实例时接收到容量错误信息，请在该置放群组中停止并启动所有实例，然后尝试再次启动。启动实例可能会将实例迁移至具有针对所有请求实例的容量的硬件。

**规则和限制**

以下规则适用于集群置放群组：
+ 支持以下实例类型：
  + 最新一代实例，但不包括[可突增性能](burstable-performance-instances.md)实例（例如 T2）、[Mac1 实例](ec2-mac-instances.md)和 M7i-flex 实例。
  + 以下上一代实例：A1、C3、C4、I2、M4、R3 和 R4。
+ 一个集群置放群组不能跨过多个可用区。
+ 集群置放群组中的两个实例之间的最大网络吞吐量流量速度受两个实例中的较慢实例限制。对于具有高吞吐量要求的应用程序，请选择其网络连接满足您要求的实例类型。
+ 对于启用了增强联网的实例，以下规则适用：
  + 对于单个流的流量，集群置放群组中的实例最多可以使用 10 Gbps。对于单个流的流量，不在集群置放群组中的实例最多可以使用 5 Gbps。
  + 在同一个区域中，通过公有 IP 地址空间或者通过 VPC 终端节点往返于 Amazon S3 存储桶之间的流量可以使用所有可用的实例聚合带宽。
+ 您可以将多种类型的实例启动到集群置放群组中。不过，这会降低提供所需容量以成功完成启动的可能性。我们建议集群置放群组中的所有实例使用相同的实例类型。
+ 我们建议您通过[在集群置放群组中创建按需容量预留](cr-cpg.md)来明确集群置放群组中的预留容量。请注意，您无法使用区域预留实例预留容量，因为它们无法在置放群组中明确预留容量。
+ 对于集群放置组，指向互联网的网络流量以及通过 Direct Connect 连接指向本地资源的流量限制为 5 Gbps。

## 分区置放群组
<a name="placement-groups-partition"></a>

分区置放群组可帮助您的应用程序减少相关硬件故障的可能性。在使用分区置放群组时，Amazon EC2 将每个群组划分为多个逻辑段（称为“分区”）。Amazon EC2 确保置放群组中的每个分区具有自己的一组机架。每个机架具有自己的网络和电源。置放群组中的任何两个分区将不会分享相同的机架，从而让您可以在您的应用程序中隔离硬件故障的影响。

下图是单个可用区中的分区置放群组简单的直观表示。它显示了放入到一个分区置放群组的实例，该置放群组具有三个分区 — **分区 1**、**分区 2** 和 **分区 3**。每个分区均包含多个实例。一个分区中的实例不与其他分区中的实例共享机架，这使您可以将单一硬件故障的影响限定在相关的分区内。

![\[具有 3 个分区的分区置放群组。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/placement-group-partition.png)


可使用分区置放群组跨不同机架部署大型分布式和重复的工作负载，例如 HDFS、HBase 和 Cassandra。当您在分区置放群组中启动实例时，Amazon EC2 将尝试跨您指定数量的分区均匀分发实例。您还可以在特定分区中启动实例，以更好地控制实例的放置位置。

分区置放群组可以在同一区域的多个可用区中具有分区。对于每个可用区，一个分区置放群组最多可具有 7 个分区。可在分区置放群组启动的实例的数量仅受账户限制的限制。

此外，分区置放群组提供对分区的可见性，您可以查看哪些实例位于哪些分区中。您可以与具有感知技术能力的应用程序共享此信息，例如 HDFS、HBase 和 Cassandra。这些应用程序使用此信息做出智能数据复制决策，用于提升数据的可用性和持久性。

如果在一个分区置放群组中启动一个实例，而没有足够的独特硬件来满足请求，则请求将失败。Amazon EC2 会随着时间的推移提供更多不同的硬件，因此，您稍后可以重试请求。

**规则和限制**

以下规则适用于分区置放群组：
+ 对于每个可用区，一个分区置放群组最多支持 7 个分区。您可在分区置放群组中启动的实例的数量仅受账户限制的限制。
+ 当您在分区置放群组中启动实例时，Amazon EC2 将尝试跨所有分区均匀分发实例。Amazon EC2 不保证跨所有分区均匀分发实例。
+ 具有 专用实例 的分区置放群组最多可具有 2 个分区。
+ 容量预留不会在分区放置组中预留容量。

## 分布置放群组
<a name="placement-groups-spread"></a>

分布置放群组是将实例分别置放在不同硬件上的实例群组。

建议在具有少量应单独放置的重要实例的应用程序中使用分布置放群组。通过在分布置放群组中启动实例，可以降低在实例位于同一设备中时同时出现故障的风险。分布置放群组使用不同的硬件，因而适合混用不同类型的实例或随着时间推移逐步启动实例的场景。

如果在一个排列置放群组中启动一个实例，而没有足够的独特硬件来满足请求，则请求将失败。Amazon EC2 会随着时间的推移提供更多不同的硬件，因此，您稍后可以重试请求。置放群组可以跨机架或主机分布实例。机架级别的分布置放群组可在 AWS 区域和 AWS Outposts 中使用。主机级别的分布置放群组只能用于 AWS Outposts。

**机架级别的分布置放群组**  
下图显示单个可用区中的 7 个实例，这些实例已放入一个分布置放群组。将七个实例置放在七个不同的机架上，每个机架都具有自己的网络和电源。

![\[分布置放群组。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/placement-group-spread.png)


机架级别的分布置放群组可以跨越同一区域中的多个可用区。在一个区域中，每个机架级别的分布置放群组在每个可用区中最多可以运行七个实例。通过 Outpost，机架级别的分布置放群组可以容纳与 Outpost 部署中机架数量一样多的实例。

**主机级别分布置放群组**  
主机级别的分布置放群组仅适用于 AWS Outposts。主机级别的分布置放群组可以容纳与 Outpost 部署中的主机数量一样多的实例。有关更多信息，请参阅 [AWS Outposts 上的置放群组](placement-groups-outpost.md)。

**规则和限制**

以下规则适用于分布置放群组：
+ 机架分布置放群组最多支持在每个可用区运行七个实例。例如，在具有三个可用区的区域中，您可以在组中总共运行 21 个实例，每个可用区 7 个实例。如果您尝试在同一可用区和同一个分布置放群组中启动第八个实例，则该实例将无法启动。如果需要在一个可用区中运行超过七个实例，则建议使用多个分布置放群组。使用多个分布置放群组并不能保证实例在群组之间分布，但可帮助确保每个群组内的分布，从而限制某些故障类别的影响。
+ 专用实例 不支持分布置放群组。
+ 主机级别分布置放群组仅适用于 AWS Outposts 上的置放群组。主机级别的分布置放群组可以容纳与 Outpost 部署中的主机数量一样多的实例。
+ 在一个区域中，每个机架级别的分布置放群组在每个可用区中最多可以运行七个实例。通过 AWS Outposts，机架级别的分布置放群组可以容纳与 Outpost 部署中机架数量一样多的实例。
+ 容量预留不会在分布放置组中预留容量。