共用方式為


根據叢集工作負載,自動增加和壓縮 Azure 中的 HPC Pack 叢集資源

如果您在 HPC Pack 叢集中部署 Azure「高載」節點(Windows 和 Linux),或在 Azure VM 中建立 HPC Pack 叢集,您可能會想要根據叢集上的工作負載自動成長或壓縮叢集資源,例如節點或核心。 以這種方式調整叢集資源可讓您更有效率地使用 Azure 資源,並控制其成本。

使用 HPC Pack 2016 或更新版本,您可以自動成長和壓縮執行 Azure 雲端的 HPC Pack 計算節點,包括 Windows PaaS 節點、Azure IaaS VM 節點、Azure 批次集區節點和 Azure VM 擴展集節點。 但是對於不同類型的節點,自動成長壓縮邏輯不同。 以下是摘要:

節點類型 如何啟用 先決條件 如何監視
Azure PaaS 節點 PowerShell Cmdlet
Set-HpcClusterProperty -EnableGrowShrink 1
1.Azure PaaS 節點的節點範本
2.叢集中新增的節點
ClusterManager 底下的「自動成長壓縮報告」--> 資源管理 --> 作業 --> AzureOperations
Azure IaaS 節點 PowerShell Cmdlet
Set-HpcClusterProperty -EnableGrowShrink 1
1.已設定 Azure 服務主體
2.叢集中新增的節點
ClusterManager 底下的「自動成長壓縮報告」--> 資源管理 --> 作業 --> AzureOperations
Azure VM 擴展集節點 PowerShell Cmdlet
Set-HpcClusterProperty -EnableGrowShrink 1
1.已設定 Azure 服務主體
2.叢集中新增的節點
ClusterManager 底下的「自動成長壓縮報告」--> 資源管理 --> 作業 --> AzureOperations
Azure Batch 集區 Azure Batch 集區節點範本 必須啟動 Azure Batch 集區 azure 入口網站或 azure 批次總管

注意事項

此功能只會藉由啟動或停止 Azure 中的現有 HPC 計算節點來自動成長或縮減 Azure 資源,它不會自動建立新的 HPC 計算節點或刪除現有的節點。

HPC Pack 2016 Update 2 及更新版本支援 Azure VM 擴展集節點的自動調整。

自動調整 Azure IaaS VM 節點或 Azure VM 擴展集節點

若要在 HPC Pack 叢集中自動增加或縮小 Azure IaaS VM 節點或 Azure VM 擴展集節點,您必須使用憑證設定 Azure 服務主體來管理您的 Azure 訂用帳戶。 您可以使用 PowerShell 命令或使用叢集管理員 GUI 進行設定。

設定 Azure 服務主體之後,您可以使用 HPC Pack AutoGrowShrink Cmdlet啟用自動成長壓縮。

注意事項

根據預設,HPC Pack 所建立的 Azure 服務主體會獲得訂用帳戶層級 參與者 角色,您可以參考 HPC Pack 叢集中 Azure 資源的 存取控制,根據您的使用者案例手動重新設定 Azure 服務主體的訪問許可權。

使用 powershell 設定 Azure 服務主體

  1. 叢集部署之後,請透過遠端桌面連線到一個前端節點。

  2. 將憑證 (具有私鑰的 PFX 格式) 上傳至每個前端節點,並安裝至 Cert:\LocalMachine\My。 此憑證是用來建立 Azure 服務主體。 如果您沒有憑證,您可以先建立自我簽署憑證。

  3. 以系統管理員身分啟動 Azure PowerShell,並在一個前端節點上執行下列命令:

    cd $env:CCP_HOME\bin
    
    Connect-AzureRmAccount
    

    如果您的帳戶位於多個 Azure Active Directory 租使用者或 Azure 訂用帳戶中,您可以執行下列命令來選取正確的租使用者和訂用帳戶:

    Connect-AzureRmAccount -TenantId <TenantId> -SubscriptionId <subscriptionId>
    

    執行下列命令以檢視目前選取的租用戶和訂用帳戶:

    Get-AzureRMContext
    
  4. 執行下列腳本

    .\ConfigARMAutoGrowShrinkCert.ps1 -DisplayName "YourHpcPackAppName" -HomePage "https://YourHpcPackAppHomePage" -IdentifierUri "https://YourHpcPackAppUri" -CertificateThumbprint "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -TenantId xxxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxxxx
    

    where

    DisplayName - Azure Active Application 顯示名稱。 如果應用程式不存在,則會在 Azure Active Directory 中建立。

    HomePage - 應用程式的首頁。 您可以設定虛擬 URL,如上述範例所示。

    IdentifierUri - 應用程式的識別碼。 您可以設定虛擬 URL,如上述範例所示。

    CertificateThumbprint - 您在步驟 2 中前端節點上安裝的憑證指紋。

    TenantId - Azure Active Directory 的租使用者標識符。 您可以從 Azure Active Directory 入口網站 [屬性] 頁面取得租使用者識別碼。

    如需 ConfigARMAutoGrowShrinkCert.ps1的詳細資訊,請執行 Get-Help .\ConfigARMAutoGrowShrinkCert.ps1 -Detailed

  5. 設定之後,您可以透過 HPC Powershell 命令檢查登錄機碼設定(包括 ApplicationId、TenantId、Thumbprint)

    Get-HpcClusterRegistry
    

