

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

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

**Topics**
+ [集群置放群组](#placement-groups-cluster)
+ [分区置放群组](#placement-groups-partition)
+ [分布置放群组](#placement-groups-spread)
+ [精确时间置放群组](#placement-groups-precision-time)

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

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

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

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


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

您可以通过在创建集群置放群组时指定父级精准时间置放群组，来确保在集群置放群组中启动的实例被放置在具备精准计时能力的硬件上。在创建集群置放群组时，使用 `--parent-group-id` 参数来建立此关联关系。

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

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

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

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

**规则和限制**

以下规则适用于集群置放群组：
+ 支持以下实例类型：
  + 最新一代实例，但不包括[可突增性能](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)来明确集群置放群组中的预留容量。请注意，您无法使用区域预留实例预留容量，因为它们无法在置放群组中明确预留容量。
+ 容量块不支持置放群组。有关更多信息，请参阅 [ML 容量块](ec2-capacity-blocks.md)。
+ 对于集群放置组，指向互联网的网络流量以及通过 Direct Connect 连接指向本地资源的流量限制为 5 Gbps。

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

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

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

![具有 3 个分区的分区置放群组。](https://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 Outposts 上的置放群组](placement-groups-outpost.md)。

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

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


**规则和限制**

以下规则适用于分布置放群组：
+ 机架级别的分布置放群组可在 AWS 区域和 AWS Outposts 中使用。
+ 主机级别分布置放群组仅适用于 AWS Outposts。
+ 机架级别的分布置放群组可跨越同一区域中的多个可用区，但每个可用区中最多支持七个运行的实例。

  例如，在具有三个可用区的区域中，您可以在分布置放群组中总共运行 21 个实例，每个可用区 7 个实例。若您尝试在已有七个实例的可用区中启动第八个实例，则该实例将无法启动。

  如果需要在一个可用区中运行超过七个实例，则建议使用多个分布置放群组。使用多个分布置放群组并不能保证实例在组之间分布，但可确保每个组内的分布，从而限制某些故障类别的影响。
+ 在 AWS Outposts 上，机架级别的分布置放群组可容纳与 Outpost 部署中机架数量一样多的实例，主机级别的分布置放群组可容纳与主机数量一样多的实例。
+ 专用实例 不支持分布置放群组。
+ 容量预留不会在分布放置组中预留容量。

## 精确时间置放群组
<a name="placement-groups-precision-time"></a>

精准时间置放群组将实例放置于可直接访问 AWS 基础设施中高精度时间源的受支持硬件上。在精准时间置放群组中启动的实例可以访问增强版 Amazon Time Sync Service，该服务相比所有 Amazon EC2 实例均可使用的标准本地 NTP 端点，提供了精度更高的本地时间源。

对于需要微秒级精准时钟同步的应用，如需要事务排序和一致性的分布式数据库、需要精准时间戳的金融服务，以及使用本地时钟读数对事件进行排序的分布式系统，建议使用精准时间置放群组。

精准时间置放群组中的实例可受益于以下方面：
+ 增强型本地 NTP 时间源，精度更高，无需额外配置即可供所有受支持的操作系统使用。
+ 可访问 PTP 硬件时钟 (PHC) 设备，以实现微秒级精准同步（仅限 Linux 实例）。
+ 支持硬件数据包时间戳，用于纳秒级分辨率的网络测量（仅限 Linux 实例）。

有关将实例配置为使用增强型时间源的信息，请参阅 [在 EC2 实例上设置时间参考，以使用本地 Amazon Time Sync Service](configure-ec2-ntp.md)。

以下规则适用于精准时间置放群组：

**规则和限制**
+ 有关当前支持的实例系列列表，请参阅 [在 EC2 实例上设置时间参考，以使用本地 Amazon Time Sync Service](configure-ec2-ntp.md)。
+ 如果您在精准时间置放群组中启动或开启一个实例，但硬件资源不足以提供对增强版 Amazon Time Sync Service 的访问，则该请求将失败。请稍后重试，或尝试其他可用区。
+ 您无法删除作为集群置放群组父级的精准时间置放群组。
+ 使用精准时间置放群组不收取额外费用。