Partager via


Nœuds et pools dans Azure Batch

Dans un workflow Azure Batch, un nœud de calcul (ou nœud) est une machine virtuelle qui traite une partie de la charge de travail de votre application. Un pool est une collection regroupant ces nœuds, sur lesquels votre application s’exécute. Cet article explique plus en détail les nœuds et les pools, ainsi que les éléments à prendre en compte lors de leur création et de leur utilisation dans un flux de travail Azure Batch.

Nœuds

Un nœud est une machine virtuelle Azure ou une machine virtuelle de service cloud dédiée au traitement d’une partie de la charge de travail de votre application. La taille d’un nœud détermine le nombre de cœurs du processeur, la capacité de mémoire et la taille du système de fichiers local qui lui est allouée.

Vous pouvez créer des pools de nœuds Windows ou Linux à l’aide des services Azure Cloud Services, des images provenant de la Place de marché de machines virtuelles Azure ou des images personnalisées par vos soins.

Les nœuds peuvent exécuter n’importe quel exécutable ou script pris en charge par l’environnement du système d’exploitation du nœud. Les exécutables ou les scripts peuvent être aux formats *.exe, *.cmd ou *.bat. Ils peuvent inclure des scripts PowerShell (pour Windows), des fichiers binaires, ainsi que des scripts shell et Python (pour Linux).

Tous les nœuds de calcul Batch incluent également les éléments suivants :

Par défaut, les nœuds peuvent communiquer entre eux, mais ils ne peuvent pas communiquer avec des machines virtuelles qui ne font pas partie du même pool. Pour permettre aux nœuds de communiquer en toute sécurité avec d’autres machines virtuelles, ou avec un réseau local, vous pouvez provisionner le pool dans un sous-réseau d’un réseau virtuel Azure (VNet). Dans ce cas, vos nœuds sont accessibles via des adresses IP publiques. Batch crée ces adresses IP publiques et peut changer au cours de la durée de vie du pool. Vous pouvez également créer un pool avec des adresses IP publiques statiques que vous contrôlez, ce qui garantit qu’ils ne changent pas de manière inattendue.

Piscines

Un pool est une collection de nœuds sur lesquels votre application s’exécute.

Les pools Azure Batch sont créés en parallèle à la plate-forme de calcul Azure principale. Ils permettent d’installer des applications, de répartir les données, et d’effectuer des allocations à grande échelle, des analyses de fonctionnement et des ajustements flexibles du nombre de nœuds de calcul au sein d’un pool (mise à l’échelle).

Chaque nœud ajouté à un pool se voit attribuer un nom unique et l’adresse IP. Lorsqu’un nœud est supprimé d’un pool, toutes les modifications apportées au système d’exploitation ou aux fichiers sont perdues, et son nom et son adresse IP sont libérés pour une utilisation ultérieure. Lorsqu’un nœud quitte un pool, sa durée de vie est terminée.

Un pool ne peut être utilisé que par le compte Batch dans lequel il a été créé. Un compte Batch peut créer plusieurs pools pour répondre aux besoins en ressources des applications qui doivent s’exécuter.

Vous pouvez créer le pool manuellement ou il peut être créé automatiquement par le service Batch lorsque vous spécifiez le travail à accomplir. Lorsque vous créez un pool, vous pouvez spécifier les attributs suivants :

Important

Les comptes Batch ont un quota par défaut qui limite le nombre de cœurs dans un compte Batch. Le nombre de cœurs correspond au nombre de nœuds de calcul. Pour en savoir plus sur les quotas par défaut et obtenir des instructions sur l’augmentation d’un quota, consultez l’article Quotas et limites pour le service Azure Batch. Si votre pool n'atteint pas son nombre cible de nœuds, le quota de processeurs peut en être la cause.

Système d’exploitation et version

Lorsque vous créez un pool Batch, vous pouvez spécifier la configuration de machines virtuelles Azure et le type de système d’exploitation que vous souhaitez exécuter sur chaque nœud de calcul dans le pool.

Paramètres

Configuration de la machine virtuelle

La configuration de machines virtuelles indique que le pool est composé de machines virtuelles Azure. Ces machines virtuelles peuvent être créées à partir d’images Linux ou Windows.

