CycleCloud Clusters

Dans CycleCloud, le terme cluster est utilisé pour décrire un groupe d’ordinateurs connectés (nœuds) fonctionnant ensemble en tant que système unique. Les clusters peuvent être imbriqués ; Par exemple, un cluster de calcul constitué d’un nœud principal du planificateur du moteur de grille et de nœuds de calcul peut monter un cluster BeeGFS composé de plusieurs serveurs de métadonnées et de stockage, les clusters de calcul et de stockage étant regroupés sous un seul cluster ou système HPC parent.

Diagramme de vue d’ensemble

Nœuds et tableaux de nœuds

Les clusters se composent essentiellement de nœuds, chacun d’entre eux ayant un rôle spécifique dans le système HPC. Les termes nœud et machine virtuelle sont utilisés de façon interchangeable occasionnellement, mais sont sémantiquement distincts dans CycleCloud. Les nœuds qui composent un cluster sont essentiellement des machines virtuelles sur Azure qui ont terminé le processus de préparation et de configuration. En d’autres termes, les machines virtuelles sont approvisionnées à partir des couches de service d’infrastructure Azure, et leurs états finaux sont des nœuds d’un cluster HPC après avoir suivi les étapes d’installation et de configuration du logiciel.

Diagramme de l’architecture

Il existe deux incarnations distinctes de nœuds dans CycleCloud. Le premier en tant que nœud autonome et le second en tant que nodearray, qui est une collection de nœuds configurés de manière identique (La distinction nœud/nœudarray suit l’analogie DevOps Pets vs Cattle dans l’esprit). Globalement, mais pas à proprement parler, les nœuds autonomes sont construits à partir de machines virtuelles uniques sur Azure, tandis que les nodearrays sont mappés à des groupes de machines virtuelles identiques (VMSS).

Il existe toutefois des différences cruciales entre les nodearrays et les groupes identiques de machines virtuelles, la principale étant qu’un seul nodearray peut comprendre plusieurs groupes de machines virtuelles identiques. Cela permet à un seul nodearray d’être généré à partir de machines virtuelles de tailles différentes, voire de familles de machines virtuelles différentes, la seule contrainte étant que tous les nœuds d’un nodearray remplissent le même rôle dans le cluster, par exemple, en fournissant des ressources à une file d’attente unique d’un planificateur.

Modèles de cluster

La topologie, ou la façon dont les nœuds sont organisés dans un cluster CycleCloud, sont définies dans des modèles de texte qui définissent les relations entre les nœuds d’un cluster, et dans le cas des clusters imbriqués, la relation parent-enfant des clusters. Les modèles fournissent également les moyens de définir le rôle joué par chaque nœud.

Les modèles de cluster sont définis au format INI. Les sections, délimitées à l’aide de crochets [,] sont utilisées pour définir des clusters, des nœuds et des nodearrays. L’élément de base des fichiers INI sont des assertions de paire clé-valeur qui fournissent les détails de configuration de chaque section. Ces détails de configuration fournissent des informations contextuelles utilisées pour créer chaque nœud d’un cluster, de l’image de machine virtuelle utilisée pour démarrer la machine virtuelle au sous-réseau dans lequel la machine virtuelle doit être provisionnée. En savoir plus sur les modèles de cluster CycleCloud

Préparation et configuration des nœuds

CycleCloud approvisionne les machines virtuelles à partir d’images de machine virtuelle de base définies dans le modèle de cluster et, par le biais d’une série d’étapes gérées par l’agent CycleCloud (Jetpack) pendant le processus de démarrage, initialise et configure le système d’exploitation sur la machine virtuelle pour le convertir en nœud HPC opérationnel. Ces étapes vont des scripts pour installer et configurer le logiciel de planification à la configuration du dernier kilomètre pour le montage d’un système de fichiers.

Diagramme de préparation des nœuds

Définies dans la section de configuration de chaque nœud, les spécifications cluster-init sont fournies à chaque machine virtuelle de démarrage qui sont utilisées pour la préparer à un rôle spécifique dans le cluster. CycleCloud utilise Chef comme plateforme d’automatisation de l’infrastructure pour la préparation et la configuration de chaque nœud. En substance, chaque spécification cluster-init est mappée à l’un des rôles Chef et/ou recettes de livres de recettes qui doivent être exécutés sur la machine virtuelle de démarrage.

CycleCloud utilise Chef dans un mode autonome qui ne repose pas sur un serveur Chef centralisé. Au lieu de cela, l’ensemble des livres de recettes Chef nécessaires à la préparation de chaque machine virtuelle sont téléchargés à partir d’un compte de stockage Azure appartenant à l’utilisateur pendant la phase de démarrage de la machine virtuelle. Cet ensemble de livres de recettes est mis en cache à partir du serveur d’applications CycleCloud dans le compte de stockage pendant la phase de création du cluster.

Une fois ces livres de recettes téléchargés, Chef traite la liste des recettes définies dans les spécifications cluster-init du nœud, déclenchant une phase de préparation et de configuration qui convertit la machine virtuelle en nœud HPC opérationnel.

Les spécifications sont créées en tant que collections logiques appelées Projets. Par exemple, un projet pour un planificateur de lots tel que Slurm comprend au minimum deux spécifications : l’une pour les nœuds principaux du planificateur et l’autre pour les nœuds de calcul. En savoir plus sur les projets CycleCloud

Orchestration des nœuds

Selon le planificateur et les services utilisés dans un cluster, CycleCloud doit parfois orchestrer la phase de préparation des nœuds d’un cluster par le biais de la coordination de différents nœuds. Par exemple, certains planificateurs exigent que chaque nœud de calcul s’inscrive par rapport au démon du planificateur, ce qui nécessite non seulement que les nœuds de calcul soient conscients de l’adresse du nœud principal, mais qu’ils soient également en mesure de reconnaître que le nœud principal est entièrement préparé et d’attendre si ce n’est pas le cas.

Cet élément de la découverte de services est également utilisé pour les relations serveur-client du système de fichiers et est une fonctionnalité dans CycleCloud.

En savoir plus