使用叢集管理員 GUI 設定 Azure 服務主體

  1. 在一個前端節點上開啟 HPC Pack 叢集管理員。

  2. Goto 組態 -->部署 To-do List 頁面。

  3. 點選 「設定 Azure」 部署群組態】

  4. 逐步執行此精靈,將協助您設定 Azure 服務主體Azure 資源群組VNet,以及要用於叢集通訊的憑證。 精靈會如下所示執行:

    Azure 部署設定精靈

驗證組態

成功設定 Azure 服務主體之後,您就能夠透過 HPC Pack 啟動和停止 Azure IaaS VM 節點。

如果您執行 HPC Pack 2016 Update 2 或更新版本、Azure IaaS VM 節點或 Azure VM 擴展集節點應該已位於 AzureIaaSNodes 節點群組中,則可以從 HPC Cluster Manager GUI執行 啟動停止 動作。 執行動作時,您會看到 分派停止 Azure VM 作業,或 在 [作業] 底下啟動 Azure 虛擬機 作業 -->AzureOperations 檢視。

如果您的 VM 手動安裝於 azure 上的 HPC Pack Update 1 或舊版,則它們預設不在 azure AzureIaaSNodes 節點群組中,因為它們被視為內部部署節點。 在此情況下,您必須針對它們執行 停止 動作,讓服務將它們放入 AzureIaaSNodes 節點群組 中,然後服務能夠成長和縮小它們。

如果您還沒有任何 Azure IaaS VM 節點,您可以遵循 新增 IaaS 節點 來建立 Azure IaaS 節點範本,並將 IaaS VM 節點新增至叢集。

自動調整 Azure PaaS 節點

啟用 HPC Pack 叢集自動縮小 Azure Windows PaaS 節點之前,您應該先檢查您的 Azure 節點範本,確定 Azure PaaS 節點已設定為手動啟動和停止,而不是以時間排程為基礎。

HPC Pack 自動擴大壓縮服務永遠不會將新資源新增至叢集。 因此,在建立 azure PaaS 節點範本之後,您必須先將節點新增至叢集:

  1. 啟動 HPC Cluster Manager,移至 [資源管理] 窗格
  2. 從動作窗格中按兩下 [新增節點... 動作],從精靈中選擇 [新增 Windows Azure 節點]
  3. 逐步執行精靈,按兩下 [完成],就會將數個節點新增至叢集中,未部署的 狀態
  4. 使用 HPC Pack AutoGrowShrink Cmdlet 啟用自動成長縮小

注意事項

當 HPC Pack 為已排入佇列的工作增加資源時,最多會增加您在步驟 3 中新增的節點數目。 它永遠不會將更多資源新增至叢集。 因此,您可以檢查訂用帳戶容量,並將適當的節點數目新增至叢集。

自動調整 Azure Batch 集區

根據預設,當您在 HPC Pack 中建立 Azure 批次集區範本時,我們會為集區定義預設的自動調整公式。 但您也可以參考此檔 來定義您自己的縮放公式和批次節點範本中的更新。

用來設定叢集自動成長和壓縮屬性的 HPC PowerShell 命令

以下是 HPC PowerShell 命令範例,可設定 AutoGrowShrink,並使用其他參數調整其行為。 如需完整的設定清單,請參閱本文稍後 AutoGrowShrink 參數。

若要執行這些命令,請以系統管理員身分在叢集前端節點上啟動 HPC PowerShell。

若要檢視 AutoGrowShrink 目前的設定

Get-HpcClusterProperty –AutoGrowShrink

啟用 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 - 切換以啟用或停用 autoGrowShrink 属性

  • 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 個核心。