置放群組 - Amazon Elastic Compute Cloud

置放群組

當您啟動新的 EC2 執行個體時,EC2 服務置放此執行個體的方法是試著讓所有執行個體分散到底層硬體,使相互關聯的故障減到最少。不過,您可以使用 置放群組 來影響一組 互相依存 執行個體的置放,以符合您的工作負載需求。視工作負載類型而定,您可以採取下列其中一個置放策略來建立置放群組:

  • 叢集 – 會將執行個體緊密地包裝在一個可用區域內。此策略可讓工作負載達到高效能運算 (HPC) 應用程式典型緊密耦合節點對節點通訊所需的低延遲網路效能。

  • 分區 – 會將執行個體分散到邏輯分區,使一個分區中的執行個體群組不會與不同分區中的執行個體群組共用底層硬體。大量分散和複寫的工作負載 (例如 Hadoop、Cassandra 和 Kafka) 通常採取此策略。

  • 分散 – 嚴格地將一小組執行個體分散到不同的底層硬體,以減少相互關聯的故障。

建立置放群組無需收費。

置放群組策略

您可以使用下列其中一種置放策略來建立置放群組。

集群放置群組

集群放置群組是單一可用區域中的執行個體邏輯分組。集群放置群組可以跨越相同區域中互連的虛擬私有網路 (VPC)。相同集群放置群組中的執行個體可享受 TCP/IP 流量更高的每個流程傳輸量限制,並且放置在相同的網路高等分頻寬區段中。

下列映像會顯示放入集群放置群組中的執行個體。


                    集群放置群組。

能夠受惠於低網路延遲、高網路傳輸量或這兩者的應用,建議採用集群放置群組。當大部分的網路流量都在群組中的執行個體之間時,也建議使用這些群組。若要為置放群組提供最低延遲和最高的網路效能 (每秒封包數),請選擇支援增強型聯網功能的執行個體類型。如需詳細資訊,請參閱增強型聯網

我們建議您以下列方式啟動執行個體:

  • 使用單一啟動要求,在置放群組中啟動您所需的執行個體數目。

  • 對置放群組中的所有執行個體使用相同的執行個體類型。

如果之後您試著在置放群組中加入更多執行個體,或是在置放群組中啟動超過一種執行個體類型,將會提高出現容量不足錯誤的機率。

如果先停止置放群組中的執行個體,然後再啟動,此執行個體仍會在置放群組中執行。不過,如果執行個體可用的容量不足,起始作業將會失敗。

若置放群組中已經擁有正在運作的執行個體,當您在此置放群組中啟動執行個體時,如果收到容量錯誤,請停止和啟動該置放群組中的所有執行個體,然後試著再次啟動。啟動執行個體的動作,可能會讓這些執行個體轉移到容量足夠的硬體,能夠提供容量給所有請求的執行個體使用。

分區置放群組

分區置放群組有助於降低應用程式發生相關硬體故障的可能性。使用分區置放群組時,Amazon EC2 會將每個群組分割成稱為分區的邏輯區段。Amazon EC2 會確保置放群組內的每個分區有其自己的一組機架。每個機架有其自己的網路和電源。一個置放群組內不會有兩個分割區共用相同的機架,這樣可讓您隔離硬體故障在應用程式內造成的影響。

下圖顯示在單一可用區域中分區置放群組的簡單視覺化呈現。其中顯示放入分區置放群組中的執行個體,而該群組具有三個分區 - 分區 1分區 2分區 3。每個分區包含多個執行個體。一個分割區中的執行個體不會與其他分割區中的執行個體共用機架,可讓您將單一硬體故障的影響僅限縮在相關聯的分割區中。


                    具有三個分區的分區放置群組。

分區置放群組可用於跨不同機架來部署大型分散式和複寫式工作負載,例如 HDFS、HBase 和 Cassandra。將執行個體啟動到分區置放群組時,Amazon EC2 會嘗試在指定的分區數中均勻分佈執行個體。您也可以將執行個體啟動到特定的分區,讓您能夠更有效控制放置執行個體的位置。

