Décrire les bases d’Azure CycleCloud

Effectué

De nombreuses organisations souhaitent migrer leurs charges de travail HPC locales vers Azure pour profiter de ses fonctionnalités hyperscale. Elles veulent aussi réduire la courbe d’apprentissage induite par cette transition et utiliser les compétences liées aux déploiements existants, comme un planificateur HPC spécifique. Enfin, elles recherchent des insights sur les performances et le coût des ressources de cluster basées sur le cloud, de la même manière que pour leurs environnements locaux.

L’implémentation d’une solution personnalisée pour répondre à ces besoins soulève quelques difficultés. Il faut pour ce faire une connaissance approfondie des ressources de calcul, de réseau et de stockage Azure, qui sont la base des clusters HPC basés sur le cloud. Par ailleurs, sans interface de gestion, l’utilisation de ce type de solution avec les outils de gestion Azure standard représente une surcharge administrative importante.

Azure CycleCloud répond à ces préoccupations en fournissant une méthode simple, sécurisée et scalable pour implémenter des planificateurs HPC dans Azure. Dans cette unité, vous allez découvrir ses fonctionnalités de base.

Remarque

Azure CycleCloud cible les scénarios de déploiement pour lesquels vous devez utiliser un planificateur HPC spécifique. Il vient en complément d’Azure Batch, qui fournit un planificateur en tant que service sur Azure.

Présentation de Azure CycleCloud

Azure CycleCloud est un outil qui sert à déployer des clusters HPC dans Azure et à gérer leurs charges de travail. Il offre de nombreuses fonctionnalités HPC, notamment :

  • Déploiement basé sur un modèle pour les clusters HPC. Azure CycleCloud fournit des modèles prédéfinis personnalisables pour le déploiement des planificateurs de cluster les plus courants, notamment Slurm, OpenPBS, LSF, Grid Engine et HTCondor. De nombreux autres modèles prédéfinis, que vous pouvez importer dans votre instance Azure CycleCloud, sont disponibles dans le dépôt GitHub de CycleCloud.

    Notes

    Les modèles sont des fichiers au format INI qui utilisent la syntaxe déclarative pour décrire comment les nœuds sont organisés dans un cluster CycleCloud, y compris leurs relations respectives. Les modèles contiennent des références aux projets, qui définissent la configuration des nœuds.

  • Mise à l’échelle manuelle et automatique des nœuds de cluster. Azure CycleCloud permet une mise à l’échelle horizontale manuelle et automatique des clusters managés en fonction de la longueur des files d’attente de travaux et des stratégies de gouvernance. Il offre également une API REST afin de développer des adaptateurs de mise à l’échelle automatique pour les planificateurs personnalisés.

  • Configuration des nœuds avec des scripts cloud-init. Azure CycleCloud gère la configuration avec des scripts personnalisés qui s’exécutent dans les nœuds de cluster managé avant les autres tâches de configuration CycleCloud.

  • Gestion du stockage de cluster interne et externe. Azure CycleCloud vous permet de configurer le stockage des clusters en approvisionnant, montant et formatant des disques managés Azure, et des périphériques de stockage NAS, comme des serveurs NFS ou des clusters BeeGFS.

  • Surveillance, journalisation et alertes. Azure CycleCloud offre par défaut une supervision de cluster qui s’intègre à Azure Monitor. Il permet aussi de stocker les données de journal des clusters CycleCloud dans Log Analytics et de créer des tableaux de bord de métriques personnalisés. Par ailleurs, vous pouvez créer des alertes personnalisées et des notifications par e-mail déclenchées par les données de télémétrie. Toutes les activités d’Azure CycleCloud sont journalisées.

  • Authentification et autorisation. Azure CycleCloud prend en charge l’authentification locale intégrée. Vous pouvez également l’intégrer à Active Directory Domain Services ou à d’autres fournisseurs d’identité basés sur LDAP (Lightweight Directory Access Protocol). Par défaut, les utilisateurs définis localement ont accès au système d’exploitation des nœuds du cluster managé, mais les utilisateurs du cluster peuvent être administrés séparément. Pour la gestion des ressources dans un abonnement Azure, vous pouvez utiliser un principal de service ou une identité managée Microsoft Entra.

  • Contrôles des coûts en quasi-temps réel et rapports sur ceux-ci. Azure CycleCloud suit l’utilisation du cluster et estime le coût correspondant. Cette fonctionnalité vous permet de configurer des alertes budgétaires qui se déclenchent quand le coût du cluster dépasse le montant que vous avez spécifié. Azure CycleCloud s’intègre également à Microsoft Cost Management.

Comment implémenter et utiliser Azure CycleCloud ?

CycleCloud est implémenté comme une application web basée sur Linux. Vous pouvez l’installer partout où vous avez accès à votre environnement Azure. Le moyen le plus simple de le configurer est de déployer une machine virtuelle Azure à l’aide de l’image correspondante de la Place de marché Azure, avec la possibilité d’automatiser le déploiement en utilisant un modèle Azure Resource Manager (ARM). Vous pouvez aussi utiliser des packages yum ou apt, ou une image conteneur de Microsoft Container Registry.

