Partager via


Résoudre les retards de création de nœuds de lot lors du redémarrage ou de la réinitialisation

Cet article explique comment résoudre les retards de création de nœuds par lots lorsque vous redémarrez ou réimagez un nœud. Évitez les problèmes dans Microsoft Azure Batch qui sont causés par l’installation du runtime Python volumineux et des packages Python. Cette installation entraîne de longs retards et d’éventuelles erreurs inattendues lorsqu’un nœud de lot est ajouté pour la première fois à un pool de lots, ou lorsque le nœud est redémarré ou réimagené.

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 échoue après un temps d’installation long.

Cause

Ce problème se produit parce qu’un package Python est trop volumineux pour être utilisé comme tâche de démarrage.

Lorsque vous créez un pool de lots dans Azure Batch et ajoutez un nœud de lot, 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 exécutées par vos tâches.

  • Démarrez les processus en arrière-plan lorsque le nœud de lot est ajouté pour la première fois au pool, ou lorsque le nœud est redémarré ou réimagené.

Toutefois, pour le runtime du 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 majeure partie 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 et les versions du système d’exploitation de la machine virtuelle et du compte batch, puis préinstallez Python et ses packages avant de capturer une image Gen1.

Utilisez une image personnalisée prépackagée pour allouer des nœuds de lot. Pour obtenir des informations générales sur ce processus, consultez Utiliser une image managée pour créer un pool d’images personnalisées.

Pour éviter des délais d’installation longs et éviter l’échec de l’installation, suivez ces pratiques générales :

  • Spécifiez le même emplacement ou la même région à utiliser lorsque vous créez le compte batch et le nœud de lot de machine virtuelle.

  • Sélectionnez une image dont le nom contient Gen1 , par exemple 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 du système que vous avez spécifiée.

  • Personnalisez votre installation 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 que vous devez effectuer pour un nœud de traitement par lots Windows ou linux.

Nœud Windows : installez la version requise de Python sur le lecteur C et ajoutez manuellement le chemin d’accès système

Résumé 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), puis modifiez le chemin d’accès système. Enfin, capturez l’image de machine virtuelle, déployez-la dans un pool de lots qui utilise l’image de machine virtuelle, connectez-vous au nouveau nœud du pool de lots, puis testez-la pour vous assurer que le runtime Python et les packages préinstallés fonctionnent correctement.

Étapes de procédure

  1. Créez une machine virtuelle Windows dans le Portail Azure en spécifiant les paramètres suivants.

    Nom du paramètre Valeur du paramètre
    Région La même région que celle affectée à votre compte batch
    Image Image Windows dont le nom contient Gen1 (et non Gen2) et qui est prise en charge par le service de traitement par lots
  2. Connectez-vous à la machine virtuelle à l’aide du protocole RDP.

  3. 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 sur le lecteur C.

  4. Modifiez la variable d’environnement système pour afin Path qu’elle inclue le chemin d’installation de Python (par exemple , C :\Python\) et le chemin d’accès aux packages Installés par Python (par exemple , C :\Python\Scripts\).

    Remarque

    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 installés par l’utilisateur sont supprimés de l’image.

    Pour ajouter ces chemins à la variable d’environnement système, procédez comme suit :

    1. Sélectionnez Démarrer, puis recherchez et sélectionnez Paramètres.

    2. Dans l’application Paramètres , sélectionnez Système>à propos des>paramètres système avancés.

    3. Dans la boîte de dialogue Propriétés système , sélectionnez l’onglet Avancé , puis variables d’environnement.

    4. 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.

    5. Dans la boîte de dialogue Modifier la variable d’environnement , sélectionnez Nouveau, puis entrez le chemin des packages Python installés. Ensuite, répétez cette étape pour entrer le chemin d’accès au runtime Python.

    6. Sélectionnez OK trois fois pour appliquer les modifications dans les trois boîtes de dialogue.

  5. 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é (tel que numpy). Après avoir obtenu l’exception attendue ModuleNotFoundError , exécutez la pip 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.

  6. 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 du 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 de l’image de machine virtuelle cible Sélectionnez Créer. Dans la page Créer une définition d’image de machine virtuelle , entrez uniquement le nom de définition d’image de machine virtuelle que vous souhaitez donner à l’image. (La page fournit automatiquement les paramètres serveur de publication, offre et référence SKU .)
    Numéro de version Entrez un numéro de version que vous souhaitez donner à l’image de machine virtuelle.
  7. 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
  8. 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 :

    1. Dans la Portail Azure, recherchez et sélectionnez Comptes Batch.

    2. Dans la liste des comptes batch, sélectionnez votre compte.

    3. Dans le volet de menu de votre compte batch, sélectionnez Pools, puis ajouter pour créer un pool de lots.

    4. Dans la page Ajouter un pool , définissez les paramètres suivants, puis sélectionnez OK.

      Nom du paramètre Valeur du paramètre
      Pool ID Nouveau nom de votre pool
      Type d’image Image personnalisée - Shared Image Gallery *
      Galerie d’images partagées Nom de la galerie de calcul Azure cible que vous avez spécifié lors de la création de l’image de machine virtuelle
      Image Nom de définition de l’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 Fenêtres
      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.

  9. Une fois le nœud du pool de lots alloué, accédez à la page du nœud du pool de lots, puis sélectionnez Se connecter dans le menu de titre.

  10. 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 sélectionnez Télécharger le fichier RDP.

  11. Exécutez le fichier RDP téléchargé pour vous connecter au nouveau nœud de lot.

  12. 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.