Automatické zvětšování a zmenšování prostředků clusteru HPC Pack v Azure podle zatížení clusteru
Důležité
Klasické virtuální počítače budou 1. března 2023 vyřazeny z provozu.
Pokud používáte prostředky IaaS z ASM, dokončete migraci do 1. března 2023. Doporučujeme provést přepnutí dříve, abyste mohli využít řadu vylepšení funkcí v Azure Resource Manager.
Další informace najdete v tématu Migrace prostředků IaaS do Azure Resource Manager do 1. března 2023.
Pokud nasadíte "shlukové" uzly Azure v clusteru HPC Pack nebo vytvoříte cluster HPC Pack na virtuálních počítačech Azure, můžete chtít způsob, jak automaticky zvětšovat nebo zmenšovat prostředky clusteru, jako jsou uzly nebo jádra, podle úloh v clusteru. Škálování prostředků clusteru tímto způsobem vám umožní efektivněji využívat prostředky Azure a řídit jejich náklady.
Tento článek ukazuje dva způsoby, jak sada HPC Pack poskytuje automatické škálování výpočetních prostředků:
Vlastnost clusteru HPC Pack AutoGrowShrink
Skript AzureAutoGrowShrink.ps1 PROSTŘEDÍ HPC PowerShell
Poznámka
Azure má dva různé modely nasazení pro vytváření prostředků a práci s Resource Manager a classic. Tento článek popisuje použití obou modelů, ale Microsoft doporučuje, aby většina nových nasazení používala model Resource Manager.
V současné době můžete automaticky zvětšovat a zmenšovat pouze výpočetní uzly sady HPC Pack, na Windows Server.
Nastavení vlastnosti clusteru AutoGrowShrink
Požadavky
Cluster HPC Pack 2012 R2 Update 2 nebo novější – Hlavní uzel clusteru je možné nasadit místně nebo na virtuální počítač Azure. Pokud chcete začít s místním hlavní uzlem a "shlukem" uzlů Azure, podívejte se na nastavení hybridního clusteru pomocí sady HPC Pack. Pokud chcete rychle nasadit cluster HPC Pack na virtuální počítače Azure, podívejte se na skript nasazení IaaS sady HPC Pack.
Pro cluster s hlavní uzlem v Azure (model nasazení Resource Manager) – Od verze HPC Pack 2016 se ověřování certifikátů v aplikaci Azure Active Directory používá k automatickému zmenšování a zmenšování virtuálních počítače clusteru nasazených pomocí Azure Resource Manager. Certifikát nakonfigurujte následujícím způsobem:
Po nasazení clusteru se pomocí Vzdálené plochy připojte k jednomu hlavnímu uzlu.
Upload každý hlavní uzel nainstalujte certifikát (ve formátu PFX s privátním klíčem) a nainstalujte ho do složky Cert:\LocalMachine\My a Cert:\LocalMachine\Root.
Spusťte Azure PowerShell jako správce a na jednom uzlu spusťte následující příkazy:
cd $env:CCP_HOME\bin Connect-AzureRmAccount
Pokud je váš účet ve více než jednom Azure Active Directory nebo předplatném Azure, můžete spuštěním následujícího příkazu vybrat správného tenanta a předplatné:
Connect-AzureRmAccount -TenantId <TenantId> -SubscriptionId <subscriptionId>
Spuštěním následujícího příkazu zobrazte aktuálně vybraného tenanta a předplatného:
Get-AzureRMContext
- Spusťte následující skript.
.\ConfigARMAutoGrowShrinkCert.ps1 -DisplayName “YourHpcPackAppName” -HomePage "https://YourHpcPackAppHomePage" -IdentifierUri "https://YourHpcPackAppUri" -CertificateThumbprint "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -TenantId xxxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxxxx
kde:
DisplayName – zobrazovaný název aplikace Azure Active. Pokud aplikace neexistuje, vytvoří se v Azure Active Directory.
HomePage – domovská stránka aplikace. Můžete nakonfigurovat fiktivní adresu URL, jako v předchozím příkladu.
IdentifierUri – identifikátor aplikace. Můžete nakonfigurovat fiktivní adresu URL, jako v předchozím příkladu.
CertificateThumbprint – kryptografický otisk certifikátu, který jste nainstalovali na hlavní uzel v kroku 1.
TenantId – ID tenanta vašeho Azure Active Directory. ID tenanta můžete získat na stránce Azure Active Directory portálu.
Další podrobnosti o nástrojiConfigARMAutoGrowShrinkCert.ps1spusťte příkaz
Get-Help .\ConfigARMAutoGrowShrinkCert.ps1 -Detailed
.Pro cluster s hlavní uzlem v Azure (model nasazení Classic) – Pokud k vytvoření clusteru v modelu nasazení Classic používáte skript nasazení IaaS sady HPC Pack, povolte vlastnost clusteru AutoGrowShrink nastavením možnosti AutoGrowShrink v konfiguračním souboru clusteru. Podrobnosti najdete v dokumentaci k stažení skriptu.
Případně můžete po nasazení clusteru povolit vlastnost clusteru AutoGrowShrink pomocí příkazů prostředí HPC PowerShell popsaných v následující části. Pokud se na to chcete připravit, nejprve proveďte následující kroky:
Nakonfigurujte certifikát pro správu Azure na hlavní uzel a v předplatném Azure. Pro testovací nasazení můžete použít výchozí certifikát podepsaný svým držitelem v prostředí Microsoft HPC Azure, který sada HPC Pack nainstaluje na hlavní uzel, a pak tento certifikát nahrát do vašeho předplatného Azure. Možnosti a kroky najdete v pokynech ke knihovně TechNet.
Na hlavní uzlu spusťte příkaz regedit , přejděte na HKLM\SOFTWARE\Micorsoft\HPC\IaasInfo a přidejte hodnotu řetězce. Nastavte Název hodnoty na "ThumbPrint" a Údaj hodnoty na kryptografický otisk certifikátu v kroku 1.
Příkazy prostředí HPC PowerShell pro nastavení vlastnosti AutoGrowShrink
Níže jsou uvedené ukázkové příkazy prostředí HPC PowerShell, které nastaví AutoGrowShrink a vyladí jeho chování o další parametry. Úplný seznam nastavení najdete v části Parametry AutoGrowShrink dále v tomto článku.
Pokud chcete tyto příkazy spustit, spusťte prostředí HPC PowerShell v hlavní uzlu clusteru jako správce.
Povolení vlastnosti AutoGrowShrink
Set-HpcClusterProperty –EnableGrowShrink 1
Zakázání vlastnosti AutoGrowShrink
Set-HpcClusterProperty –EnableGrowShrink 0
Změna intervalu růstu v minutách
Set-HpcClusterProperty –GrowInterval <interval>
Změna intervalu zmenšení v minutách
Set-HpcClusterProperty –ShrinkInterval <interval>
Zobrazení aktuální konfigurace Nástroje AutoGrowShrink
Get-HpcClusterProperty –AutoGrowShrink
Vyloučení skupin uzlů z uzlu AutoGrowShrink
Set-HpcClusterProperty –ExcludeNodeGroups <group1,group2,group3>
Poznámka
Tento parametr se podporuje od verze HPC Pack 2016.
Parametry AutoGrowShrink
Níže jsou uvedené parametry AutoGrowShrink, které můžete upravit pomocí příkazu Set-HpcClusterProperty .
EnableGrowShrink – Přepnutím povolíte nebo zakážete vlastnost AutoGrowShrink .
ParamSweepTasksPerCore – počet úkolů parametrického úklidu, které se zvětšují o jedno jádro. Ve výchozím nastavení se na každý úkol zvětšuje o jedno jádro.
Poznámka
Sada HPC Pack QFE KB3134307 změní parametr ParamSweepTasksPerCorena TasksPerResourceUnit. Je založená na typu prostředku úlohy a může to být uzel, soket nebo jádro.
GrowThreshold – Prahová hodnota úloh zařazených do fronty, které aktivují automatický růst. Výchozí hodnota je 1, což znamená, že pokud je ve stavu zařazených do fronty 1 nebo více úkolů, uzly se automaticky zvětšují.
GrowInterval – interval v minutách pro aktivaci automatického růstu. Výchozí interval je 5 minut.
ShrinkInterval – interval v minutách pro aktivaci automatického zmenšování. Výchozí interval je 5 minut.|
ShrinkIdleTimes – počet průběžných kontrol, které se zmenší, aby značí, že uzly jsou nečinné. Výchozí hodnota je 3krát. Pokud je například shrinkInterval 5 minut , sada HPC Pack kontroluje, jestli je uzel nečinný každých 5 minut. Pokud jsou uzly ve stavu nečinnosti po 3 průběžných kontrolách (15 minut), sada HPC Pack tento uzel zmenší.
ExtraNodesGrowRatio – Další procento uzlů, které se zvětšují pro Message Passing Interface (MPI). Výchozí hodnota je 1, což znamená, že sada HPC Pack pro úlohy MPI zvětšuje uzly o 1 %.
GrowByMin – Přepínač určuje, jestli je zásada automatického zvětšování založená na minimálních návržích požadovaných pro úlohu. Výchozí hodnota je false, což znamená, že sada HPC Pack rozrůstá uzly pro úlohy na základě maximálního počtu prostředků požadovaných pro úlohy.
SoaJobGrowThreshold – Prahová hodnota příchozích požadavků SOA pro aktivaci automatického procesu růstu. Výchozí hodnota je 50000.
Poznámka
Tento parametr se podporuje od verze HPC Pack 2012 R2 Update 3.
SoaRequestsPerCore – počet příchozích požadavků SOA na růst o jedno jádro. Výchozí hodnota je 20000.
Poznámka
Tento parametr se podporuje od verze HPC Pack 2012 R2 Update 3.
ExcludeNodeGroups – uzly v zadaných skupinách uzlů se automaticky nezvětší a nezmenší.
Poznámka
Tento parametr se podporuje od verze HPC Pack 2016.
Příklad MPI
Ve výchozím nastavení roste sada HPC Pack o 1 % dalších uzlů pro úlohy MPI (ExtraNodesGrowRatio je nastavená na 1). Důvodem je to, že MPI může vyžadovat více uzlů a úloha se může spustit pouze v případě, že jsou všechny uzly připravené. Když Azure spouští uzly, může občas jeden uzel potřebovat více času ke spuštění než jiné, což způsobí, že ostatní uzly budou nečinné a čekají na to, až se tento uzel připraví. Díky rostoucímu množství dalších uzlů sada HPC Pack zkracuje dobu čekání na tento prostředek a potenciálně šetří náklady. Pokud chcete zvýšit procento dalších uzlů pro úlohy MPI (například na 10 %), spusťte příkaz podobný následujícímu:
Set-HpcClusterProperty -ExtraNodesGrowRatio 10
Příklad SOA
Ve výchozím nastavení je hodnota SoaJobGrowThreshold nastavená na 50000 a Hodnota SoaRequestsPerCore je nastavená na 20000. Pokud odešlete jednu úlohu SOA s 70000 požadavků, existuje jeden úkol zařazený do fronty a příchozí požadavky jsou 70000. V tomto případě sada HPC Pack roste o 1 jádro pro úkol zařazený do fronty a u příchozích požadavků roste (70000 – 50000)/20000 = 1 jádro, takže celkově se pro tuto úlohu SOA zvětšuje o 2 jádra.
Spuštění AzureAutoGrowShrink.ps1 skriptu
Požadavky
Cluster HPC Pack 2012 R2 Update 1 nebo novější – skript AzureAutoGrowShrink.ps1 je nainstalovaný ve složce %CCP_HOME%bin. Hlavní uzel clusteru je možné nasadit místně nebo na virtuální počítač Azure. Pokud chcete začít s místním hlavní uzlem a "shlukem" uzlů Azure, podívejte se na nastavení hybridního clusteru pomocí sady HPC Pack. Pokud chcete rychle nasadit cluster HPC Pack na virtuální počítače Azure nebo použít šablonu Azure pro rychlý start, podívejte se na skript nasazení IaaS sady HPC Pack.
Azure PowerShell 1.4.0 – Skript aktuálně závisí na této konkrétní verzi Azure PowerShell.
Pro cluster s uzly Azure burst – Spusťte skript na klientském počítači, na kterém je nainstalovaná sada HPC Pack, nebo na hlavní uzel. Pokud používáte klientský počítač, ujistěte se, že jste nastavili proměnnou $env:CCP_SCHEDULER tak, aby odkazla na hlavní uzel. Do clusteru je nutné přidat "shlukové" uzly Azure, ale mohou být ve Not-Deployed stavu.
Pro cluster nasazený na virtuálních počítači Azure (model nasazení Resource Manager) – Pro cluster virtuálních počítače Azure nasazených v modelu nasazení Resource Manager skript podporuje dvě metody ověřování Azure: přihlášení k účtu Azure, aby se skript spouštěl pokaždé (
Connect-AzureRmAccount
spuštěním nebo konfigurací instančního objektu pro ověření pomocí certifikátu). Sada HPC Pack poskytuje skript ConfigARMAutoGrowShrinkCert.ps k vytvoření objektu služby s certifikátem. Skript vytvoří aplikaci Azure Active Directory (Azure AD) a objekt služby a přiřadí k objektu služby roli Přispěvatel. Pokud chcete skript spustit, Azure PowerShell jako správce a spusťte následující příkazy:cd $env:CCP_HOME\bin Connect-AzureRmAccount .\ConfigARMAutoGrowShrinkCert.ps1 -DisplayName “YourHpcPackAppName” -HomePage "https://YourHpcPackAppHomePage" -IdentifierUri "https://YourHpcPackAppUri" -PfxFile "d:\yourcertificate.pfx"
Další podrobnosti o nástrojiConfigARMAutoGrowShrinkCert.ps1, spusťte příkaz
Get-Help .\ConfigARMAutoGrowShrinkCert.ps1 -Detailed
.Pro cluster nasazený ve virtuálních počítači Azure (model nasazení Classic) – Spusťte skript na virtuálním počítači s hlavní uzlem, protože závisí na skriptech Start-HpcIaaSNode.ps1 a Stop-HpcIaaSNode.ps1 , které jsou tam nainstalované. Tyto skripty navíc vyžadují certifikát pro správu Azure nebo soubor nastavení publikování (viz Správa výpočetních uzlů v clusteru HPC Pack v Azure). Ujistěte se, že všechny virtuální počítače výpočetních uzlů, které potřebujete, jsou už přidané do clusteru. Mohou být ve stavu Zastaveno.
Syntaxe
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>]
Parametry
NodeTemplates – názvy šablon uzlů, které definují obor pro uzly, které se mají zvětšovat a zmenšovat. Pokud není zadaný parametr (výchozí hodnota je @()), všechny uzly ve skupině uzlů AzureNodes jsou v oboru, pokud NodeType má hodnotu AzureNodes, a všechny uzly ve skupině uzlů ComputeNodes jsou v oboru, pokud NodeType má hodnotu ComputeNodes.
JobTemplates – názvy šablon úloh, které definují obor pro růst uzlů.
NodeType – typ uzlu, který se má zvětšovat a zmenšovat. Podporované hodnoty jsou:
- AzureNodes – pro uzly Azure PaaS (shlukové) v místním nebo clusteru Azure IaaS.
- ComputeNodes – pro virtuální počítače výpočetních uzlů pouze v clusteru Azure IaaS.
NumOfQueuedJobsPerNodeToGrow – počet úloh zařazených do fronty vyžadovaných k rozrůstání jednoho uzlu.
NumOfQueuedJobsToGrowThreshold – prahový počet úloh zařazených do fronty, které spustí proces růstu.
NumOfActiveQueuedTasksPerNodeToGrow – počet aktivních úloh zařazených do fronty vyžadovaných k rozrůstání jednoho uzlu. Pokud je zadaná hodnota NumOfQueuedJobsPerNodeToGrow s hodnotou větší než 0, bude tento parametr ignorován.
NumOfActiveQueuedTasksToGrowThreshold – prahový počet aktivních úloh zařazených do fronty, které spustí proces růstu.
NumOfInitialNodesToGrow – počáteční minimální počet uzlů, které se mají zvětšovat, pokud jsou všechny uzly v oboru nenasazované nebo zastavené (nepřidělené).
GrowCheckIntervalMins – interval v minutách mezi kontrolami, které se zvětšují.
ShrinkCheckIntervalMins – interval v minutách mezi kontrolami, které se zmenší.
ShrinkCheckIdleTimes – počet průběžných kontrol zmenšení (oddělených vlastností ShrinkCheckIntervalMins), které označují, že uzly jsou nečinné.
UseLastConfigurations – předchozí konfigurace uložené v souboru argumentů.
ArgFile – název souboru argumentu, který se používá k uložení a aktualizaci konfigurací pro spuštění skriptu.
LogFilePrefix – název předpony souboru protokolu. Můžete zadat cestu. Ve výchozím nastavení se protokol zapisuje do aktuálního pracovního adresáře.
Příklad 1
Následující příklad nakonfiguruje uzly Azure burst nasazené pomocí výchozí šablony AzureNode tak, aby se automaticky zvětšoval a zmenšoval. Pokud jsou všechny uzly na začátku ve stavu Nenasazované, alespoň 3 uzly se shodí. Pokud počet úloh zařazených do fronty překročí 8, skript spustí uzly, dokud jejich počet nepřekročí poměr úloh zařazených do fronty k NumOfQueuedJobsPerNodeToGrow. Pokud je uzel ve 3 po sobě jdoucích časech nečinnosti nečinný, zastaví se.
.\AzureAutoGrowShrink.ps1 -NodeTemplates @('Default AzureNode
Template') -NodeType AzureNodes -NumOfQueuedJobsPerNodeToGrow 5
-NumOfQueuedJobsToGrowThreshold 8 -NumOfInitialNodesToGrow 3
-GrowCheckIntervalMins 1 -ShrinkCheckIntervalMins 1 -ShrinkCheckIdleTimes 3
Příklad 2
Následující příklad nakonfiguruje virtuální počítače výpočetních uzlů Azure nasazené s výchozí šablonou ComputeNode tak, aby se automaticky zvětšoval a zmenšoval. Úlohy nakonfigurované šablonou výchozí úlohy definují obor úlohy v clusteru. Pokud jsou všechny uzly zpočátku zastaveny, alespoň 5 uzlů se s jeho pomocí shodí. Pokud počet aktivních úkolů zařazených do fronty překročí 15, skript spustí uzly, dokud jejich počet nepřekročí poměr aktivních úkolů zařazených do fronty na NumOfActiveQueuedTasksPerNodeToGrow. Pokud je uzel v 10 po sobě jdoucích dobách nečinnosti nečinný, zastaví se.
.\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'