Opis szablonów klastrów usługi Azure CycleCloud
Usługa Azure CycleCloud udostępnia oparte na szablonach wdrożenie klastrów HPC. Domyślnie aplikacja Azure CycleCloud zawiera kilka wbudowanych szablonów do wdrażania najbardziej typowych harmonogramów klastrów, w tym Slurm, PBSPro, LSF, Grid Engine i HT-Condor. Repozytoria GitHub usługi Azure CycleCloud oferują wiele projektów specyficznych dla harmonogramu, które można dostosować i zaimportować do wystąpienia usługi Azure CycleCloud. Istnieje również możliwość implementowania aprowizacji opartej na szablonach dla własnych, opracowanych w firmie harmonogramów przy użyciu wtyczek skalowania automatycznego usługi CycleCloud.
Szablony ułatwiają implementowanie szerokiej gamy funkcji usługi Azure CycleCloud, w tym obsługę niestandardowych obrazów maszyn wirtualnych, skalowania automatycznego i maszyn wirtualnych typu spot. Minimalizują one również nakład pracy związany z aprowizowaniem i konserwowaniem wielu wdrożeń identycznych skonfigurowanych klastrów, często używanych do izolowania środowisk produkcyjnych, programistycznych i testowych.
Te korzyści są zgodne z celami wdrażania nowego klastra rezydenta platformy Azure dla firmy Contoso. Aby zoptymalizować zakres tych korzyści, decydujesz się dowiedzieć się więcej o formacie i procesie implementowania szablonów usługi Azure CycleCloud.
Jaki jest format szablonów usługi Azure CycleCloud?
Szablony to pliki w formacie INI, które używają składni deklaratywnej do opisania struktury i konfiguracji klastra CycleCloud, w tym ról węzłów klastra i ich odpowiednich relacji. Szablony składają się z nazwanych sekcji z nagłówkami wyznaczonymi przez co najmniej jedną parę nawiasów kwadratowych. Sekcje tworzą hierarchię odpowiadającą hierarchii obiektów klastra i odpowiadających im parametrów. Liczba nawiasów kwadratowych reprezentuje warstwę w tej hierarchii, zwiększając sekwencyjnie z każdą warstwą.
[cluster]
[[node, nodearray]]
[[[volume]]]
[[[network-interface]]]
[[[cluster-init]]]
[[[input-endpoint]]]
[[[configuration]]]
[environment]
[noderef]
[parameters]
[[parameters]]
[[[parameter]]]
[cluster]
W rzeczywistości sekcja może zawierać co najmniej jedną [[node]]
sekcję, która może zawierać wiele [[[volume]]]
sekcji. Podobnie w ramach tego samego szablonu w [cluster]
sekcji można zdefiniować co najmniej jedną [[nodearray]]
sekcję, z których każda ma własną wartość [[[configuration]]]
.
Uwaga
Kolejność sekcji w tej samej warstwie jest dowolna.
Jakie są główne sekcje szablonu?
Szablon składa się z następujących głównych sekcji:
- Klaster: sekcja
[cluster]
zawiera definicję obiektu klastra Azure CycleCloud. Szablon musi zawierać co najmniej jedną sekcję zawierającą co najmniej jedną[cluster]
[[node]]
[[nodearray]]
sekcję opisującą obiekty podrzędne tego klastra. - Węzeł: reprezentuje jedną aprowizowaną platformę maszynę wirtualną.
- Nodearray: reprezentuje co najmniej jeden zestaw skalowania maszyn wirtualnych platformy Azure.
Uwaga
Klastry składają się z węzłów obsługujących wyznaczone role w przetwarzaniu obciążeń klastrowanych. Z punktu widzenia implementacji usługa Azure CycleCloud korzysta z usługi Azure Resource Manager, aby aprowizować je jako poszczególne maszyny wirtualne platformy Azure lub jako elementy członkowskie zestawu skalowania maszyn wirtualnych. Ten ostatni reprezentuje kolekcję identycznych skonfigurowanych maszyn wirtualnych, które w przeciwieństwie do maszyn wirtualnych platformy Azure obsługują skalowanie automatyczne w poziomie. Usługa Azure CycleCloud używa zestawów skalowania maszyn wirtualnych do implementowania obiektów nodearray. W [[node]]
sekcji opisano właściwości podstawowych maszyn wirtualnych aprowizowania platformy, które mogą być autonomiczną maszyną wirtualną platformy Azure lub należą do zestawu skalowania maszyn wirtualnych platformy Azure. W [[nodearray]]
sekcji opisano zestaw skalowania maszyn wirtualnych platformy Azure.
Uwaga
Węzełarray może składać się z wielu zestawów skalowania maszyn wirtualnych platformy Azure, z których każda składa się z różnych skonfigurowanych maszyn wirtualnych. Jednak wszystkie węzły w środowisku nodearray wykonują tę samą rolę w klastrze, na przykład dostarczając zasoby do jednej kolejki harmonogramu klastra.
- Wolumin definiuje dysk zarządzany platformy Azure, który powinien być dołączony do poszczególnych węzłów klastra lub węzłów tworzących węzełarray. Jest to obiekt podrzędny węzła lub obiektu nodearray.
- Interfejs sieciowy definiuje interfejs sieciowy platformy Azure, który powinien być dołączony do poszczególnych węzłów klastra lub węzłów tworzących węzełarray. Jest to obiekt podrzędny węzła lub obiektu nodearray.
- Konfiguracja definiuje konfigurowalne właściwości węzła lub węzłaarray. Jest to obiekt podrzędny węzła lub obiektu nodearray.
- Klaster-init definiuje specyfikacje projektu Azure CycleCloud, które mają być stosowane do węzła klastra. Projekt to kolekcja zasobów definiujących konfiguracje węzłów w postaci specyfikacji projektu. Po uruchomieniu węzła jest on automatycznie konfigurowany przez przetwarzanie tych specyfikacji. Cluster-init jest obiektem podrzędnym węzła lub obiektu nodearray.
- Środowisko definiuje wdrożenie usługi Azure Resource Manager, które aprowizuje lub modyfikuje zasoby platformy Azure do użycia przez klaster. Jest to opcjonalny obiekt najwyższego poziomu.
- Element Noderef odwołuje się do węzła w szablonie w celu wyrażenia zależności zasobów. Jest to opcjonalny obiekt najwyższego poziomu.
- Parametry umożliwiają przenoszenie szablonu, co umożliwia jego użycie do wdrażania wielu klastrów z pasującą hierarchią obiektów, ale różnymi ustawieniami konfiguracji. Jest to opcjonalny obiekt najwyższego poziomu, ale istnieje możliwość utworzenia hierarchii zagnieżdżonych parametrów. Dla każdego parametru można zdefiniować jego wartość domyślną. Parametry umożliwiają również uwidocznienie konfigurowalnych zmiennych w klastrze za pośrednictwem interfejsu internetowego CycleCloud.
Każda sekcja zawiera kilka par klucz-wartość, które zawierają szczegóły konfiguracji odpowiedniego obiektu reprezentowane przez nagłówek sekcji. Na przykład takie szczegóły dla węzłaarray mogą zawierać ImageName
klucz z wartością wyznaczającą obraz maszyny wirtualnej platformy Azure, który ma być używany dla jego węzłów, lub Azure.MaxScalesetSize
klucz określający maksymalny dozwolony rozmiar zestawu skalowania maszyn wirtualnych jako jego wartość. Podobnie sekcje węzła lub węzłaarray mogą zawierać co najmniej jedną [[[configuration]]]
sekcję.
Jak aprowizować klaster na podstawie szablonu?
Po zidentyfikowaniu szablonu, który ma być używany do aprowizacji klastra usługi Azure CycleCloud, można zastosować dowolną z następujących metod implementacji:
- Za pomocą interfejsu wiersza polecenia usługi Azure CycleCloud zaimportuj szablon do aplikacji Azure CycleCloud, a następnie użyj interfejsu graficznego aplikacji do aprowizacji klastra. Aby wyzwolić importowanie, uruchom
cyclecloud import_template -f <template_file>
polecenie (gdzie<template_file>
symbol zastępczy reprezentuje nazwę pliku zawierającego szablon). Jeśli szablon zawiera wiele definicji klastra, określ nazwę klastra, który chcesz zaimportować, odwołując się do niego jako wartość parametru-c
. - Użyj interfejsu wiersza polecenia usługi Azure CycleCloud, aby zaimportować szablon do aplikacji Azure CycleCloud, a następnie aprowizować klaster. Aby wyzwolić importowanie, uruchom
cyclecloud import_template -t -f <template_file>
polecenie (gdzie<template_file>
symbol zastępczy reprezentuje nazwę pliku zawierającego szablon). Po zakończeniu importowaniacyclecloud create_cluster
uruchom polecenie . Aby na przykład utworzyć klaster o nazwielab-cluster
na podstawie zaimportowanego szablonu o nazwielab-template
, należy uruchomić poleceniecyclecloud create_cluster lab-template lab-cluster
. - Użyj interfejsu wiersza polecenia usługi Azure CycleCloud, aby aprowizować klaster bez jawnego importowania szablonu. Aby wyzwolić importowanie, uruchom
cyclecloud import_cluster
polecenie .
Niezależnie od wybranej metody należy podać wartości wszystkich wymaganych parametrów podczas aprowizacji klastra. W przypadku korzystania z interfejsu wiersza polecenia usługi Azure CycleCloud można je podać, odwołując się do pliku parametrów w formacie JSON.
Uwaga
Plik składa się z par klucz-wartość, gdzie klucz reprezentuje nazwę parametru. Aby przejrzeć jego format dla istniejącego klastra, użyj cyclecloud export_parameters <cluster_name> > params.json
polecenia , gdzie <cluster_name>
symbol zastępczy reprezentuje nazwę istniejącego klastra.
Uwaga
Przed wdrożeniem klastra na podstawie zaimportowanego szablonu należy również przekazać zawartość odpowiedniego projektu do funkcji Azure CycleCloud. Aby wykonać przekazywanie, użyj polecenia interfejsu cyclecloud project upload <locker_name>
wiersza polecenia usługi Azure CycleCloud (gdzie <locker_name>
symbol zastępczy reprezentuje nazwę funkcji locker). Aby wyświetlić listę dostępnych zamknięć, uruchom polecenie interfejsu cyclecloud locker list
wiersza polecenia usługi Azure CycleCloud. Nazwa funkcjiLocker jest przywołyowana w [[[cluster-init]]]
sekcji .
Uwaga
Jednym z kroków konfigurowania instalacji usługi Azure CycleCloud jest utworzenie kontenera obiektów blob na koncie usługi Azure Storage. Ten kontener służy jako funkcja, której serwer CycleCloud używa do etapu projektów CycleCloud dla węzłów klastra. Następnie węzły klastrów zarządzanych przez usługę Azure CycleCloud są skonfigurowane do pobierania projektów CycleCloud z tej funkcji w ramach procesu rozruchu.