Décrire les modèles de cluster Azure CycleCloud
Azure CycleCloud fournit un déploiement basé sur des modèles de clusters HPC. Par défaut, l’application Azure CycleCloud inclut plusieurs modèles intégrés pour déployer les planificateurs de cluster les plus courants, notamment Slurm, PBSPro, LSF, Grid Engine et HT-Condor. Les référentiels GitHub Azure CycleCloud offrent de nombreux projets spécifiques au planificateur, que vous pouvez personnaliser et importer dans votre instance Azure CycleCloud. Vous avez également la possibilité d’implémenter l’approvisionnement basé sur des modèles pour vos propres planificateurs développés en interne à l’aide de plug-ins de mise à l’échelle automatique CycleCloud.
Les modèles facilitent l’implémentation d’un large éventail de fonctionnalités Azure CycleCloud, notamment la prise en charge des images de machine virtuelle personnalisées, de la mise à l’échelle automatique et des machines virtuelles Spot. Ils réduisent également la surcharge associée à l’approvisionnement et à la maintenance de plusieurs déploiements de clusters configurés identiquement, couramment utilisés pour isoler les environnements de production, de développement et de test.
Ces avantages s’alignent sur vos objectifs pour implémenter le nouveau cluster résident Azure pour Contoso. Pour optimiser l’étendue de ces avantages, vous décidez d’en savoir plus sur le format et le processus d’implémentation de modèles Azure CycleCloud.
Quel est le format des modèles Azure CycleCloud ?
Les modèles sont des fichiers au format INI qui utilisent la syntaxe déclarative pour décrire la structure et la configuration d’un cluster CycleCloud, y compris les rôles de nœud de cluster et leurs relations respectives. Les modèles se composent de sections nommées, avec des en-têtes désignés par une ou plusieurs paires de crochets. Les sections forment une hiérarchie, correspondant à la hiérarchie des objets de cluster et à leurs paramètres correspondants. Le nombre de crochets représente un niveau dans cette hiérarchie, augmentant de façon séquentielle avec chaque niveau.
[cluster]
[[node, nodearray]]
[[[volume]]]
[[[network-interface]]]
[[[cluster-init]]]
[[[input-endpoint]]]
[[[configuration]]]
[environment]
[noderef]
[parameters]
[[parameters]]
[[[parameter]]]
En fait, la [cluster] section peut contenir une ou plusieurs [[node]] sections, qui peuvent contenir plusieurs [[[volume]]] sections. De même, dans le même modèle, dans la section [cluster], vous pouvez définir une ou plusieurs sections [[nodearray]], chacune avec son propre [[[configuration]]].
Remarque
L’ordre des sections dans le même niveau est arbitraire.
Quelles sont les principales sections d’un modèle ?
Un modèle se compose des sections principales suivantes :
- Cluster : la
[cluster]section contient une définition d’un objet de cluster Azure CycleCloud. Un modèle doit inclure au moins une[cluster]section, qui contient une ou plusieurs[[node]]sections[[nodearray]]décrivant les objets enfants de ce cluster. - Nœud : il s’agit d’une machine virtuelle provisionnée sur une plateforme unique.
- Nodearray : Ceci représente un ou plusieurs groupes de machines virtuelles identiques Azure.
Remarque
Les clusters comprennent des nœuds qui servent leurs rôles désignés dans le traitement des charges de travail en cluster. Du point de vue de l’implémentation, Azure CycleCloud s’appuie sur Azure Resource Manager pour les approvisionner en tant que machines virtuelles Azure individuelles ou en tant que membres d’un groupe de machines virtuelles identiques. Ce dernier représente une collection de machines virtuelles configurées de manière identique, qui, contrairement aux machines virtuelles Azure, prennent en charge la mise à l’échelle automatique horizontale. Azure CycleCloud utilise des ensembles de machines virtuelles pour implémenter des nodearrays. En fait, la [[node]] section décrit les propriétés des machines virtuelles sous-jacentes approvisionnées par la plateforme, qui peuvent être une machine virtuelle Azure autonome ou appartenir à un groupe de machines virtuelles identiques Azure. La section [[nodearray]] décrit un groupe de machines virtuelles identiques Azure.
Remarque
*Nodearray* peut se composer de plusieurs jeux d’échelle de machines virtuelles Azure, chacun d’eux comprenant des machines virtuelles configurées différemment. Cependant, tous les nœuds d’un groupe de nœuds jouent le même rôle dans le cluster, par exemple fournir des ressources à une file d’attente du planificateur de cluster.
- Le volume définit un disque managé Azure qui doit être attaché à des nœuds de cluster individuels ou à des nœuds formant un ensemble de nœuds. C’est un objet enfant d’un nœud ou d’un objet nodearray.
- L'interface réseau définit une interface réseau Azure qui doit être attachée à des nœuds de cluster individuels ou à des nœuds formant un tableau de nœuds. C’est un objet enfant d’un nœud ou d’un objet nodearray.
- La configuration définit les propriétés configurables d’un nœud ou d’un tableau de nœuds. C’est un objet enfant d’un nœud ou d’un objet nodearray.
- Cluster-init définit les spécifications du projet Azure CycleCloud à appliquer à un nœud de cluster. Un projet est une collection de ressources qui définit des configurations de nœud sous la forme de spécifications de projet. Quand un nœud démarre, il est automatiquement configuré en traitant ces spécifications. Cluster-init est un objet enfant d’un nœud ou d’un objet nodearray.
- L’environnement définit un déploiement Azure Resource Manager, qui provisionne ou modifie les ressources Azure à utiliser par le cluster. Il s’agit d’un objet de niveau supérieur facultatif.
- Noderef fait référence à un nœud dans le modèle pour exprimer les dépendances de ressources. Il s’agit d’un objet de niveau supérieur facultatif.
- Les paramètres vous permettent de rendre un modèle portable, ce qui vous permet de l’utiliser pour le déploiement de plusieurs clusters avec une hiérarchie d’objets correspondante, mais différents paramètres de configuration. Il s’agit d’un objet de niveau supérieur facultatif, mais vous avez la possibilité de créer une hiérarchie de paramètres imbriquées. Pour chaque paramètre, vous pouvez définir sa valeur par défaut. Les paramètres vous permettent également d’exposer des variables configurables dans un cluster via l’interface web CycleCloud.
Chaque section contient plusieurs paires clé-valeur qui fournissent des détails de configuration sur l’objet correspondant, représentées par l’en-tête de section. Par exemple, pour un objet nodearray, ces détails peuvent inclure la clé ImageName avec la valeur désignant l’image de machine virtuelle Azure à utiliser pour ses nœuds ou la clé Azure.MaxScalesetSize dont la valeur spécifie la taille maximale autorisée du groupe de machines virtuelles identiques. De même, les sections node ou nodearray peuvent inclure une ou plusieurs [[[configuration]]] sections.
Comment provisionner un cluster en fonction d’un modèle ?
Après avoir identifié le modèle que vous envisagez d’utiliser pour approvisionner un cluster Azure CycleCloud, vous pouvez appliquer l’une des méthodes d’implémentation suivantes :
- Utilisez Azure CycleCloud CLI pour importer le modèle dans votre application Azure CycleCloud, puis utilisez l’interface graphique de l’application pour approvisionner le cluster. Pour déclencher l’importation, exécutez la
cyclecloud import_template -f <template_file>commande (où l’espace<template_file>réservé représente le nom du fichier contenant le modèle). Si le modèle contient plusieurs définitions de cluster, spécifiez le nom du cluster que vous souhaitez importer en le référençant comme valeur du-cparamètre. - Utilisez Azure CycleCloud CLI pour importer le modèle dans votre application Azure CycleCloud, puis pour approvisionner le cluster. Pour déclencher l’importation, exécutez la
cyclecloud import_template -t -f <template_file>commande (où l’espace<template_file>réservé représente le nom du fichier contenant le modèle). Une fois l’importation terminée, exécutez lacyclecloud create_clustercommande. Par exemple, pour créer un cluster nommélab-clusterà partir d’un modèle importé nommélab-template, vous devez exécutercyclecloud create_cluster lab-template lab-cluster. - Utilisez Azure CycleCloud CLI pour approvisionner le cluster sans importer explicitement le modèle. Pour déclencher l’importation, exécutez la
cyclecloud import_clustercommande.
Quelle que soit la méthode que vous choisissez, vous devez fournir des valeurs de tous les paramètres requis pendant l’approvisionnement du cluster. Lorsque vous utilisez Azure CycleCloud CLI, vous pouvez les fournir en référençant un fichier de paramètres au format JSON.
Remarque
Le fichier se compose de paires clé-valeur, où la clé représente le nom du paramètre. Pour passer en revue son format pour un cluster existant, utilisez la cyclecloud export_parameters <cluster_name> > params.json commande, où l’espace <cluster_name> réservé représente le nom du cluster existant.
Remarque
Avant de déployer un cluster basé sur un modèle importé, vous devez également charger le contenu du projet correspondant dans un casier Azure CycleCloud. Pour effectuer un téléchargement, utilisez la commande Azure CycleCloud CLI cyclecloud project upload <locker_name> (où le placeholder <locker_name> représente le nom du casier). Pour répertorier les casiers disponibles, exécutez la cyclecloud locker list commande CLI Azure CycleCloud. Le nom du coffre est référencé dans la section [[[cluster-init]]].
Remarque
L’une des étapes de configuration d’une installation Azure CycleCloud consiste à créer un conteneur d’objets blob dans un compte de stockage Azure. Ce conteneur sert de casier que le serveur CycleCloud utilise pour mettre en scène des projets CycleCloud pour les nœuds de cluster. Par la suite, les nœuds des clusters gérés par Azure CycleCloud sont configurés pour télécharger des projets CycleCloud à partir de ce casier dans le cadre de leur processus de démarrage.