L’agent de nœud de Batch est un programme qui s’exécute sur chaque nœud dans le pool et fournit l’interface de commande et de contrôle entre le nœud et le service Batch. Il existe différentes versions de l’agent de nœud pour différents systèmes d’exploitation, connues sous le nom de SKUs. Lorsque vous créez un pool basé sur la configuration de machine virtuelle, vous devez spécifier non seulement la taille des nœuds et la source des images utilisées pour les créer, mais aussi la référence d’image de machine virtuelle et le SKU de l’agent de nœud Batch à installer sur les nœuds. Pour plus d’informations sur la spécification des propriétés de pool, voir Configurer des nœuds de calcul Linux dans des pools Azure Batch. Vous pouvez éventuellement attacher un ou plusieurs disques de données vides au pool de machines virtuelles créé à partir d’images de la Place de Marché, ou inclure des disques de données dans des images personnalisées utilisées pour créer les machines virtuelles. Quand vous incluez des disques de données, vous devez monter et formater les disques à partir d’une machine virtuelle pour les utiliser.

Références SKU d’agent de nœud

Lorsque vous créez un pool, vous devez sélectionner la valeur nodeAgentSkuId appropriée, selon le système d’exploitation de l’image de base de votre VHD. Vous pouvez obtenir les correspondances entre les ID de référence SKU d’agent de nœud disponibles et les références de leur image de système d’exploitation en appelant l’opération permettant de lister les références SKU d’agent de nœud prises en charge.

Images personnalisées pour les pools de machines virtuelles

Pour savoir comment créer un pool d’images personnalisées, consultez Utiliser Azure Compute Gallery pour créer un pool personnalisé.

Support des conteneurs dans les pools de machines virtuelles

Lorsque vous créez un pool de configuration de machines virtuelles à l’aide des API de lot, vous pouvez configurer le pool pour exécuter des tâches dans des conteneurs Docker. À l’heure actuelle, vous devez créer le pool à l’aide d’une image qui prend en charge les conteneurs Docker. Utilisez Windows Server 2016 Datacenter avec l’image Containers provenant de la Place de Marché Azure ou fournissez une image de machine virtuelle personnalisée qui inclut Docker Community Edition ou Enterprise Edition et tous les pilotes requis. Les paramètres du pool doivent inclure une configuration du conteneur copiant des images de conteneur sur les machines virtuelles une fois le pool créé. Les tâches qui s’exécutent sur le pool peuvent ensuite référencer les images conteneur et les options d’exécution de conteneur.

Pour plus d’informations, consultez Exécutez des applications de conteneur Docker sur Azure Batch.

Cible et type de nœud

Lorsque vous créez un pool, vous pouvez spécifier les types de nœuds de calcul souhaités et le nombre cible pour chacun. Les deux types de nœuds sont les suivants :

  • Nœuds dédiés. Les nœuds de calcul dédiés sont réservés à vos charges de travail. Ils sont généralement plus chers que les nœuds Spot, mais ils ne seront jamais préemptés.
  • Repérer les nœuds. Les nœuds spot tirent profit de la capacité excédentaire dans Azure pour exécuter vos charges de travail Batch. Le coût horaire des nœuds spot est moins élevé que celui des nœuds dédiés. Par ailleurs, ces nœuds activent des charges de travail nécessitant une importante puissance de calcul. Pour plus d’informations, consultez Utiliser des machines virtuelles spot avec Batch.

Les nœuds spot peuvent être préemptés lorsque Microsoft Azure n’a pas suffisamment de capacité excédentaire. Si un nœud est reporté lors de l’exécution de tâches, celles-ci sont remises dans la file d’attente et exécutées à nouveau dès qu’un nœud de calcul redevient disponible. Les nœuds spot sont intéressants pour les charges de travail dont l’heure d’achèvement est flexible et dont le travail est réparti entre plusieurs nœuds. Avant de décider d’utiliser des nœuds Spot pour votre scénario, assurez-vous que tout travail perdu en raison de la préemption est minimal et facile à reprendre ou à recréer.