Pendant la configuration initiale, vous avez la possibilité de fournir une clé SSH pour sécuriser l’accès au système d’exploitation hébergeant l’application CycleCloud et aux nœuds de cluster déployés ultérieurement. Pour permettre à l’application CycleCloud d’interagir avec Azure Resource Manager, vous devez choisir une identité Microsoft Entra qui fournit le contexte de sécurité de cette interaction et lui attribuer les autorisations nécessaires dans l’abonnement Azure cible à l’aide du contrôle d’accès en fonction du rôle (RBAC) Azure. Cette identité peut prendre la forme d’un principal de service ou d’une identité managée si vous hébergez l’application Azure CycleCloud sur une machine virtuelle Azure.

Une instance Azure CycleCloud nécessite également un compte de stockage Azure et le conteneur de blobs associé. Ce conteneur, appelé locker, est la zone de mise en lots pour le déploiement de projets sur des nœuds de cluster.

Une fois installée, l’application Azure CycleCloud fournit une interface utilisateur graphique pour gérer et superviser les systèmes HPC, ainsi qu’une interface de ligne de commande (CLI) pour faciliter l’automatisation et l’intégration de CycleCloud dans les workflows existants. Vous pouvez également utiliser l’interface CLI pour importer des modèles, automatiser le provisionnement des clusters et effectuer des tâches de gestion plus avancées.

Capture d’écran de l’interface graphique de l’application web Azure CycleCloud.

Quelle est l’architecture d’Azure CycleCloud ?

Azure CycleCloud fournit une couche d’abstraction supplémentaire par rapport à Azure Resource Manager, qui évite ainsi aux utilisateurs de gérer directement les ressources de calcul et de stockage Azure. Son rôle est de convertir les configurations au niveau du planificateur qui sont accessibles par le biais de son interface graphique ou de l’interface CLI en appels d’API ARM qui interagissent avec les machines virtuelles Azure et les groupes de machines virtuelles identiques Azure dans les réseaux virtuels et les sous-réseaux définis par l’utilisateur. Ces appels tiennent également compte des quotas de processeurs virtuels régionaux, des limites de taille de cluster et des contraintes de la topologie de réseau InfiniBand. Ils facilitent également l’optimisation des performances de cluster en utilisant des constructions comme les groupes de placement de proximité ou la connexion des nœuds de cluster au même commutateur InfiniBand.

Notes

Les groupes de placement de proximité permettent de colocaliser des machines virtuelles Azure proches les unes des autres, mais ne tient pas compte du réseau InfiniBand. Azure CycleCloud vous permet d’utiliser sa propre construction spécifique, appelée PlacementGroupId, pour regrouper les nœuds de cluster dans un seul groupe de machines virtuelles identiques Azure connecté au même commutateur réseau. Vous pouvez combiner ces deux fonctionnalités, mais cela peut limiter le nombre de nœuds que vous pouvez provisionner dans le même groupe de machines virtuelles identiques Azure.

Azure CycleCloud orchestre le cycle de vie des clusters HPC, qui se composent généralement d’un ou de plusieurs nœuds principaux et nœuds de calcul de planificateur HPC, mais peuvent également comprendre un périphérique de stockage NAS, comme un serveur NFS ou un cluster BeeGFS, Azure NetApp Files, Azure HPC Cache et Microsoft Entra Domain Service. Il comprend un magasin de donnes NoSQL interne qui met en cache les états de cluster et de nœud. Son système de supervision des nœuds permet de définir des alertes. Ses fonctionnalités de gestion sont exposées par l’API REST et accessibles sur le web et dans l’interface CLI.

La mise à l’échelle automatique du cluster managé repose sur la calculatrice à la demande et la bibliothèque de mise à l’échelle automatique. Le détail de leurs caractéristiques est présenté dans l’unité suivante de ce cours.

Diagramme de l’architecture de haut niveau d’Azure CycleCloud.

Qu’est-ce que le cycle de vie d’un cluster Azure CycleCloud ?

Le cycle de vie d’un cluster commence par la sélection d’un modèle contenant sa définition. Vous avez la possibilité d’utiliser l’un des modèles prédéfinis, ou de créer un modèle personnalisé et l’importer dans l’application CycleCloud. Le modèle comprend généralement plusieurs paramètres, qui vous permettent de personnaliser la configuration du cluster lors de sa création. Les spécificités du processus de création de cluster varient selon que vous utilisez le web ou l’interface CLI.

Une fois le cluster créé, vous pouvez le démarrer. Le démarrage d’un cluster déclenche une séquence de tâches pour chaque nœud présent dans la définition de cluster basée sur un modèle. Cette séquence consiste en un appel à Azure Resource Manager demandant l’approvisionnement d’une machine virtuelle Azure, ce qui correspond à l’état Acquisition. Cette tâche est suivie de la configuration de la machine virtuelle, notamment l’exécution de son initialisation qui est définie dans le projet correspondant, l’exécution de scripts pour installer et configurer le logiciel de planification, et le provisionnement et le montage des volumes de système de fichiers. Une fois la séquence terminée, le nœud atteint l’état Démarré. Toute erreur non gérée ou inconnue entraîne l’état Erreur.

Quand les nœuds de cluster sont en cours d’exécution, ils sont accessibles à distance par SSH ou RDP, en fonction de leur système d’exploitation. Vous pouvez utiliser ce type de connexions pour envoyer des travaux de cluster. Selon la configuration du cluster, cela peut déclencher la mise à l’échelle du cluster.

Vous pouvez arrêter un cluster une fois qu’il a terminé tous les travaux envoyés. L’arrêt du cluster arrête et supprime ses nœuds, et supprime tous les volumes non persistants, laissant le cluster dans l’état Désactivé.