分區置放群組的分割區可以在同一區域中的多個可用區域。分區置放群組在每個可用區域最多可有 7 個分區。可啟動到分區置放群組中的執行個體數,僅會受到帳戶限制的限制。

此外,分區置放群組可提供對分區的可見性 - 您可以看到執行個體位於哪個分區中。您可以與拓撲感知應用程式 (例如 HDFS、HBase 和 Cassandra) 共用此資訊。這些應用程式會使用此資訊來進行智能資料複寫決策,以提高資料可用性與持久性。

如果開始或啟動分區置放群組中的執行個體,但是沒有足夠的唯一硬體來滿足請求,則請求會失敗。Amazon EC2 會隨著時間釋出更多可用的不同硬體,因此您可以之後再嘗試進行請求。

分散放置群組

分散置放群組是一組放在不同硬體上的執行個體。

若應用程式具有應該分開保存的少量重要執行個體,建議使用分散置放群組。透過分散層級置放群組來啟動執行個體,可降低同時發生故障的風險,這種情況可能會在執行個體共用相同設備時發生。分散層級置放群組提供對不同硬體的存取,因此適合混合的執行個體類型或不同時間啟動執行個體。

如果開始或啟動分散置放群組中的執行個體,但是沒有足夠的唯一硬體來滿足請求,則請求會失敗。Amazon EC2 會隨著時間釋出更多可用的不同硬體,因此您可以之後再嘗試進行請求。置放群組可以跨機架或主機分散放置執行個體。在 AWS Outposts 中只能使用主機層級分散置放群組。

機架層級分散置放群組

下列映像會顯示在單一可用區域中放入分散置放群組中的 7 個執行個體。七個執行個體放在七個不同機架上,而各機架有其自己的網路和電源。


                    分散放置群組。

機架分散置放群組可以涵跨同一區域中的多個可用區域。若使用機架分散置放群組,每個群組在每個可用區域中最多可有七個執行中的執行個體。

主機層級分散置放群組

僅在 AWS Outposts 中可使用主機分散層級置放群組。如果使用主機層級分散置放群組,每個 Outposts 中執行的執行個體數量沒有限制。如需詳細資訊,請參閱 AWS Outposts 中的置放群組

放置群組的規則與限制

一般規則與限制

在使用置放群組之前,請記住下列規則:

  • 您可以在每個區域的每個帳戶建立最多 500 個放置群組。

  • 為置放群組所指定的名稱,在您該區域的 AWS 帳戶中必須是唯一的。

  • 置放群組無法合併。

  • 執行個體一次可以在一個置放群組中啟動;執行個體不能涵跨多個置放群組。

  • 隨需容量保留zonal 預留執行個體 會在特定的可用區域中,為 EC2 執行個體提供容量保留。保留的容量可提供給置放群組中的執行個體使用。使用具有容量保留的集群放置群組時,建議您在集群放置群組內保留容量。如需詳細資訊,請參閱集群放置群組中的容量保留

    Zonal 預留執行個體會在特定的可用區域中為執行個體提供容量保留。保留的容量可提供給置放群組中的執行個體使用。不過,無法使用 Zonal 預留執行個體在置放群組明確地預留容量。

  • 您無法在置放群組中啟動專用執行個體。

  • 您無法啟動在置放群組中設定為中斷時停止或休眠的 Spot 執行個體。

集群放置群組的規則與限制

集群放置群組適用的規則如下:

  • 支援下列執行個體類型:

  • 集群放置群組不能涵跨多個可用區域。

  • 在集群放置群組中,兩個執行個體之間傳送資料的最高網路傳輸速度,會受限於這兩個執行個體之中較慢者的速度。針對需要高傳輸量的應用程式,請選擇符合您需求之網路連線能力的執行個體類型。

  • 下列規則適用於為增強聯網所啟用的執行個體:

    • 集群放置群組內的執行個體,單一傳輸流的速度最多可達 10 Gbps。不在集群放置群組內的執行個體,單一傳輸流的速度最高可達 5 Gbps。

    • 在同一個區域中,Amazon S3 儲存貯體之間透過公有 IP 地址空間或 VPC 端點的往來流量,可以使用所有可用的執行個體總頻寬。

  • 您可以在集群放置群組中啟動多種執行個體類型。不過,這會降低啟動成功所需容量可用的機率。我們建議在集群放置群組中,針對所有執行個體使用相同的執行個體類型。

  • 連到網際網路,以及透過 AWS Direct Connect 連到現場部署資源的網路傳輸速度只限於 5 Gbps。