Un même pool peut contenir à la fois des nœuds de calcul dédiés et des nœuds spot. Chaque type de nœud a son propre paramètre de cible, pour lequel vous pouvez spécifier le nombre de nœuds souhaité.

Le nombre de nœuds de calcul est appelé cible car, dans certaines situations, votre pool ne pourra peut-être pas atteindre le nombre de nœuds souhaité. Par exemple, un pool ne pourra peut-être pas atteindre la cible s’il atteint d’abord le quota de base de votre compte Batch Ou bien, le pool peut ne pas atteindre la cible si vous avez appliqué une formule de mise à l’échelle automatique au pool qui limite le nombre maximal de nœuds.

Remarque

Lorsque les nœuds de calcul Batch spot sont préemptés, ils passent à l’état unusable en premier. Après un certain temps, ces nœuds de calcul transitionneront pour refléter l’état preempted. Batch active automatiquement le comportement try &restore pour restaurer les instances spot supprimées avec un objectif idéal pour maintenir le nombre d’instances cibles.

Pour obtenir les tarifs des nœuds spot et dédiés, consultez Tarifs Batch.

Taille du nœud

Lorsque vous créez un pool Azure Batch, vous avez le choix entre quasiment toutes les tailles et les familles de machine virtuelle disponibles dans Azure. Azure offre une plage de tailles de machines virtuelles pour différentes charges de travail, y compris des tailles de machines virtuelles spécialisées HPC ou compatibles GPU. Les tailles de machine virtuelle de nœud ne peuvent être choisies qu’au moment de la création d’un pool. En d’autres termes, une fois qu’un pool est créé, sa taille de machine virtuelle ne peut pas être modifiée.

Pour plus d’informations, consultez Choisir une taille de machine virtuelle pour des nœuds de calcul dans un pool Azure Batch.

Stratégie de mise à l’échelle automatique

Pour les charges de travail dynamiques, vous pouvez appliquer une stratégie de mise à l’échelle automatique à un pool. Le service Batch évalue régulièrement votre formule et ajuste dynamiquement le nombre de nœuds au sein du pool en fonction de la charge de travail actuelle et de l’utilisation des ressources de votre scénario de calcul. Cela vous permet de réduire le coût global d’exécution de votre application en utilisant uniquement les ressources dont vous avez besoin et en libérant les autres.

Pour activer la mise à l’échelle automatique, écrivez une formule de mise à l’échelle automatique et associez-la à un pool. Le service Batch utilise la formule pour déterminer le nombre cible de nœuds dans le pool pour le prochain intervalle de mise à l’échelle (intervalle que vous pouvez configurer). Vous pouvez spécifier les paramètres de mise à l’échelle automatique pour un pool lorsque vous le créez ou activez la mise à l’échelle sur un pool ultérieurement. Vous pouvez également mettre à jour les paramètres de mise à l’échelle sur un pool compatible avec la mise à l’échelle.

Par exemple, il se peut qu’un travail exige que vous envoyiez un grand nombre de tâches devant être exécutées. Vous pouvez attribuer au pool une formule de mise à l’échelle qui règle le nombre de nœuds du pool en fonction du nombre actuel de tâches en file d’attente et du degré d’achèvement des tâches dans le travail. Le service Batch évalue régulièrement la formule et redimensionne le pool en fonction de la charge de travail et des autres paramètres de votre formule. Le service ajoute des nœuds selon les besoins lorsqu’il existe un grand nombre de tâches en file d’attente, et supprime des nœuds lorsqu’aucune tâche n’est en file d’attente ni en cours d’exécution.

Une formule de mise à l’échelle peut être basée sur les mesures suivantes :

  • mesures temporelles sont basées sur les statistiques collectées toutes les cinq minutes dans le nombre d’heures spécifié.
  • mesures de ressources sont basées sur l’utilisation du processeur, de la bande passante et de la mémoire, et sur le nombre de nœuds.
  • Les mesures de tâches sont basées sur l’état de la tâche, tel que Active (en file d’attente), En cours d’exécution ou Terminée.

