使用 PowerShell 建立鄰近放置群組
注意
本文件所列的許多步驟,適用於使用統一協調流程模式的虛擬機器擴展集。 我們建議針對新的工作負載使用彈性協調流程。 如需詳細資訊,請參閱 Azure 中虛擬機器擴展集的協調流程模式。
將 VM 放在單一區域中可減少執行個體之間的實際距離。 將其放在單一可用性區域內,也會使其實際上更接近。 不過,隨著 Azure 磁碟使用量的成長,單一可用性區域可能會跨越多個實體資料中心,這可能會導致網路等待時間影響您的應用程式。
若要盡可能使 VM 彼此接近以達成可能的最低延遲,您可以將其部署至鄰近放置群組內。
鄰近放置群組是邏輯群組,可用來確保 Azure 計算資源實際位於彼此接近的位置。 鄰近放置群組對需要低延遲的工作負載非常有用。
- 獨立 VM 之間的低延遲。
- 在單一可用性設定組或虛擬機器擴展集中 VM 之間的低延遲。
- 獨立 VM、多個可用性設定組中的 VM 或多個擴展集之間的低延遲。 您可以在單一放置群組中有多個計算資源,以將多層式應用程式結合在一起。
- 使用不同硬體類型之多個應用程式層之間的低延遲。 例如,在可用性設定組中使用 M 系列執行後端,並在擴展集中的 D 系列執行個體上,在單一鄰近放置群組中執行前端。
使用鄰近放置群組
鄰近放置群組是 Azure 中的資源。 您需要先建立一個群組,再與其他資源搭配使用。 建立之後,就可以與虛擬機器、可用性設定組或虛擬機器擴展集搭配使用。 建立提供鄰近放置群組識別碼的計算資源時,您可以指定鄰近放置群組。
您也可以將現有的資源移至鄰近放置群組。 將資源移至鄰近放置群組時,您應該先停止 (解除配置) 資產,因為其可能會重新部署至區域中的不同資料中心,以滿足共置條件約束。
如果是可用性設定組和虛擬機器擴展集,您應該在資源等級設定鄰近放置群組,而不是個別虛擬機器。
鄰近放置群組是共置條件約束,而不是釘選機制。 其會釘選到特定資料中心,並部署使用該群組的第一個資源。 使用鄰近放置群組的所有資源都已停止 (解除配置) 或刪除之後,就不再釘選。 因此,搭配多個 VM 系列使用鄰近放置群組時,請務必盡可能在範本中預先指定所有必要的類型,或遵循部署順序,這麼做將改善成功部署的機會。 如果部署失敗,請使用失敗的 VM 大小做為要部署的第一個大小重新開始部署。
使用鄰近放置群組時預期的情況
鄰近放置群組會在相同的資料中心內提供共置。 不過,因為鄰近放置群組代表額外的部署條件約束,所以可能會發生配置失敗。 使用鄰近放置群組時,您可能會看到配置失敗的幾個使用案例:
- 當您要求鄰近放置群組中的第一部虛擬機器時,系統會自動選取資料中心。 在某些案例中,如果不同虛擬機器 SKU 在該資料中心中不存在,則對於其第二個要求可能會失敗。 在此情況下,會傳回 OverconstrainedAllocationRequest 錯誤。 若要避免這種情況,請嘗試變更您部署 SKU 的順序,或使用單一 ARM 範本部署這兩個資源。
- 在彈性工作負載的案例下,您可以在其中新增和移除 VM 執行個體,在部署上具有鄰近放置群組條件約束,可能會導致無法滿足要求而導致 AllocationFailure 錯誤。
- 停止 (解除配置) 並視需要啟動 VM 是達成彈性的另一種方式。 容量不會保留,因此一旦停止 (解除配置) VM,重新啟動可能會導致 AllocationFailure 錯誤。
- VM 的啟動和重新部署作業將會繼續遵守已順利設定的鄰近放置群組。
計劃性維護和鄰近放置群組
計劃性維護事件,例如 Azure 資料中心的硬體解除委任,可能會影響鄰近放置群組中資源的對齊。 資源可能會移至不同的資料中心,並中斷與鄰近放置群組相關聯的共現性和延遲預期。
查看對齊狀態
您可以執行下列動作來檢查鄰近放置群組的對齊狀態。
您可以使用入口網站、CLI 和 PowerShell 來檢視鄰近放置群組共置狀態。
針對 PowerShell,可以透過包含選用參數 '-ColocationStatus',使用 Get-AzProximityPlacementGroup Cmdlet 來取得共置狀態。
針對 CLI,可以透過包含選用參數 '--include-colocation-status',使用
az ppg show
來取得共置狀態。
針對每個鄰近放置群組,共置狀態屬性會提供群組資源目前的對齊狀態摘要。
已對齊:資源位於鄰近放置群組的相同延遲封套內。
未知:至少一個 VM 資源已解除配置。 成功啟動之後,狀態將會回到 [已對齊]。
未對齊:至少有一項 VM 資源未與鄰近放置群組對齊。 未對齊的特定資源也會在成員資格區段中個別呼叫
針對可用性設定組,您可以在 [可用性設定組概觀] 頁面中查看個別 VM 的對齊相關資訊。
對於擴展集,您可以在擴展集 [概觀] 頁面的 [執行個體] 索引標籤中看到個別執行個體對齊的相關資訊。
重新對齊資源
如果鄰近放置群組為 Not Aligned
,您可以停止\解除配置,然後重新啟動受影響的資源。 如果 VM 位於可用性設定組或擴展集中,則必須先停止\解除配置可用性設定組或擴展集中的所有 VM,再將其重新啟動。
如果因部署條件約束而發生配置失敗,您可能必須停止\解除配置受影響鄰近放置群組中的所有資源 (包括對齊的資源),然後將其重新啟動以還原對齊。
最佳作法
- 對於最低延遲,請使用鄰近放置群組搭配加速網路。 如需詳細資訊,請參閱建立具有加速網路的 Linux 虛擬機器或建立具有加速網路的 Windows 虛擬機器。
- 在單一範本中部署所有 VM 大小。 為了避免登陸在不支援您所需所有 VM SKU 和大小的硬體,請在單一範本中包含所有應用程式層,以便同時進行部署。
- 如果您使用 PowerShell、CLI 或 SDK 編寫部署指令碼,可能會收到配置錯誤
OverconstrainedAllocationRequest
。 在此案例下,您應該停止/解除配置所有現有的 VM,並變更部署指令碼中的順序,以從失敗的 VM SKU/大小開始。 - 重複使用已刪除 VM 的現有放置群組時,請先等候刪除完成,再將 VM 新增至其中。
- 如果延遲是您的第一個優先要務,請將 VM 放在鄰近放置群組中,並將整個解決方案放在可用性區域中。 但是,如果復原是您最優先的要務,請將執行個體分散到多個可用性區域 (單一鄰近放置群組無法跨越區域)。
建立鄰近放置群組
使用 New-AzProximityPlacementGroup \(英文\) Cmdlet 來建立鄰近放置群組。
$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
在鄰近放置群組中建立擴展集
重要
自 2023 年 11 月起,如果未指定協調流程模式,則使用 PowerShell 和 Azure CLI 建立的 VM 擴展集會預設為彈性協調流程模式。 如需此變更的詳細資訊,以及您應該採取的動作,請前往針對 VMSS PowerShell/CLI 客戶的中斷性變更 - Microsoft 社群中樞
在使用 New-AzVMSS \(英文\) 來建立擴展集時,請使用 -ProximityPlacementGroup $ppg.Id
來參考鄰近放置群組識別碼,以在鄰近放置群組中建立擴展。
$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 來建立鄰近放置群組。