Résoudre les retards de création de nœud par lots lors du redémarrage ou de la reimation
Cet article explique comment résoudre les retards de création de nœud batch lorsque vous redémarrez ou réimagez un nœud. Évitez les problèmes dans Microsoft Azure Batch qui sont provoqués par l’installation du grand runtime Python et des packages Python. Cette installation entraîne des retards longs et des erreurs inattendues possibles lorsqu’un nœud batch est ajouté pour la première fois à un pool de lots, ou lorsque le nœud est redémarré ou réinitialisé.
Symptômes
Lorsque vous créez un pool de lots et ajoutez un nœud au pool, ou que vous redémarrez ou réimagez le nœud, l’installation de l’application prend trop de temps, ou elle échoue après une longue durée d’installation.
Cause
Ce problème se produit parce qu’un package Python est trop volumineux à utiliser comme tâche de démarrage.
Lorsque vous créez un pool de lots dans Azure Batch et ajoutez un nœud batch, le processus recommandé consiste à utiliser une tâche de démarrage pour préparer l’environnement d’exploitation. Cette tâche de démarrage peut effectuer les opérations suivantes :
Installez les applications que vos tâches exécutent.
Démarrez les processus en arrière-plan lorsque le nœud batch est ajouté pour la première fois au pool, ou lorsque le nœud est redémarré ou réinitialisé.
Toutefois, pour le runtime de langage Python et les applications qui nécessitent l’exécution de Python, le package peut être si volumineux qu’il faut beaucoup de temps pour que la tâche de démarrage s’installe. Même après la plupart de l’installation, l’installation peut toujours échouer en raison d’un problème inattendu.
Solution
Pour résoudre ce problème, faites correspondre les emplacements de la machine virtuelle et des comptes batch et les versions du système d’exploitation, et préinstallez Python et ses packages avant de capturer une image Gen1.
Utilisez une image personnalisée prépackagenée pour allouer des nœuds batch. Pour obtenir des informations générales sur ce processus, consultez Utiliser une image managée pour créer un pool d’images personnalisé.
Pour éviter de longues durées d’installation et éviter les défaillances d’installation, suivez les pratiques générales suivantes :
Spécifiez le même emplacement ou région à utiliser lorsque vous créez le compte batch et créez le nœud de lot de machines virtuelles.
Sélectionnez une image avec Gen1 dans le nom, telle que Windows Server 2019 Datacenter - Gen1 (nœud Windows) ou Ubuntu Server 18.04 LTS - Gen1 (nœud Linux). Une image Gen1 est nécessaire, car certaines familles de machines virtuelles ne prennent pas en charge les images Gen2 .
Lorsque vous créez un pool de nœuds dans le Portail Azure, vérifiez que la liste des références SKU dans la section Système d’exploitation contient la version système que vous avez spécifiée.
Personnalisez votre installation de Python afin qu’elle soit préinstallée sur l’image et fonctionne pour tous les utilisateurs.
Procédures spécifiques au système
Les sections à onglets suivantes décrivent les étapes à suivre pour un nœud batch Windows ou un nœud batch Linux.
Nœud Windows : installer la version requise de Python sur le lecteur C et ajouter manuellement le chemin d’accès système
Récapitulatif de la procédure
Après avoir créé et démarré la machine virtuelle, connectez-vous à la machine virtuelle à l’aide du protocole RDP (Remote Desktop Protocol). Ensuite, installez tout ce dont vous avez besoin sur la machine virtuelle, y compris la version requise du runtime Python (par exemple, Python 3.10.4) et modifiez le chemin d’accès système. Enfin, capturez l’image de machine virtuelle, déployez-la sur un pool de lots qui utilise l’image de machine virtuelle, connectez-vous au nouveau nœud de pool de lots, puis testez-la pour vous assurer que le runtime et les packages Python préinstallés fonctionnent correctement.
Étapes de procédure
Créez une machine virtuelle Windows dans le Portail Azure en spécifiant les paramètres suivants.
Nom du paramètre Valeur de paramètre Région La même région que celle affectée à votre compte batch Image Image Windows qui a Gen1 (et non Gen2) dans le nom et est prise en charge par le service batch Exécutez l’Assistant Installation de Python, puis sélectionnez l’option Personnaliser l’installation. Ensuite, dans la page Options avancées, accédez à la zone Personnaliser l’emplacement d’installation et spécifiez un chemin d’accès sur le lecteur C.
Modifiez la variable d’environnement système pour
Path
qu’elle inclut le chemin d’installation de Python (par exemple, C :\Python\) et le chemin des packages installés par Python (par exemple, C :\Python\Scripts\).Note
L’Assistant Installation de Python ajoute ces chemins uniquement à la variable d’environnement utilisateur pour
Path
. Par conséquent, vous devez ajouter les chemins à la variable d’environnement système correspondante. Sinon, lorsque vous capturez l’image de machine virtuelle, les paramètres Python et les packages logiciels supplémentaires que l’utilisateur a installés sont supprimés de l’image.Pour ajouter ces chemins à la variable d’environnement système, procédez comme suit :
Sélectionnez Démarrer, puis recherchez et sélectionnez Paramètres.
Dans l’application Paramètres, sélectionnez Paramètres système>à propos des>paramètres système avancés.
Dans la boîte de dialogue Propriétés système, sélectionnez l’onglet Avancé , puis sélectionnez Variables d’environnement.
Dans la boîte de dialogue Variables d’environnement, accédez à la section Variables système, sélectionnez la variable Path , puis sélectionnez Modifier.
Dans la boîte de dialogue Modifier la variable d’environnement, sélectionnez Nouveau, puis entrez le chemin d’accès aux packages installés par Python. Répétez ensuite cette étape pour entrer le chemin d’accès au runtime Python.
Sélectionnez OK trois fois pour appliquer les modifications dans les trois boîtes de dialogue.
Testez l’installation de Python dans une console.
Par exemple, après avoir exécuté
python --version
pour vérifier la version de Python que vous avez installée, vous pouvez exécuter l’interpréteur Python pour essayer d’importer un package qui n’a pas encore été installé (par exemplenumpy
). Après avoir obtenu l’exception attendueModuleNotFoundError
, exécutez lapip install <package-name>
commande pour installer le package, puis réexécutez l’interpréteur Python pour importer ce package. La commande d’importation doit maintenant réussir.Capturez l’image de machine virtuelle en suivant les étapes décrites dans Créer une image d’une machine virtuelle dans le portail, mais appliquez uniquement les paramètres suivants dans la page Créer une image .
Nom du paramètre Valeur de paramètre Groupe de ressources Sélectionnez dans la liste des groupes de ressources ou sélectionnez Créer pour créer un groupe de ressources. Galerie de calcul Azure cible Sélectionnez dans la liste des galeries de calcul Azure, ou sélectionnez Créer pour créer une galerie de calcul Azure. Définition d’image de machine virtuelle cible Sélectionnez Créer nouveau. Dans la page Créer une définition d’image de machine virtuelle, entrez uniquement le nom de la définition d’image de machine virtuelle que vous souhaitez donner à l’image. (La page fournit automatiquement le Paramètres du serveur de publication, de l’offre et de la référence SKU .) Numéro de version Entrez un numéro de version que vous souhaitez donner à l’image de machine virtuelle. Après avoir appliqué les paramètres de l’image de machine virtuelle, sélectionnez Vérifier + créer pour vérifier les paramètres, puis sélectionnez Créer pour créer l’image. Cette étape crée les trois types de ressources suivants :
- Azure Compute Gallery
- Définition d’image personnalisée
- Version de définition d’image personnalisée
Une fois les trois ressources créées, procédez comme suit pour créer un pool de lots qui utilise l’image de machine virtuelle :
Dans le Portail Azure, recherchez et sélectionnez Comptes Batch.
Dans la liste des comptes batch, sélectionnez votre compte.
Dans le volet de menu de votre compte batch, sélectionnez Pools, puis sélectionnez Ajouter pour créer un pool de lots.
Dans la page Ajouter un pool , définissez les paramètres suivants, puis sélectionnez OK.
Nom du paramètre Valeur de paramètre Pool ID Nouveau nom de votre pool Type d’image Image personnalisée - Galerie d’images partagées * Galerie d’images partagées Nom de la galerie de calcul Azure cible que vous avez spécifiée lors de la création de l’image de machine virtuelle Image Nom de la définition d’image de machine virtuelle que vous avez spécifié lors de la création de l’image de machine virtuelle Version Numéro de version que vous avez spécifié lors de la création de l’image de machine virtuelle Système d’exploitation Windows Distribution du système d’exploitation windowsserver Référence SKU du système d’exploitation Code de produit de la version du système d’exploitation que vous avez sélectionnée (par exemple, microsoftwindowsserver-2019-datacenter) * Shared Image Gallery est un autre nom pour Azure Compute Gallery. Il s’agit de l’une des ressources créées lors de la création de votre image de machine virtuelle.
Une fois que le nœud du pool de lots est alloué, accédez à la page du nœud du pool de lots, puis sélectionnez Se connecter dans le menu en-tête.
Dans le volet Connexion , sélectionnez l’option Générer un utilisateur , sélectionnez le bouton Générer un utilisateur aléatoire, puis téléchargez le fichier RDP.
Exécutez le fichier RDP téléchargé pour vous connecter au nouveau nœud batch.
Testez à nouveau l’installation de Python pour vous assurer que la version préinstallée fonctionne correctement.
References
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.