Automatyczne powiększanie i zmniejszanie zasobów klastra HPC Pack na platformie Azure zgodnie z obciążeniem klastra
Ważne
Klasyczne maszyny wirtualne zostaną wycofane 1 marca 2023 r.
Jeśli używasz zasobów IaaS z usługi ASM, ukończ migrację do 1 marca 2023 r. Zachęcamy do skorzystania z tego przełącznika wcześniej, aby skorzystać z wielu ulepszeń funkcji w usłudze Azure Resource Manager.
Aby uzyskać więcej informacji, zobacz Migrowanie zasobów IaaS do usługi Azure Resource Manager do 1 marca 2023 r.
W przypadku wdrażania węzłów "z serii" platformy Azure w klastrze pakietu HPC Pack lub tworzenia klastra pakietu HPC Pack na platformie Azure możesz chcieć automatycznie powiększać lub zmniejszać zasoby klastra, takie jak węzły lub rdzenie, zgodnie z obciążeniem w klastrze. Skalowanie zasobów klastra w ten sposób umożliwia bardziej wydajne korzystanie z zasobów platformy Azure i kontrolowanie ich kosztów.
W tym artykule przedstawiono dwa sposoby skalowania automatycznego zasobów obliczeniowych przez pakiet HPC Pack:
Właściwość klastra HPC Pack AutoGrowShrink
Skrypt programu PowerShell AzureAutoGrowShrink.ps1HPC
Uwaga
Platforma Azure ma dwa różne modele wdrażania związane z tworzeniem zasobów i pracą z nimi: Resource Manager i model klasyczny. W tym artykule przedstawiono oba modele, ale firma Microsoft zaleca przeprowadzanie większości nowych wdrożeń z zastosowaniem modelu wdrażania przy użyciu usługi Azure Resource Manager.
Obecnie można automatycznie powiększać i zmniejszać tylko węzły obliczeniowe pakietu HPC Pack z uruchomionym systemem operacyjnym Windows Server.
Ustawianie właściwości klastra AutoGrowShrink
Wymagania wstępne
Klaster HPC Pack 2012 R2 Update 2 lub nowszy — główny węzeł klastra można wdrożyć lokalnie lub na maszynie wirtualnej platformy Azure. Zobacz Set up a hybrid cluster with HPC Pack (Konfigurowanie klastra hybrydowego za pomocą pakietu HPC Pack), aby rozpocząć pracę z lokalnym węzłem głównym i węzłami platformy Azure "z serii". Zobacz skrypt wdrażania IaaS pakietu HPC Pack , aby szybko wdrożyć klaster HPC Pack na maszynach wirtualnych platformy Azure.
W przypadku klastra z węzłem głównym na platformie Azure (model wdrażania usługi Resource Manager) — począwszy od pakietu HPC Pack 2016, uwierzytelnianie certyfikatu w aplikacji Azure Active Directory jest używane do automatycznego powiększania i zmniejszania maszyn wirtualnych klastra wdrożonych przy użyciu usługi Azure Resource Manager. Skonfiguruj certyfikat w następujący sposób:
Po wdrożeniu klastra połącz się przez Pulpit zdalny z jednym węzłem głównym.
Upload certyfikat (format PFX z kluczem prywatnym) do każdego węzła głównego i zainstaluj go w folderze Cert:\LocalMachine\My i Cert:\LocalMachine\Root.
Uruchom Azure PowerShell jako administrator i uruchom następujące polecenia w jednym węźle głównym:
cd $env:CCP_HOME\bin Connect-AzureRmAccount
Jeśli Twoje konto znajduje się w więcej niż Azure Active Directory dzierżawie lub subskrypcji platformy Azure, możesz uruchomić następujące polecenie, aby wybrać prawidłową dzierżawę i subskrypcję:
Connect-AzureRmAccount -TenantId <TenantId> -SubscriptionId <subscriptionId>
Uruchom następujące polecenie, aby wyświetlić aktualnie wybraną dzierżawę i subskrypcję:
Get-AzureRMContext
- Uruchom następujący skrypt
.\ConfigARMAutoGrowShrinkCert.ps1 -DisplayName “YourHpcPackAppName” -HomePage "https://YourHpcPackAppHomePage" -IdentifierUri "https://YourHpcPackAppUri" -CertificateThumbprint "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -TenantId xxxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxxxx
gdzie
DisplayName — nazwa wyświetlana aplikacji Usługi Azure Active. Jeśli aplikacja nie istnieje, zostanie utworzona w Azure Active Directory.
Strona główna — strona główna aplikacji. Możesz skonfigurować fikcyjny adres URL, jak w poprzednim przykładzie.
IdentifierUri — identyfikator aplikacji. Możesz skonfigurować fikcyjny adres URL, jak w poprzednim przykładzie.
CertificateThumbprint — odcisk palca certyfikatu zainstalowanego w węźle głównym w kroku 1.
TenantId — identyfikator dzierżawy Azure Active Directory. Identyfikator dzierżawy można uzyskać ze strony właściwości Azure Active Directory portalu.
Aby uzyskać więcej informacji na tematConfigARMAutoGrowShrinkCert.ps1, uruchom .
Get-Help .\ConfigARMAutoGrowShrinkCert.ps1 -Detailed
W przypadku klastra z węzłem głównym na platformie Azure (klasyczny model wdrażania) — jeśli używasz skryptu wdrażania IaaS pakietu HPC Pack do utworzenia klastra w klasycznym modelu wdrażania, włącz właściwość klastra AutoGrowShrink, ustawiając opcję AutoGrowShrink w pliku konfiguracji klastra. Aby uzyskać szczegółowe informacje, zapoznaj się z dokumentacją towarzyszącymi pobieraniom skryptu.
Możesz też włączyć właściwość klastra AutoGrowShrink po wdrożeniu klastra przy użyciu poleceń programu HpC PowerShell opisanych w poniższej sekcji. Aby się na to przygotować, najpierw wykonaj następujące czynności:
Skonfiguruj certyfikat zarządzania platformy Azure w węźle głównym i w subskrypcji platformy Azure. W przypadku wdrożenia testowego można użyć domyślnego certyfikatu z podpisem własnym microsoft HPC platformy Azure, który pakiet HPC Pack instaluje w węźle głównym, a następnie przekazać ten certyfikat do subskrypcji platformy Azure. Aby uzyskać opcje i kroki, zobacz wskazówki dotyczące biblioteki TechNet.
Uruchom polecenie regedit w węźle głównym, przejdź do folderu HKLM\SOFTWARE\Micorsoft\HPC\IaasInfo i dodaj wartość ciągu. W polach Nazwa wartości ustaw wartość "Odcisk palca", a dla wartości — odcisk palca certyfikatu w kroku 1.
Polecenia programu HpC programu PowerShell służące do ustawienia właściwości AutoGrowShrink
Poniżej przedstawiono przykładowe polecenia programu PowerShell HPC służące do ustawienia funkcji AutoGrowShrink i dostrojenia jej zachowania przy użyciu dodatkowych parametrów. Zobacz parametry AutoGrowShrink w dalszej części tego artykułu, aby uzyskać pełną listę ustawień.
Aby uruchomić te polecenia, uruchom program HPC PowerShell w węźle głównym klastra jako administrator.
Aby włączyć właściwość AutoGrowShrink
Set-HpcClusterProperty –EnableGrowShrink 1
Aby wyłączyć właściwość AutoGrowShrink
Set-HpcClusterProperty –EnableGrowShrink 0
Aby zmienić interwał wzrostu w minutach
Set-HpcClusterProperty –GrowInterval <interval>
Aby zmienić interwał zmniejszania w minutach
Set-HpcClusterProperty –ShrinkInterval <interval>
Aby wyświetlić bieżącą konfigurację funkcji AutoGrowShrink
Get-HpcClusterProperty –AutoGrowShrink
Aby wykluczyć grupy węzłów z funkcji AutoGrowShrink
Set-HpcClusterProperty –ExcludeNodeGroups <group1,group2,group3>
Uwaga
Ten parametr jest obsługiwany od pakietu HPC Pack 2016
Parametry AutoGrowShrink
Poniżej przedstawiono parametry AutoGrowShrink, które można modyfikować za pomocą polecenia Set-HpcClusterProperty .
EnableGrowShrink — włącza lub wyłącza właściwość AutoGrowShrink .
ParamSweepTasksPerCore — liczba zadań z czyszczeniem parametrów w celu wzrostu o jeden rdzeń. Wartość domyślna to wzrost jednego rdzenia na zadanie.
Uwaga
Aktualizacja QFE pakietu HPC Pack KB3134307 zmienia wartość ParamSweepTasksPerCorena TasksPerResourceUnit. Jest ona oparta na typie zasobu zadania i może być węzłem, gniazdem lub rdzeniem.
GrowThreshold — próg zadań w kolejce w celu wyzwolenia automatycznego wzrostu. Wartość domyślna to 1, co oznacza, że jeśli w kolejce znajduje się co najmniej 1 zadanie podrzędne, węzły są automatycznie powiększane.
GrowInterval — interwał w minutach w celu wyzwolenia automatycznego wzrostu. Domyślny interwał to 5 minut.
ShrinkInterval — interwał w minutach w celu wyzwolenia automatycznego zmniejszania. Domyślny interwał to 5 minut.|
ShrinkIdleTimes — liczba ciągłych testów do zmniejszenia, aby wskazać, że węzły są w stanie bezczynności. Wartość domyślna to 3 razy. Jeśli na przykład rozmiar właściwości ShrinkInterval wynosi 5 minut, pakiet HPC Pack sprawdza, czy węzeł jest bezczynny co 5 minut. Jeśli węzły są w stanie bezczynności po 3 ciągłych testach (15 minut), pakiet HPC Pack zmniejsza ten węzeł.
ExtraNodesGrowRatio — dodatkowy procent węzłów do wzrostu dla Message Passing Interface (MPI). Wartość domyślna to 1, co oznacza, że pakiet HPC Pack zwiększa węzły o 1% dla zadań MPI.
GrowByMin — przełącz się, aby wskazać, czy zasady automatycznego wzrostu są oparte na minimalnych zasobach wymaganych dla zadania. Wartość domyślna to false, co oznacza, że pakiet HPC Pack zwiększa liczbę węzłów dla zadań w oparciu o maksymalną ilość zasobów wymaganych dla zadań.
SoaJobGrowThreshold — próg przychodzących żądań SOA wyzwalających proces automatycznego wzrostu. Wartość domyślna to 50000.
Uwaga
Ten parametr jest obsługiwany od wersji HPC Pack 2012 R2 Update 3.
SoaRequestsPerCore — liczba przychodzących żądań SOA, które mają rosnąć o jeden rdzeń. Wartość domyślna to 20000.
Uwaga
Ten parametr jest obsługiwany od wersji HPC Pack 2012 R2 Update 3.
ExcludeNodeGroups — węzły w określonych grupach węzłów nie są automatycznie powiększane i zmniejszane.
Uwaga
Ten parametr jest obsługiwany od pakietu HPC Pack 2016.
Przykład MPI
Domyślnie pakiet HPC Pack zwiększa o 1% dodatkowe węzły dla zadań MPI (opcja ExtraNodesGrowRatio jest ustawiona na 1). Przyczyną jest to, że mpi może wymagać wielu węzłów, a zadanie może zostać uruchomione tylko wtedy, gdy wszystkie węzły są gotowe. Gdy platforma Azure uruchamia węzły, czasami jeden węzeł może potrzebować więcej czasu na uruchomienie niż inne, co powoduje, że inne węzły są bezczynne podczas oczekiwania na gotowość tego węzła. Dzięki rosnącym dodatkowym węzłom pakiet HPC Pack skraca czas oczekiwania na ten zasób i potencjalnie zmniejsza koszty. Aby zwiększyć procent dodatkowych węzłów dla zadań MPI (na przykład do 10%), uruchom polecenie podobne do:
Set-HpcClusterProperty -ExtraNodesGrowRatio 10
Przykład SOA
Domyślnie wartość SoaJobGrowThreshold wynosi 50000, a wartość SoaRequestsPerCore to 20000. W przypadku przesyłania jednego zadania SOA z 70 000 żądań istnieje jedno zadanie w kolejce, a żądania przychodzące to 70000. W tym przypadku pakiet HPC Pack zwiększa o 1 rdzeń dla zadania w kolejce, a w przypadku żądań przychodzących zwiększa się (70000–50000)/20000 = 1 rdzeń, więc łącznie rośnie 2 rdzenie dla tego zadania SOA.
Uruchamianie skryptu AzureAutoGrowShrink.ps1 skryptu
Wymagania wstępne
Klaster HPC Pack 2012 R2 Update 1 lub nowszy — skryptAzureAutoGrowShrink.ps1jest zainstalowany w folderze %CCP_HOME%bin. Węzeł główny klastra można wdrożyć lokalnie lub na maszynie wirtualnej platformy Azure. Zobacz Konfigurowanie klastra hybrydowego za pomocą pakietu HPC Pack , aby rozpocząć pracę z lokalnym węzłem głównym i węzłami platformy Azure "z serii". Zobacz skrypt wdrażania IaaS pakietu HPC Pack , aby szybko wdrożyć klaster pakietu HPC Pack na maszynach wirtualnych platformy Azure, lub użyj szablonu szybkiego startu platformy Azure.
Azure PowerShell 1.4.0 — skrypt obecnie zależy od tej konkretnej wersji Azure PowerShell.
W przypadku klastra z węzłami azure burst — uruchom skrypt na komputerze klienckim, na którym zainstalowano pakiet HPC Pack, lub w węźle głównym. Jeśli program jest uruchomiony na komputerze klienckim, upewnij się, że zmienna jest $env:CCP_SCHEDULER, aby wskazać węzeł główny. Węzły platformy Azure "burst" muszą zostać dodane do klastra, ale mogą być w Not-Deployed stanie.
W przypadku klastra wdrożonego na maszyn wirtualnych platformy Azure (model wdrażania usługi Resource Manager) — w przypadku klastra maszyn wirtualnych platformy Azure wdrożonych w modelu wdrażania usługi Resource Manager skrypt obsługuje dwie metody uwierzytelniania platformy Azure: logowanie się do konta platformy Azure w celu uruchomienia skryptu za każdym razem (
Connect-AzureRmAccount
przez uruchomienie polecenia lub skonfigurowanie jednostki usługi do uwierzytelniania za pomocą certyfikatu). Pakiet HPC Pack udostępnia skrypt ConfigARMAutoGrowShrinkCert.ps tworzenia jednostki usługi z certyfikatem. Skrypt tworzy aplikację usługi Azure Active Directory (Azure AD) i jednostkę usługi oraz przypisuje rolę Współautor do jednostki usługi. Aby uruchomić skrypt, uruchom Azure PowerShell jako administrator i uruchom następujące polecenia:cd $env:CCP_HOME\bin Connect-AzureRmAccount .\ConfigARMAutoGrowShrinkCert.ps1 -DisplayName “YourHpcPackAppName” -HomePage "https://YourHpcPackAppHomePage" -IdentifierUri "https://YourHpcPackAppUri" -PfxFile "d:\yourcertificate.pfx"
Aby uzyskać więcej informacji na ConfigARMAutoGrowShrinkCert.ps1, uruchom
Get-Help .\ConfigARMAutoGrowShrinkCert.ps1 -Detailed
W przypadku klastra wdrożonego na maszynach wirtualnych platformy Azure (klasyczny model wdrażania) — uruchom skrypt na maszynie wirtualnej węzła głównego, ponieważ zależy to od zainstalowanego w nimStart-HpcIaaSNode.ps1Stop-HpcIaaSNode.ps1skryptów. Skrypty te dodatkowo wymagają certyfikatu zarządzania platformy Azure lub pliku ustawień publikowania (zobacz Zarządzanie węzłami obliczeniowymi w klastrze pakietu HPC Pack na platformie Azure). Upewnij się, że wszystkie potrzebne maszyny wirtualne węzła obliczeniowego zostały już dodane do klastra. Mogą być w stanie Zatrzymano.
Składnia
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 — nazwy szablonów węzłów definiujące zakres dla węzłów, które mają być powiększane i zmniejszane. Jeśli nie zostanie określona (wartość domyślna to @()), wszystkie węzły w grupie węzłów AzureNodes znajdują się w zakresie, gdy typ NodeType ma wartość AzureNodes, a wszystkie węzły w grupie węzłów ComputeNodes znajdują się w zakresie, gdy typ NodeType ma wartość ComputeNodes.
JobTemplates — nazwy szablonów zadań definiujące zakres rozwoju węzłów.
NodeType — typ węzła, który ma być powiększany i zmniejszany. Obsługiwane wartości to:
- AzureNodes — w przypadku węzłów PaaS platformy Azure (z serii) w klastrze lokalnym lub klastrze IaaS platformy Azure.
- ComputeNodes — dla maszyn wirtualnych węzłów obliczeniowych tylko w klastrze IaaS platformy Azure.
NumOfQueuedJobsPerNodeToGrow — liczba zadań w kolejce wymaganych do wzrostu jednego węzła.
NumOfQueuedJobsToGrowThreshold — liczba progowa zadań w kolejce do uruchomienia procesu wzrostu.
NumOfActiveQueuedTasksPerNodeToGrow — liczba aktywnych zadań w kolejce wymaganych do wzrostu jednego węzła. Jeśli określono wartość NumOfQueuedJobsPerNodeToGrow o wartości większej niż 0, ten parametr jest ignorowany.
NumOfActiveQueuedTasksToGrowThreshold — liczba progowa aktywnych zadań w kolejce do uruchomienia procesu wzrostu.
NumOfInitialNodesToGrow — początkowa minimalna liczba węzłów do wzrostu, jeśli wszystkie węzły w zakresie mają wartość Nie wdrożono lub Zatrzymano (cofniesz alokację).
GrowCheckIntervalMins — interwał (w minutach) między sprawdzeniami, które mają rosnąć.
ShrinkCheckIntervalMins — interwał (w minutach) między sprawdzeniami do zmniejszenia.
ShrinkCheckIdleTimes — liczba ciągłych kontroli zmniejszania (rozdzielonych przez shrinkCheckIntervalMins), aby wskazać, że węzły są bezczynne.
UseLastConfigurations — poprzednie konfiguracje zapisane w pliku argumentów.
ArgFile — nazwa pliku argumentu używanego do zapisywania i aktualizowania konfiguracji w celu uruchomienia skryptu.
LogFilePrefix — nazwa prefiksu pliku dziennika. Możesz określić ścieżkę. Domyślnie dziennik jest zapisywany w bieżącym katalogu pracy.
Przykład 1
Poniższy przykład umożliwia skonfigurowanie węzłów azure burst wdrożonych przy użyciu domyślnego szablonu AzureNode w celu automatycznego powiększania i zmniejszania. Jeśli wszystkie węzły są początkowo w stanie Nie wdrożono, zostaną uruchomione co najmniej 3 węzły. Jeśli liczba zadań w kolejce przekracza 8, skrypt uruchamia węzły, dopóki ich liczba nie przekroczy współczynnika zadań w kolejce do wartości NumOfQueuedJobsPerNodeToGrow. Jeśli węzeł zostanie znaleziony jako bezczynny w 3 kolejnych czasach bezczynności, zostanie zatrzymany.
.\AzureAutoGrowShrink.ps1 -NodeTemplates @('Default AzureNode
Template') -NodeType AzureNodes -NumOfQueuedJobsPerNodeToGrow 5
-NumOfQueuedJobsToGrowThreshold 8 -NumOfInitialNodesToGrow 3
-GrowCheckIntervalMins 1 -ShrinkCheckIntervalMins 1 -ShrinkCheckIdleTimes 3
Przykład 2
Poniższy przykład umożliwia skonfigurowanie maszyn wirtualnych węzła obliczeniowego platformy Azure wdrożonych przy użyciu domyślnego szablonu ComputeNode w celu automatycznego powiększania i zmniejszania. Zadania skonfigurowane przez domyślny szablon zadania definiują zakres obciążenia w klastrze. Jeśli wszystkie węzły zostaną początkowo zatrzymane, zostanie uruchomionych co najmniej 5 węzłów. Jeśli liczba aktywnych zadań podrzędnych w kolejce przekracza 15, skrypt uruchamia węzły, dopóki ich liczba nie przekroczy współczynnika aktywnych zadań podrzędnych w kolejce do wartości NumOfActiveQueuedTasksPerNodeToGrow. Jeśli węzeł zostanie znaleziony jako bezczynny w 10 kolejnych czasach bezczynności, zostanie zatrzymany.
.\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'