根據叢集工作負載,自動增加和壓縮 Azure 中的 HPC Pack 叢集資源
這很重要
傳統 VM 將於 2023 年 3 月 1 日淘汰。
如果您使用 ASM 中的 IaaS 資源,請在 2023 年 3 月 1 日完成移轉。 我們鼓勵您及早切換,以利用 Azure Resource Manager 的許多功能增強功能。
如需詳細資訊,請參閱 將 IaaS 資源於 2023 年 3 月 1 日前遷移至 Azure Resource Manager。
如果您在 HPC Pack 叢集中部署 Azure「高載」節點,或是在 Azure VM 中建立 HPC Pack 叢集,您可能會想要根據叢集上的工作負載自動成長或壓縮叢集資源,例如節點或核心。 以這種方式調整叢集資源可讓您更有效率地使用 Azure 資源,並控制其成本。
本文說明 HPC Pack 提供兩種方式來自動調整計算資源:
HPC Pack 叢集屬性 AutoGrowShrink
AzureAutoGrowShrink.ps1 HPC PowerShell 腳本
備註
Azure 針對建立和使用資源方面,有二種不同的的部署模型:Resource Manager 和傳統。 本文將說明如何使用這兩個模型,但 Microsoft 建議大多數新的部署請使用 Resource Manager 模型。
目前,您只能自動增加和壓縮執行 Windows Server作系統的 HPC Pack 計算節點。
設定 AutoGrowShrink 叢集屬性
先決條件
HPC Pack 2012 R2 Update 2 或更新版本的叢集 - 叢集前端節點可以部署在內部部署的環境中或 Azure 的虛擬機器中。 請參閱 ,使用 HPC Pack 配置混合叢集,以開始使用內部部署的前端節點和 Azure 的「自動擴充」節點。 請參閱 HPC Pack IaaS 部署腳本,以在 Azure VM 中快速部署 HPC Pack 叢集。
針對具有 Azure 中前端節點的叢集(Resource Manager 部署模型) - 從 HPC Pack 2016 開始,Azure Active Directory 應用程式中的憑證驗證會用於使用 Azure Resource Manager 自動成長和縮小部署的叢集 VM。 設定憑證,如下所示:
叢集部署之後,請透過遠端桌面連線到一個前端節點。
將憑證 (具有私鑰的 PFX 格式) 上傳至每個前端節點,並安裝至 Cert:\LocalMachine\My 和 Cert:\LocalMachine\Root。
以系統管理員身分啟動 Azure PowerShell,並在一個前端節點上執行下列命令:
cd $env:CCP_HOME\bin Connect-AzureRmAccount
如果您的帳戶位於多個 Azure Active Directory 租使用者或 Azure 訂用帳戶中,您可以執行下列命令來選取正確的租使用者和訂用帳戶:
Connect-AzureRmAccount -TenantId <TenantId> -SubscriptionId <subscriptionId>
執行下列命令以檢視目前選取的租用戶和訂用帳戶:
Get-AzureRMContext
- 執行下列指令碼
.\ConfigARMAutoGrowShrinkCert.ps1 -DisplayName “YourHpcPackAppName” -HomePage "https://YourHpcPackAppHomePage" -IdentifierUri "https://YourHpcPackAppUri" -CertificateThumbprint "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -TenantId xxxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxxxx
哪裡
DisplayName - Azure 活動應用程式顯示名稱。 如果應用程式不存在,則會在 Azure Active Directory 中建立。
HomePage - 應用程式的首頁。 您可以設定虛擬 URL,如上述範例所示。
IdentifierUri - 應用程式的識別碼。 您可以設定虛擬 URL,如上述範例所示。
CertificateThumbprint - 您在步驟 1 中前端節點上安裝的憑證指紋。
TenantId - Azure Active Directory 的租戶 ID。 您可以從 Azure Active Directory 入口網站 [屬性] 頁面取得租使用者識別碼。
如需 ConfigARMAutoGrowShrinkCert.ps1的詳細資訊,請執行
Get-Help .\ConfigARMAutoGrowShrinkCert.ps1 -Detailed
。針對具有 Azure 中前端節點的叢集(傳統部署模型) - 如果您使用 HPC Pack IaaS 部署腳本在傳統部署模型中建立叢集,請在叢集組態檔中設定 AutoGrowShrink 選項,以啟用 AutoGrowShrink 叢集屬性。 如需詳細資訊,請參閱隨附於 腳本下載的文件。
或者,使用下一節所述的 HPC PowerShell 命令,在部署叢集之後,啟用 AutoGrowShrink 叢集屬性。 若要為此做好準備,請先完成下列步驟:
在前端節點上和 Azure 訂用帳戶中設定 Azure 管理憑證。 針對測試部署,您可以使用 HPC Pack 安裝在前端節點上的預設Microsoft HPC Azure 自我簽署憑證,然後將該憑證上傳至您的 Azure 訂用帳戶。 如需選項和步驟,請參閱 TechNet 連結庫指引。
在前端節點上執行 regedit,移至 HKLM\SOFTWARE\Micorsoft\HPC\IaasInfo,然後新增字符串值。 將 [值名稱] 設定為 “ThumbPrint”,並將 [值] 數據設定為步驟 1 中憑證的指紋。
用來設定 AutoGrowShrink 屬性的 HPC PowerShell 命令
以下是 HPC PowerShell 命令範例,可設定 AutoGrowShrink,並使用其他參數調整其行為。 如需完整的設定清單,請參閱本文稍後的 AutoGrowShrink 參數。
若要執行這些命令,請以系統管理員身分在叢集前端節點上啟動 HPC PowerShell。
啟用 AutoGrowShrink 屬性
Set-HpcClusterProperty –EnableGrowShrink 1
停用 AutoGrowShrink (自動擴展縮小)屬性
Set-HpcClusterProperty –EnableGrowShrink 0
變更以分鐘為單位的成長間隔
Set-HpcClusterProperty –GrowInterval <interval>
若要以分鐘為單位變更壓縮間隔,
Set-HpcClusterProperty –ShrinkInterval <interval>
檢視 AutoGrowShrink 的目前組態
Get-HpcClusterProperty –AutoGrowShrink
從 AutoGrowShrink 排除節點群組
Set-HpcClusterProperty –ExcludeNodeGroups <group1,group2,group3>
備註
從 HPC Pack 2016 開始支援此參數
AutoGrowShrink 參數
以下是您可以使用 Set-HpcClusterProperty 命令修改的 AutoGrowShrink 參數。
EnableGrowShrink - 切換以啟用或停用 自動增減 屬性。
ParamSweepTasksPerCore - 增加一個核心所需的參數掃掠工作數目。 預設值是為每個工作增加一個核心。
備註
HPC Pack QFE KB3134307 變更 ParamSweepTasksPerCore 為 TasksPerResourceUnit。 它是基於作業資源類型,可以是節點、插槽或核心。
GrowThreshold - 佇列工作的臨界值,以觸發自動成長。 默認值為 1,這表示如果有 1 個以上的工作處於佇列狀態,則會自動增加節點。
GrowInterval - 以分鐘為單位觸發自動成長的間隔。 默認間隔為 5 分鐘。
ShrinkInterval - 觸發自動壓縮的間隔以分鐘計算。 默認間隔為5分鐘。|
ShrinkIdleTimes - 要壓縮的連續檢查數目,以指出節點處於閑置狀態。 預設值為 3 次。 例如,如果 ShrinkInterval 為 5 分鐘,HPC Pack 會每隔 5 分鐘檢查節點是否閒置一次。 如果節點在 3 次連續檢查之後處於閑置狀態(15 分鐘),則 HPC Pack 會壓縮該節點。
ExtraNodesGrowRatio - 額外增加的 MPI 作業節點百分比。 默認值為 1,這表示 HPC Pack 會針對 MPI 作業增加節點 1%。
GrowByMin - 切換以指出自動成長原則是否以作業所需的最低資源為基礎。 默認值為 false,這表示 HPC Pack 會根據作業所需的最大資源來增加作業的節點。
SoaJobGrowThreshold - 傳入 SOA 要求的臨界值,以觸發自動成長程式。 預設值為 50000。
備註
從 HPC Pack 2012 R2 Update 3 開始支援此參數。
SoaRequestsPerCore -Number 傳入 SOA 要求,以增加一個核心。 預設值為 20000。
備註
從 HPC Pack 2012 R2 Update 3 開始支援此參數。
ExcludeNodeGroups – 指定節點群組中的節點不會自動成長和縮小。
備註
從 HPC Pack 2016 開始,支援此參數。
MPI 範例
根據預設,HPC Pack 會為 MPI 作業增加 1% 個額外的節點(ExtraNodesGrowRatio 設為 1)。 原因是 MPI 可能需要多個節點,而且作業只能在所有節點就緒時執行。 當 Azure 啟動節點時,有時候一個節點可能需要比其他節點更多的時間來啟動,導致其他節點在等候該節點準備就緒時處於閑置狀態。 藉由增加額外的節點,HPC Pack 可減少此資源的等候時間,並可能節省成本。 若要增加 MPI 作業的額外節點百分比(例如,至 10%),請執行類似的命令
Set-HpcClusterProperty -ExtraNodesGrowRatio 10
SOA 範例
根據預設,SoaJobGrowThreshold 會設定為 50000,且 SoaRequestsPerCore 設為 20000。 如果您提交一個包含 70000 個請求的 SOA 作業,則會有一個排入佇列的任務,且進入的請求數量為 70000。 在此情況下,HPC Pack 會針對已排入佇列的工作增加 1 個核心,而針對新進要求,會增加 (70000 - 50000)/20000 = 1 個核心,因此此 SOA 作業總共成長 2 個核心。
執行 AzureAutoGrowShrink.ps1 文稿
先決條件
HPC Pack 2012 R2 Update 1 或更新版本的叢集 - AzureAutoGrowShrink.ps1 腳本會安裝在 %CCP_HOME%bin 資料夾中。 叢集前端節點可以部署在內部部署或 Azure VM 中。 請參閱 使用 HPC Pack 設定混合式叢集,以開始使用內部部署前端節點和 Azure「高載」節點。 請參閱 HPC Pack IaaS 部署文稿,以在 Azure VM 中快速部署 HPC Pack 叢集,或使用 Azure 快速入門範本。
Azure PowerShell 1.4.0 - 腳本目前取決於此特定版本的 Azure PowerShell。
針對具有 Azure 高載節點的叢集 - 在已安裝 HPC Pack 的用戶端電腦或前端節點上執行腳本。 如果在用戶端電腦上執行,請確定您將變數設定為$env:CCP_SCHEDULER指向前端節點。 Azure「突增」節點必須新增至叢集,但它們可能處於 Not-Deployed 狀態。
針對部署在 Azure VM 中的叢集(Resource Manager 部署模型) - 針對部署在 Resource Manager 部署模型中的 Azure VM 叢集,腳本支援兩種方法進行 Azure 驗證:每次登入 Azure 帳戶以執行腳本(執行
Connect-AzureRmAccount
,或設定服務主體以使用憑證進行驗證。 HPC Pack 提供腳本 ConfigARMAutoGrowShrinkCert.ps,以使用憑證建立服務主體。 腳本會建立 Azure Active Directory (Azure AD) 應用程式和服務主體,並將參與者角色指派給服務主體。 若要執行腳本,請以系統管理員身分啟動 Azure PowerShell,然後執行下列命令:cd $env:CCP_HOME\bin Connect-AzureRmAccount .\ConfigARMAutoGrowShrinkCert.ps1 -DisplayName “YourHpcPackAppName” -HomePage "https://YourHpcPackAppHomePage" -IdentifierUri "https://YourHpcPackAppUri" -PfxFile "d:\yourcertificate.pfx"
如需 ConfigARMAutoGrowShrinkCert.ps1的詳細資訊,請執行
Get-Help .\ConfigARMAutoGrowShrinkCert.ps1 -Detailed
。在 Azure VM 中部署的叢集(傳統部署模型) - 在前端節點 VM 上執行腳本,因為它取決於該處安裝的 Start-HpcIaaSNode.ps1 和 Stop-HpcIaaSNode.ps1 腳本。 這些腳本還需要 Azure 管理憑證或發佈配置檔(請參閱 在 Azure中管理 HPC Pack 叢集中的計算節點)。 請確定您所需的所有計算節點 VM 都已新增至叢集。 它們可能處於 [已停止] 狀態。
語法
AzureAutoGrowShrink.ps1 [-NodeTemplates <String[]>] [-JobTemplates <String[]>] [-NodeType <String>]
-NumOfActiveQueuedTasksPerNodeToGrow <Single> [-NumOfActiveQueuedTasksToGrowThreshold <Int32>]
[-NumOfInitialNodesToGrow <Int32>] [-GrowCheckIntervalMins <Int32>] [-ShrinkCheckIntervalMins <Int32>]
[-ShrinkCheckIdleTimes <Int32>] [-ExtraNodesGrowRatio <Int32>] [-ArgFile <String>] [-LogFilePrefix <String>]
[<CommonParameters>]
AzureAutoGrowShrink.ps1 [-NodeTemplates <String[]>] [-JobTemplates <String[]>] [-NodeType <String>]
-NumOfQueuedJobsPerNodeToGrow <Single> [-NumOfQueuedJobsToGrowThreshold <Int32>] [-NumOfInitialNodesToGrow
<Int32>] [-GrowCheckIntervalMins <Int32>] [-ShrinkCheckIntervalMins <Int32>] [-ShrinkCheckIdleTimes <Int32>]
[-ExtraNodesGrowRatio <Int32>] [-ArgFile <String>] [-LogFilePrefix <String>] [<CommonParameters>]
AzureAutoGrowShrink.ps1 -UseLastConfigurations [-ArgFile <String>] [-LogFilePrefix <String>] [<CommonParameters>]
參數
NodeTemplates - 節點範本的名稱,以定義要成長和縮小之節點的範圍。 如果未指定 (預設值為 @()),則當 NodeType 具有 AzureNodes 的值時,AzureNodes 節點群組中的所有節點都在範圍內,ComputeNodes 節點群組中的所有節點都位於 NodeType 具有 ComputeNodes 值的範圍中。
JobTemplates - 用來定義節點成長範圍的工作範本名稱。
NodeType - 要成長和縮小的節點類型。 支援的值為:
- AzureNodes – 適用於內部部署或 Azure IaaS 叢集中的 Azure PaaS(高載)節點。
- ComputeNodes - 僅適用於 Azure IaaS 叢集中的計算節點 VM。
NumOfQueuedJobsPerNodeToGrow - 成長一個節點所需的佇列作業數目。
NumOfQueuedJobsToGrowThreshold - 啟動成長程式的佇列作業閾值數目。
NumOfActiveQueuedTasksPerNodeToGrow - 增長一個節點所需的活躍佇列任務數量。 如果 NumOfQueuedJobsPerNodeToGrow 指定值大於 0,則會忽略此參數。
NumOfActiveQueuedTasksToGrowThreshold - 啟動增長過程的使用中佇列工作數量閾值。
NumOfInitialNodesToGrow - 如果範圍內所有節點均為 未部署 或 已停止(已解除分配),則應成長的初始節點數目的最小值。
GrowCheckIntervalMins - 進行成長檢查的間隔,以分鐘為單位。
ShrinkCheckIntervalMins - 用於縮小檢查的間隔時間,以分鐘為單位。
ShrinkCheckIdleTimes - 用於識別節點閑置狀態的連續壓縮檢查次數(由ShrinkCheckIntervalMins分隔)。
UseLastConfigurations - 儲存在自變數檔案中的先前組態。
ArgFile- 用來儲存及更新組態以執行腳本的自變數檔名。
LogFilePrefix - 記錄檔的前置詞名稱。 您可以指定路徑。 根據預設,記錄檔會寫入目前的工作目錄。
範例 1
下列範例會設定使用預設 AzureNode 範本部署的 Azure 高載節點,以自動成長和縮小。 如果所有節點一開始都處於 未部署 狀態,則會啟動至少 3 個節點。 如果佇列作業數目超過 8,腳本會啟動節點,直到其數目超過佇列作業與 NumOfQueuedJobsPerNodeToGrow的比例。 如果發現節點在連續 3 次閑置中處於閑置狀態,則會停止。
.\AzureAutoGrowShrink.ps1 -NodeTemplates @('Default AzureNode
Template') -NodeType AzureNodes -NumOfQueuedJobsPerNodeToGrow 5
-NumOfQueuedJobsToGrowThreshold 8 -NumOfInitialNodesToGrow 3
-GrowCheckIntervalMins 1 -ShrinkCheckIntervalMins 1 -ShrinkCheckIdleTimes 3
範例 2
下列範例會設定使用預設 ComputeNode 範本部署的 Azure 計算節點 VM,以自動成長和縮減。 默認作業範本所設定的作業會定義叢集上工作負載的範圍。 如果所有節點一開始停止,至少會啟動5個節點。 如果作用中佇列工作的數目超過 15,腳本會啟動節點,直到其數目超過使用中佇列工作與 NumOfActiveQueuedTasksPerNodeToGrow的比例。 如果發現節點在10個連續閑置時間處於閑置狀態,則會停止。
.\AzureAutoGrowShrink.ps1 -NodeTemplates 'Default ComputeNode Template' -JobTemplates 'Default' -NodeType ComputeNodes -NumOfActiveQueuedTasksPerNodeToGrow 10 -NumOfActiveQueuedTasksToGrowThreshold 15 -NumOfInitialNodesToGrow 5 -GrowCheckIntervalMins 1 -ShrinkCheckIntervalMins 1 -ShrinkCheckIdleTimes 10 -ArgFile 'IaaSVMComputeNodes_Arg.xml' -LogFilePrefix 'IaaSVMComputeNodes_log'