Lorsque la mise à l’échelle automatique diminue le nombre de nœuds de calcul dans un pool, vous devez réfléchir aux méthodes pour gérer les tâches s’exécutant au moment de cette opération de réduction. Pour ce faire, Batch fournit une option de désallocation de nœud que vous pouvez inclure dans vos formules. Par exemple, vous pouvez spécifier d’arrêter immédiatement les tâches en cours, puis les remettre en file d’attente pour une exécution sur un autre nœud, ou les autoriser à terminer avant la suppression du nœud du pool. La définition de l’option de désallocation de nœud comme taskcompletion ou retaineddata empêche les opérations de redimensionnement du pool jusqu’à ce que toutes les tâches se terminent, ou lorsque toutes les périodes de rétention des tâches expirent, respectivement.

Pour plus d’informations sur la mise à l’échelle automatique d’une application, consultez la section Mettre automatiquement à l’échelle les nœuds de calcul dans un pool Azure Batch.

Conseil

Pour optimiser l’utilisation des ressources de calcul, définissez à zéro le nombre cible de nœuds à la fin d’un travail tout en autorisant les tâches en cours à s’achever.

Stratégie de planification des tâches

L’option de configuration Nombre maximal de tâches par nœud détermine le nombre maximal de tâches qui peuvent être exécutées en parallèle sur chaque nœud de calcul au sein du pool.

La configuration par défaut spécifie qu’une tâche à la fois s’exécute sur un nœud, mais il existe des scénarios où il est utile d’exécuter simultanément deux tâches ou plus sur un nœud. Consultez l’exemple de scénario dans l’article sur les tâches de nœud simultanées sur la façon dont vous pouvez tirer parti de plusieurs tâches par nœud.

Vous pouvez également spécifier un type de remplissage. Il détermine si l’option Batch répartit les tâches uniformément sur tous les nœuds d’un pool, ou remplit chaque nœud avec le nombre maximal de tâches avant d’affecter des tâches à un autre nœud.

État des communications

Dans la plupart des scénarios, les tâches fonctionnent indépendamment et n’ont pas besoin de communiquer entre elles. Cependant, il existe des applications dans lesquelles les tâches doivent communiquer, par exemple les scénarios impliquant des applications MPI.

Vous pouvez configurer un pool de sorte qu’il autorise la communication entre les nœuds, afin de permettre aux nœuds du pool de communiquer au moment de l’exécution. Lorsque la communication entre nœuds est activée, les nœuds des pools de configuration des services cloud peuvent communiquer entre eux sur les ports supérieurs à 1100 et les pools de configuration de machines virtuelles ne limitent pas le trafic sur un port quelconque.

L’activation de la communication entre les nœuds affecte également le placement des nœuds dans des clusters et peut limiter le nombre maximal de nœuds dans un pool en raison des restrictions de déploiement. Si votre application ne nécessite pas de communication entre les nœuds, le service Batch peut allouer un nombre potentiellement important de nœuds au pool à partir de nombreux clusters et centres de données différents pour permettre une puissance de traitement parallèle accrue.

Commencer les tâches

Si vous le souhaitez, vous pouvez ajouter une tâche de démarrage qui s’exécute sur chaque nœud à mesure que ce nœud rejoint le pool, et chaque fois qu’un nœud est redémarré ou reimagé. La tâche de démarrage est particulièrement utile pour la préparation des nœuds de calcul à l’exécution de tâches, comme l’installation des applications que vos tâches exécutent sur les nœuds de calcul.

packages d’application

Vous pouvez spécifier des packages d’applications à déployer sur les nœuds de calcul dans le pool. Les packages d’applications permettent un déploiement simplifié et le contrôle de version des applications exécutées par vos tâches. Les packages d’applications que vous spécifiez pour un pool sont installés sur chaque nœud qui rejoint le pool, et à chaque fois qu’un nœud est redémarré ou réinitialisé.

Pour plus d’informations sur l’utilisation de packages d’applications pour déployer vos applications sur vos nœuds Batch, consultez Déployer des applications sur les nœuds avec des packages d’applications Batch.

Configuration du pare-feu et du réseau virtuel (VNet)

