使用 PowerShell 建立鄰近放置群組

Note

本文件所列的許多步驟,適用於使用統一協調流程模式的虛擬機器擴展集。 我們建議針對新的工作負載使用彈性協調流程。 如需詳細資訊,請參閱 Azure 中虛擬機器擴展集的協調流程模式。

將 VM 放在單一區域中可減少實例之間的實體距離。 將它們放在單一可用性區域內,也會讓它們實際更緊密地結合在一起。 然而,隨著 Azure 覆蓋範圍擴大,單一可用區域可能跨越多個實體資料中心,這可能導致網路延遲影響您的應用程式。

為了讓虛擬機盡可能靠近並達到最低延遲,你可以將它們部署在鄰近配置群組中。

鄰近放置群組是邏輯群組,可用來確保 Azure 計算資源實際位於彼此接近的位置。 鄰近放置群組很適合用於具備低延遲需求的工作負載。

  • 獨立 VM 之間的低延遲。
  • 單一可用性組或虛擬機規模組中虛擬機間的低延遲。
  • 獨立 VM、多個可用性設定組中的 VM 或多個擴展集之間的低延遲。 您可以在單一放置群組中有多個計算資源,以將多層式應用程式結合在一起。
  • 使用不同硬體類型之多個應用層之間的低延遲。 例如,在可用性設定組中使用 M 系列執行後端,並在擴展集中的 D 系列執行個體上,在單一鄰近放置群組中執行前端。

使用鄰近放置群組

鄰近放置群組是 Azure 中的資源。 您需要先建立一個群組,再與其他資源搭配使用。 建立後,即可用於虛擬機器、可用性設定組或虛擬機器擴展集。 建立提供鄰近放置群組識別碼的計算資源時,您可以指定鄰近放置群組。

您也可以將現有的資源移至鄰近放置群組。 在將資源移入近端放置群組時,您應該先停止(解除分配)此資產,因為它可能會被重新部署到區域內的不同資料中心,以滿足共置限制。

如果是可用性設定組和虛擬機器擴展集,您應該在資源等級設定鄰近放置群組,而不是個別虛擬機器。

鄰近放置群組是共置條件約束,而不是釘選機制。 當部署第一個使用它的資源時,它會被固定在特定的資料中心。 一旦所有使用鄰近放置群組的資源都已停止 (解除分配) 或刪除,就不再釘選該群組。 因此,使用包含多個虛擬機系列的鄰近置放群組時,盡可能在範本中明確指定所有所需類型,或遵循部署順序,以提升成功部署的機會。 如果你的部署失敗,請用失敗的虛擬機大小重新開始部署,因為那個虛擬機大小是第一個要部署的。

使用鄰近放置群組時預期的情況

鄰近放置群組會在相同的資料中心內提供共置。 不過,因為鄰近放置群組代表額外的部署條件約束,所以可能會發生配置失敗。 以下是幾個您使用鄰近放置群組時,可能會看到分配失敗的使用案例:

  • 當您要求鄰近放置群組中的第一部虛擬機器時,系統會自動選取資料中心。 在某些案例中,如果不同虛擬機器 SKU 在該資料中心中不存在,對於其第二個要求就可能會失敗。 在此情況下,會傳回 OverconstrainedAllocationRequest 錯誤。 為了避免這種情況,試著改變你部署 SKU 的順序,或是用同一個 ARM 範本同時部署兩個資源。
  • 在彈性工作負載中,也就是新增或移除虛擬機實例時,部署中若有接近配置群組限制,可能會導致無法滿足請求,進而產生 AllocationFailure 錯誤。
  • 停止 (解除配置) 並視需要啟動 VM 是達成彈性的另一種方式。 由於一旦停止(解除配置)虛擬機,容量就不會被保留,重新啟動時可能會出現 AllocationFailure 錯誤。
  • VM 的啟動和重新部署作業將會繼續遵守已順利設定的鄰近放置群組。

計畫性維護和鄰近放置群組

計畫性維護事件,例如 Azure 資料中心的硬體汰除,可能會影響鄰近放置群組中資源的排列一致性。 資源可能會被移至其他資料中心,這會干擾鄰近配置群組的共置與延遲預期。

檢查對齊狀態