分區放置群組的規則與限制

分區置放群組適用的規則如下:

  • 分區置放群組在每個可用區域最多支援 7 個分區。您可以在分區置放群組中啟動的執行個體數,僅會受到帳戶限制的限制。

  • 將執行個體啟動到分區置放群組時,Amazon EC2 會嘗試在所有分區中均勻分配執行個體。Amazon EC2 不保證會在所有分區中均勻分配執行個體。

  • 具有 專用執行個體 的分區置放群組最多可有 2 個分區。

  • 容量保留不能在分區置放群組中預留容量。

分散放置群組的規則與限制

分散置放群組適用的規則如下:

  • 機架分散置放群組支援每個可用區域最多可有七個執行中的執行個體。例如,在具有三個可用區域的區域中,您在該群組共可執行 21 個執行個體 (每個可用區域七個)。如果您嘗試在相同可用區域和在相同的分散置放群組中啟動第 8 個執行個體,則該執行個體不會啟動。如果您在一個可用區域中需要七個以上的執行個體,建議使用多重分散置放群組。使用多重分散置放群組並不能保證群組之間的執行個體分散,但可有助於確保每個群組的分散,從而限制某些類型失敗的影響。

  • 專用執行個體 不支援分散置放群組。

  • 主機層級分散置放群組僅支援在 AWS Outposts 中設定置放群組。主機層級分散置放群組中執行的執行個體數量沒有限制。

  • 容量保留不能在分散置放群組中預留容量。

使用置放群組

建立置放群組

您可以使用下列其中一種方法來建立置放群組。

注意

您僅能使用命令列工具在建立置放群組時標記置放群組。

Console
使用主控台來建立置放群組
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,依序選擇 Placement Groups (置放群組)、Create placement group (建立置放群組)。

  3. 指定群組的名稱。

  4. 選擇群組的置放策略。如果您選擇 Partition (分區),請選擇群組內的分區數目。

    選擇群組的置放策略。

    • 如果選擇 Spread (分散),請選擇分散層級。

      • 機架:無限制

      • 主機:僅適用於 Outposts

    • 如果您選擇 Partition (分區),請選擇群組內的分區數目。

  5. 若要標記置放群組,請選擇 Add tag (新增標籤),然後輸入金鑰和值。選擇 Add tag (新增標籤) 來逐個新增標籤。

  6. 選擇 Create group (建立群組)。

AWS CLI
使用 AWS CLI 建立置放群組

使用 create-placement-group 命令。下列範例會建立一個名為 my-cluster 的置放群組,它使用 cluster 置放策略,並且套用一個標籤以及 purpose 的索引鍵和 production 的數值。

aws ec2 create-placement-group --group-name my-cluster --strategy cluster --tag-specifications 'ResourceType=placement-group,Tags={Key=purpose,Value=production}'
使用 AWS CLI 建立分區置放群組

使用 create-placement-group 命令。以 --strategy 值指定 partition 參數,並以所需的分區數目指定 --partition-count 參數。在此範例中,分區置放群組名為 HDFS-Group-A,且使用五個分區建立。

aws ec2 create-placement-group --group-name HDFS-Group-A --strategy partition --partition-count 5
PowerShell
使用 AWS Tools for Windows PowerShell 建立置放群組

使用 New-EC2PlacementGroup 命令。

標記放置群組

若要協助分類和管理現有的置放群組,您可以使用自訂中繼資料標記它們。如需有關標籤運作方式的詳細資訊,請參閱標記您的 Amazon EC2 資源

