Beskriva Azure CycleCloud-klustermallar

Slutförd

Azure CycleCloud tillhandahåller mallbaserad distribution av HPC-kluster. Som standard innehåller Azure CycleCloud-programmet flera inbyggda mallar för att distribuera de vanligaste klusterschemaläggarna, inklusive Slurm, PBSPro, LSF, Grid Engine och HT-Condor. Azure CycleCloud GitHub-lagringsplatser erbjuder många scheduler-specifika projekt som du kan anpassa och importera till din Azure CycleCloud-instans. Du har också möjlighet att implementera mallbaserad etablering för dina egna egenutvecklade schemaläggare med hjälp av CycleClouds autoskalningstillägg.

Mallar underlättar implementering av en mängd olika Azure CycleCloud-funktioner, inklusive stöd för anpassade virtuella maskinavbildningar (VM-bilder), automatisk skalning och Spot VM:er. De minimerar också de kostnader som är associerade med etablering och underhåll av flera distributioner av identiskt konfigurerade kluster, som ofta används för att isolera produktions-, utvecklings- och testmiljöerna.

Dessa fördelar överensstämmer med dina mål för att implementera det nya Azure-residenta klustret för Contoso. För att optimera omfattningen av dessa fördelar bestämmer du dig för att lära dig mer om formatet och processen för att implementera Azure CycleCloud-mallar.

Vilket format har Azure CycleCloud-mallar?

Mallar är INI-formaterade filer som använder deklarativ syntax för att beskriva strukturen och konfigurationen för ett CycleCloud-kluster, inklusive klusternodroller och deras respektive relationer. Mallar består av namngivna avsnitt, med rubriker som anges av ett eller flera par hakparenteser. Avsnitten bildar en hierarki som motsvarar hierarkin för klusterobjekt och deras motsvarande parametrar. Antalet hakparenteser representerar en nivå inom den hierarkin och ökar sekventiellt med varje nivå.

[cluster]
  [[node, nodearray]]
    [[[volume]]]
    [[[network-interface]]]
    [[[cluster-init]]]
    [[[input-endpoint]]]
    [[[configuration]]]
[environment]
[noderef]
[parameters]
  [[parameters]]
    [[[parameter]]]

I själva verket kan det [cluster] avsnittet innehålla ett eller flera [[node]] avsnitt, som kan innehålla flera [[[volume]]] avsnitt. På samma sätt kan du i samma mall i avsnittet [cluster] definiera ett eller flera [[nodearray]] avsnitt, var och en med sin egen [[[configuration]]].

Not

Ordningen på avsnitt på samma nivå är godtycklig.

Vilka är huvudavsnitten i en mall?

En mall består av följande huvudavsnitt:

  • Cluster: Avsnittet [cluster] innehåller en definition av ett Azure CycleCloud-klusterobjekt. En mall måste innehålla minst ett [cluster]-avsnitt, som innehåller ett eller flera [[node]]- och [[nodearray]]-avsnitt som beskriver barnobjekt i den kluster.
  • Node: Detta representerar en enda, plattformsetablerad virtuell dator.
  • Nodearray: Detta representerar en eller flera skalningsuppsättningar för virtuella Azure-datorer.

Obs

Kluster består av noder som betjänar deras avsedda roller vid bearbetning av klustrade arbetsbelastningar. Från implementeringssynpunkt förlitar sig Azure CycleCloud på Azure Resource Manager för att etablera dem som antingen enskilda virtuella Azure-datorer eller som medlemmar i en VM-skalningsuppsättning. Den senare representerar en samling identiskt konfigurerade virtuella datorer, som till skillnad från virtuella Azure-datorer stöder horisontell autoskalning. Azure CycleCloud använder Virtual Machine Scale Sets för att implementera nodearrays. I [[node]] beskrivs i själva verket egenskaperna för de underliggande, plattformsetablerade virtuella datorerna, som kan vara en fristående virtuell Azure-dator eller tillhöra en skalningsuppsättning för virtuella Azure-datorer. I avsnittet [[nodearray]] beskrivs en skalningsuppsättning för virtuella Azure-datorer.

Notera