您可以執行下列動作來檢查鄰近放置群組的對齊狀態。

  • 您可以使用入口網站、CLI 和 PowerShell 來檢視鄰近放置群組共置狀態。

    • 對於 PowerShell,可以透過 Get-AzProximityPlacementGroup cmdlet 加入可選參數 '-ColocationStatus' 來取得共置狀態。

    • 對於 CLI,可透過 az ppg show 加入可選參數「--include-colocation-status' 來取得共置狀態。

  • 對於每個鄰近放置群組, 共置狀態 屬性會提供群組資源的目前對齊狀態摘要。

    • 對齊:資源位於鄰近放置群組的相同延遲範圍內。

    • 未知:至少有一個虛擬機器資源已解除配置。 一旦成功開始,狀態會回到 「對齊」。

    • 未對齊:至少有一個虛擬機資源未與鄰近配置群組對齊。 未對齊的特定資源也會在會員專區另行說明

  • 針對可用性設定組,您可以在 [可用性設定組概觀] 頁面中查看個別 VM 的對齊方式相關信息。

  • 對於擴展集,您可以在擴展集 [概觀] 頁面的 [執行個體] 索引標籤中看到個別執行個體對齊的相關資訊。

重新調整資源

如果鄰近放置群組是 Not Aligned,你可以停止/解除分配,然後重新啟動受影響的資源。 如果 VM 位於可用性設定組或擴展集中,則必須先停止\解除配置可用性設定組或擴展集中的所有 VM,再將其重新啟動。

如果因部署限制導致配置失敗,你可能必須先停止/解除受影響鄰近放置群組中的所有資源(包括已對齊的資源),然後重新啟動它們以恢復對齊。

最佳做法

  • 為了達到最低延遲,請使用鄰近放置群組搭配加速式網路。 如需詳細資訊,請參閱 使用加速網路建立Linux虛擬機 或 使用加速網路建立 Windows 虛擬機。
  • 將所有虛擬機大小部署在單一範本中。 為了避免使用不支援所有虛擬機 SKU 和大小的硬體,建議將所有應用程式層級整合在同一個範本中,讓它們能同時部署。
  • 如果你是用 PowerShell、CLI 或 SDK 來編寫部署腳本,可能會出現配置錯誤 OverconstrainedAllocationRequest。 在這種情況下,你應該停止或解除所有現有的虛擬機,並在部署腳本中將順序改成從失敗的虛擬機 SKU/大小開始。
  • 重複使用已刪除 VM 的現有放置群組時,請先等候刪除作業完成,再將 VM 新增至其中。
  • 如果延遲是您的第一個優先要務,請將 VM 放在鄰近放置群組中,並將整個解決方案放在可用性區域中。 但是,如果復原是您最優先的要務,請將執行個體分散到多個可用性區域 (單一鄰近放置群組無法跨越區域)。

建立鄰近位置群組

使用 New-AzProximityPlacementGroup 指令檔建立一個鄰近置入群組。

$resourceGroup = "myPPGResourceGroup"
$location = "East US"
$ppgName = "myPPG"
New-AzResourceGroup -Name $resourceGroup -Location $location
$ppg = New-AzProximityPlacementGroup `
   -Location $location `
   -Name $ppgName `
   -ResourceGroupName $resourceGroup `
   -ProximityPlacementGroupType Standard

列出鄰近位置群組

你可以使用 Get-AzProximityPlacementGroup Cmdlet 列出所有鄰近位置群組。

Get-AzProximityPlacementGroup

在鄰近放置群組中建立一個擴展集

Important

自 2023 年 11 月起,使用 PowerShell 與 Azure CLI 建立的虛擬機擴展集,若未指定彈性編排模式,將預設為彈性編排模式。 欲了解更多關於此變更及應採取的行動,請造訪 VMSS PowerShell/CLI 客戶的重大變更 - Microsoft 社群中心

使用 -ProximityPlacementGroup $ppg.Id在鄰近放置群組中建立一個擴展規模,以在您使用 New-AzVMSS 建立擴展集時,參考鄰近放置群組識別碼。

$scalesetName = "myVM"

New-AzVmss `
  -ResourceGroupName $resourceGroup `
  -Location $location `
  -OrchestrationMode "Uniform" `
  -VMScaleSetName $scalesetName `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -ProximityPlacementGroup $ppg.Id

您可以使用 Get-AzProximityPlacementGroup 在放置群組中看到這個執行個體。

  Get-AzProximityPlacementGroup `
   -ResourceId $ppg.Id | Format-Table `
   -Wrap `
   -Property VirtualMachineScaleSets

下一步

你也可以使用 Azure CLI 來建立接近度放置群組。