當您為置放群組加上標籤時,啟動到置放群組的執行個體不會自動加上標籤。您需要明確標記啟動到置放群組中的執行個體。如需詳細資訊,請參閱 在您啟動執行個體時新增標籤

您可以使用新的主控台和命令列工具來檢視、新增和刪除標籤。

New console

您可以使用下列其中一種方法來檢視、新增及刪除標籤。

Console
檢視、新增或刪除現有置放群組標籤的步驟
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  3. 在導覽窗格中,選擇 Placement Groups (置放群組)

  4. 選取置放群組,然後選取 Actions (動作)Manage tags (管理標籤)

  5. 管理標籤(管理標籤) 區段會顯示指派給置放群組的所有標籤。執行下列動作以新增或移除標籤:

    • 若要加入標籤,請選擇 Add tag (新增標籤),然後輸入標籤索引鍵和值。每個置放群組最多可以新增 50 個標籤。如需詳細資訊,請參閱 標籤限制

    • 若要移除標籤,請在您要移除的標籤旁邊選擇 Remove (移除)

  6. 選擇 Save changes (儲存變更)。

AWS CLI
檢視置放群組的標籤

使用 describe-tags 命令檢視指定資源的標籤。在下列範例中,您將描述所有置放群組的標籤。

aws ec2 describe-tags \ --filters Name=resource-type,Values=placement-group
{ "Tags": [ { "Key": "Environment", "ResourceId": "pg-0123456789EXAMPLE", "ResourceType": "placement-group", "Value": "Production" }, { "Key": "Environment", "ResourceId": "pg-9876543210EXAMPLE", "ResourceType": "placement-group", "Value": "Production" } ] }

您也可以使用 describe-tags 命令,透過指定置放群組的 ID 來檢視置放群組的標籤。在下列範例中將描述 pg-0123456789EXAMPLE 的標籤。

aws ec2 describe-tags \ --filters Name=resource-id,Values=pg-0123456789EXAMPLE
{ "Tags": [ { "Key": "Environment", "ResourceId": "pg-0123456789EXAMPLE", "ResourceType": "placement-group", "Value": "Production" } ] }

您也可以描述置放群組來檢視置放群組的標籤。

使用 describe-placement-group 命令來檢視指定置放群組的組態,其中包括為置放群組指定的任何標籤。

aws ec2 describe-placement-groups \ --group-name my-cluster
{ "PlacementGroups": [ { "GroupName": "my-cluster", "State": "available", "Strategy": "cluster", "GroupId": "pg-0123456789EXAMPLE", "Tags": [ { "Key": "Environment", "Value": "Production" } ] } ] }
使用 AWS CLI 標記現有的置放群組

使用 create-tags 命令來標記現有資源。在下列範例中,會使用 Key=Cost-CenterValue=CC-123 來標記現有置放群組。

aws ec2 create-tags \ --resources pg-0123456789EXAMPLE \ --tags Key=Cost-Center,Value=CC-123
使用 AWS CLI 從置放群組中刪除標籤

您可以使用 delete-tags 命令從現有資源中刪除標籤。如需範例,請參閱 AWS CLI 命令參考中的範例

PowerShell
檢視置放群組的標籤

使用 Get-EC2Tag 命令。

描述特定置放群組的標籤

使用 Get-EC2PlacementGroup 命令。

標記現有的置放群組

使用 New-EC2Tag 命令。

從置放群組刪除標籤

使用 Remove-EC2Tag 命令。

在放置群組中啟動執行個體

如果符合置放群組規則和限制,您可以使用下列其中一種方法,將置放群組中啟動執行個體。

Console
使用主控台來在置放群組中啟動執行個體
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在 EC2 主控台儀表板的 Launch instance (啟動執行個體) 方塊中,選擇 Launch instance (啟動執行個體),然後從出現的選項中選擇 Launch instance (啟動執行個體)。依照指示完成表單,請注意做到下列幾點:

    • Instance Type (執行個體類型) 欄位中,選取可以在置放群組中啟動的執行個體類型。

    • Number of instances (執行個體的數量) 下的 Summary (摘要) 方塊中,輸入您在這個置放群組中所需的執行個體總數,您之後可能會無法在此置放群組中加入執行個體。

    • Advanced details (進階詳細資訊) 下的 Placement group name (置放群組名稱) 欄位中,可以選擇將執行個體新增至新的或現有的置放群組。如果選擇具有分區策略的置放群組,請在 Target partition (目標分割區) 欄位中選擇要在其中啟動執行個體的分區。