Lorsque vous configurez un pool de nœuds de calcul dans Batch, vous pouvez associer le pool au sous-réseau d’un réseau virtuel (VNet) Azure. Pour utiliser Azure VNet, l’API du client Batch doit utiliser l’authentification Microsoft Entra. La prise en charge d’Azure Batch pour Microsoft Entra ID est documentée dans Authentifier les solutions de service Batch avec Active Directory.

Configuration requise du réseau virtuel

Pour plus d’informations sur la configuration d’un pool Batch dans un réseau virtuel, consultez Créer un pool de machines virtuelles avec votre réseau virtuel.

Conseil

Pour vous assurer que les adresses IP publiques utilisées pour accéder aux nœuds ne changent pas, vous pouvez créer un pool avec des adresses IP publiques spécifiées que vous contrôlez.

Durée de vie des pools et des nœuds de calcul

Lorsque vous créez votre solution Azure Batch, vous devez indiquer de quelle manière et à quel moment les pools doivent être créés, ainsi que la durée pendant laquelle les nœuds de calcul de ces pools restent disponibles.

D’un côté, vous pouvez créer un pool pour chaque travail que vous soumettez et supprimer le pool dès la fin de l’exécution des tâches associées. Cela optimise l’utilisation, car les nœuds sont alloués uniquement si nécessaire, et ils sont arrêtés une fois qu’ils sont inactifs. Cela signifie que le travail doit attendre que les nœuds soient alloués, mais il est important de noter que l’exécution des tâches est planifiée dès que les nœuds sont individuellement alloués et que la tâche de démarrage est terminée, s’il est spécifié d’attendre la fin de la tâche de démarrage. Batch n’attend pas que tous les nœuds d’un pool soient disponibles avant d’affecter des tâches aux nœuds. Cela garantit l’utilisation maximale de tous les nœuds disponibles.

À l'autre extrémité du spectre, si le démarrage immédiat des tâches est la priorité absolue, vous pouvez créer un pool à l'avance et mettre ses nœuds à disposition avant la soumission des tâches. Dans ce scénario, les tâches peuvent démarrer immédiatement, mais il se peut que les nœuds restent inactifs en attendant que les tâches soient affectées.

Une approche combinée est généralement utilisée pour la gestion d’une charge variable, mais continue. Vous pouvez disposer d’un pool dans lequel plusieurs travaux sont envoyés, et adapter le nombre de nœuds en fonction de la charge du travail. Vous pouvez procéder en réaction, en fonction de la charge actuelle, ou en amont, si la charge peut être prédite. Pour plus d’informations, voir Stratégie de mise à l’échelle automatique.

Pools automatiques

Un pool automatique est un pool que crée le service Batch lors de l’envoi d’un travail, au lieu d’être créé explicitement avant les travaux qui s’exécuteront dans le pool. Le service Batch gère la durée de vie d’un pool automatique en fonction des caractéristiques que vous spécifiez. Le plus souvent, ces pools sont également définis pour supprimer automatiquement une fois leurs travaux terminés.

Sécurité avec certificats

En principe, vous devez utiliser des certificats lorsque vous chiffrez ou déchiffrez des informations sensibles pour les tâches, comme la clé d’un compte Stockage Azure. Pour ce faire, vous pouvez installer des certificats sur les nœuds. Les secrets chiffrés sont transmis aux tâches dans les paramètres de ligne de commande ou incorporés dans l’une des ressources et les certificats installés peuvent être utilisés pour les déchiffrer.

Pour ajouter un certificat à un compte Batch, vous utilisez l’opération Ajouter le certificat (REST Batch) ou la méthode CertificateOperations.CreateCertificate (.NET Batch). Vous pouvez ensuite associer le certificat à un pool existant ou nouveau.

Lorsqu’un certificat est associé à un pool, le service Batch installe le certificat sur chaque nœud du pool. Le service Batch installe les certificats appropriés au démarrage du nœud, avant de lancer une tâche quelconque (notamment les tâches de démarrage et celles du gestionnaire de travaux).

Si vous ajoutez des certificats à un pool existant, vous devez redémarrer ses nœuds de calcul afin que ces certificats soient appliqués aux nœuds.

Étapes suivantes