En nodearray kan bestå av flera skalningsuppsättningar för virtuella Azure-datorer, där var och en av dem består av olika konfigurerade virtuella datorer. Alla noder i en nodearray utför dock samma roll i klustret, till exempel att tillhandahålla resurser till en enda kö i klusterschemaläggaren.

  • Volume definierar en Azure-hanterad disk som ska kopplas till enskilda klusternoder eller noder som bildar en nodearray. Det är ett underobjekt till en nod eller ett nodarray-objekt.
  • Nätverksgränssnitt definierar ett Azure-nätverksgränssnitt som ska kopplas till enskilda klusternoder eller noder som bildar en nodearray. Det är ett underordnat objekt för en nod eller ett nodearray-objekt.
  • Configuration definierar konfigurerbara egenskaper för en nod eller nodearray. Det är ett barnobjekt till en nod eller ett NodeArray-objekt.
  • Cluster-init definierar Azure CycleCloud-projektspecifikationerna som ska tillämpas på en klusternod. Ett projekt är en samling resurser som definierar nodkonfigurationer i form av projektspecifikationer. När en nod startar konfigureras den automatiskt genom att dessa specifikationer bearbetas. Cluster-init är ett underordnat objekt för en nod eller ett nodearray-objekt.
  • Environment definierar en Azure Resource Manager-distribution som etablerar eller ändrar Azure-resurser som ska användas av klustret. Det är ett valfritt objekt på den översta nivån.
  • Noderef- refererar till en nod i mallen för att uttrycka resursberoenden. Det är ett valfritt objekt på den översta nivån.
  • Parametrar kan du göra en mall portabel, så att du kan använda den för distribution av flera kluster med matchande objekthierarki men olika konfigurationsinställningar. Det är ett valfritt objekt på den översta nivån, men du kan skapa en kapslad parameterhierarki. För varje parameter kan du definiera dess standardvärde. Med parametrar kan du också exponera konfigurerbara variabler i ett kluster via CycleCloud-webbgränssnittet.

Varje avsnitt innehåller flera nyckel/värde-par som innehåller konfigurationsinformation om motsvarande objekt, som representeras av avsnittsrubriken. Sådan information för en nodearray kan till exempel innehålla ImageName-nyckeln med värdet som anger Azure-VM-avbildningen som ska användas för noderna, eller Azure.MaxScalesetSize-nyckeln som anger den maximala tillåtna storleken på en virtual machine scale set som dess värde. På samma sätt kan nod- eller nodearray-avsnitten innehålla en eller flera [[[configuration]]] avsnitt.

Hur etablerar jag ett kluster baserat på en mall?

När du har identifierat mallen som du tänker använda för att etablera ett Azure CycleCloud-kluster kan du använda någon av följande implementeringsmetoder:

  • Använd Azure CycleCloud CLI för att importera mallen till ditt Azure CycleCloud-program och använd sedan programmets grafiska gränssnitt för att etablera klustret. Om du vill utlösa importen kör du kommandot cyclecloud import_template -f <template_file> (där platshållaren <template_file> representerar namnet på filen som innehåller mallen). Om mallen innehåller flera klusterdefinitioner anger du namnet på det kluster som du vill importera genom att referera till det som värdet för parametern -c.
  • Använd Azure CycleCloud CLI för att importera mallen till ditt Azure CycleCloud-program och etablera sedan klustret. Om du vill utlösa importen kör du kommandot cyclecloud import_template -t -f <template_file> (där platshållaren <template_file> representerar namnet på filen som innehåller mallen). När importen har slutförts kör du kommandot cyclecloud create_cluster. Om du till exempel vill skapa ett kluster med namnet lab-cluster från en importerad mall med namnet lab-templatekör du cyclecloud create_cluster lab-template lab-cluster.
  • Använd Azure CycleCloud CLI för att etablera klustret utan att uttryckligen importera mallen. Kör kommandot cyclecloud import_cluster för att utlösa importen.

Oavsett vilken metod du väljer måste du ange värden för alla obligatoriska parametrar under klusteretablering. När du använder Azure CycleCloud CLI kan du ange dem genom att referera till en JSON-formaterad parameterfil.

Not

Filen består av nyckel/värde-par, där nyckeln representerar parameternamnet. Om du vill granska dess format för ett befintligt kluster använder du kommandot cyclecloud export_parameters <cluster_name> > params.json, där platshållaren <cluster_name> representerar namnet på det befintliga klustret.

Not

Innan du distribuerar ett kluster baserat på en importerad mall måste du också ladda upp innehållet i motsvarande projekt till ett Azure CycleCloud-skåp. Om du vill utföra en uppladdning använder du kommandot cyclecloud project upload <locker_name> Azure CycleCloud CLI (där platshållaren <locker_name> representerar namnet på skåpet). Om du vill visa tillgängliga skåp kör du kommandot cyclecloud locker list Azure CycleCloud CLI. Namnet på skåpet refereras till i avsnittet [[[cluster-init]]].

Not

Ett av stegen när du konfigurerar en Azure CycleCloud-installation är att skapa en blobcontainer i ett Azure Storage-konto. Den här containern fungerar som det skåp som CycleCloud-servern använder för att mellanlagra CycleCloud-projekt för klusternoder. Därefter konfigureras noder i Azure CycleCloud-hanterade kluster för att ladda ned CycleCloud-projekt från det här skåpet som en del av startprocessen.