Old Console
使用主控台來在置放群組中啟動執行個體
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 選擇 Launch Instance (啟動執行個體)。依照指示完成精靈的動作,請注意做到下列幾點:

    在 EC2 主控台儀表板的 Launch instance (啟動執行個體) 方塊中,選擇 Launch instance (啟動執行個體),然後從出現的選項中選擇 Launch instance (啟動執行個體)。依照指示完成精靈的動作,請注意做到下列幾點:

    • Choose an Instance Type (選取執行個體類型) 頁面上,選取可以在置放群組中啟動的執行個體類型。

    • Configure Instance Details (設定執行個體詳細資訊) 頁面,下列欄位適用於置放群組:

      • 對於 Number of instances (執行個體的數目),輸入您在這個置放群組中所需的執行個體總數,因為您之後可能會無法在此置放群組中加入執行個體。

      • 對於 Placement group (置放群組),選取 Add instance to placement group (將執行個體新增至置放群組) 核取方塊。如果您在此頁面上看不到 Placement group (置放群組),請確認您所選取的執行個體類型可以在該置放群組中啟動。否則無法使用這個選項。

      • 對於 Placement group name (置放群組名稱),您可以將執行個體新增至現有的置放群組,或新增至您建立的新置放群組。

      • 對於 Placement group strategy (置放群組策略),選擇適當的策略。如果您選擇 partition (分區),對於 Target partition (目標分區),請選擇 Auto distribution (自動分佈),讓 Amazon EC2 盡力將執行個體平均分佈到群組中的所有分區。或者,指定要在其中啟動執行個體的分區。

AWS CLI
使用 AWS CLI 在置放群組中啟動執行個體

使用 run-instances 命令,並使用 --placement "GroupName = my-cluster" 參數指定置放群組名稱。在此範例中,置放群組會命名為 my-cluster

aws ec2 run-instances --placement "GroupName = my-cluster"
使用 AWS CLI 將執行個體啟動到分區置放群組的特定分區

使用 run-instances 命令,並使用 --placement "GroupName = HDFS-Group-A, PartitionNumber = 3" 參數指定置放群組名稱和分區。在此範例中,置放群組名為 HDFS-Group-A,且分區數為 3

aws ec2 run-instances --placement "GroupName = HDFS-Group-A, PartitionNumber = 3"
PowerShell
使用 AWS Tools for Windows PowerShell 在置放群組中啟動執行個體

使用 New-EC2Instance 命令,並使用 -Placement_GroupName 參數指定置放群組名稱。

描述放置群組中的執行個體

您可以使用下列其中一種方法來檢視執行個體的置放資訊。您也可以使用 AWS CLI,依照分區號碼篩選分區置放群組。

Console
使用主控台檢視執行個體的置放群組和分區號碼
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 選取執行個體。

  4. Details (詳細資訊) 標籤的 Host and placement group (主機與置放群組) 下,尋找 Placement group (置放群組)。如果執行個體不在置放群組中,則欄位為空白。否則,它會包含置放群組的名稱。如果置放群組是分割區置放群組,則 Partition number (分割區編號) 包含執行個體的分割區編號。

AWS CLI
使用 AWS CLI 檢視分區置放群組中執行個體的分區數

使用 describe-instances 命令,並指定 --instance-id 參數。

aws ec2 describe-instances --instance-id i-0123a456700123456

回應包含置放資訊,其中包括置放群組名稱和執行個體分區數。

"Placement": { "AvailabilityZone": "us-east-1c", "GroupName": "HDFS-Group-A", "PartitionNumber": 3, "Tenancy": "default" }
使用 AWS CLI 篩選特定分區置放群組和分區數的執行個體

使用 describe-instances 命令,並使用 --filtersplacement-group-name 篩選條件來指定 placement-partition-number 參數。在此範例中,置放群組名為 HDFS-Group-A,且分區數為 7

aws ec2 describe-instances --filters "Name = placement-group-name, Values = HDFS-Group-A" "Name = placement-partition-number, Values = 7"

回應會列出在指定分區的指定置放群組內的所有執行個體。以下範例輸出僅顯示執行個體 ID、執行個體類型和傳回的執行個體置放資訊。

"Instances": [ { "InstanceId": "i-0a1bc23d4567e8f90", "InstanceType": "r4.large", }, "Placement": { "AvailabilityZone": "us-east-1c", "GroupName": "HDFS-Group-A", "PartitionNumber": 7, "Tenancy": "default" } { "InstanceId": "i-0a9b876cd5d4ef321", "InstanceType": "r4.large", }, "Placement": { "AvailabilityZone": "us-east-1c", "GroupName": "HDFS-Group-A", "PartitionNumber": 7, "Tenancy": "default" } ],

變更執行個體的放置群組

您可以使用下列任一方式變更執行個體的置放群組:

  • 將現有執行個體移至置放群組

  • 在置放群組之間移動執行個體

  • 從置放群組中移除執行個體

執行個體必須處於 stopped 狀態,您才能移動或移除該執行個體。您可以使用 AWS CLI 或 AWS 開發套件移動或移除執行個體。

AWS CLI
使用 AWS CLI 將執行個體移到置放群組
  1. 使用 stop-instances 命令停止執行個體。

  2. 使用 modify-instance-placement 命令,並針對要做為移動執行個體目的地的置放群組,指定群組的名稱。

    aws ec2 modify-instance-placement --instance-id i-0123a456700123456 --group-name MySpreadGroup
  3. 使用 start-instances 命令啟動執行個體。

PowerShell
使用 AWS Tools for Windows PowerShell 將執行個體移到置放群組
  1. 使用 Stop-EC2Instance 命令停止執行個體。

  2. 使用 Edit-EC2InstancePlacement 命令,並針對要做為移動執行個體目的地的置放群組,指定群組的名稱。

  3. 使用 Start-EC2Instance 命令啟動執行個體。

 

AWS CLI
使用 AWS CLI 移除置放群組中的執行個體
  1. 使用 stop-instances 命令停止執行個體。

  2. 使用 modify-instance-placement 命令,並針對置放群組名稱指定空的字串。

    aws ec2 modify-instance-placement --instance-id i-0123a456700123456 --group-name ""
  3. 使用 start-instances 命令啟動執行個體。

PowerShell
使用 AWS Tools for Windows PowerShell 移除置放群組中的執行個體
  1. 使用 Stop-EC2Instance 命令停止執行個體。

  2. 使用 Edit-EC2InstancePlacement 命令,並針對置放群組名稱指定空的字串。

  3. 使用 Start-EC2Instance 命令啟動執行個體。

刪除置放群組

如果需要更換或不再需要某個置放群組,可以刪除該置放群組。您可以使用下列其中一種方法來刪除置放群組。

要求

置放群組不得包含任何執行個體,您才可予以刪除。您可以終止在該置放群組中啟動的所有執行個體,將執行個體移動到另一個置放群組,或將執行個體從置放群組中移除

Console
使用主控台建立置放群組
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Placement Groups (置放群組)

  3. 選取置放群組並依序選取 Actions (動作)Delete (刪除)

  4. 出現確認提示時,請輸入 Delete,然後選擇 Delete (刪除)

AWS CLI
使用 AWS CLI 刪除置放群組

使用 delete-placement-group 命令並指定置放群組名稱以刪除置放群組。在此範例中,置放群組名稱為 my-cluster

aws ec2 delete-placement-group --group-name my-cluster
PowerShell
使用 AWS Tools for Windows PowerShell 刪除置放群組

使用 Remove-EC2PlacementGroup 命令移除置放群組。