Partager via


Déployer des applications sur des nœuds de calcul avec des packages d’applications Batch

Les packages d’applications peuvent simplifier le code dans votre solution Azure Batch et faciliter la gestion des applications que vos tâches exécutent. Avec les packages d’application, vous pouvez charger et gérer plusieurs versions des applications que vos tâches exécutent, y compris leurs fichiers de prise en charge. Vous pouvez ensuite déployer automatiquement une ou plusieurs de ces applications sur les nœuds de calcul de votre pool.

Les API permettant de créer et de gérer des packages d’application font partie de la bibliothèque .NET Batch Management . Les API permettant d’installer des packages d’application sur un nœud de calcul font partie de la bibliothèque Batch .NET . Les fonctionnalités comparables se trouvent dans les API Batch disponibles pour d’autres langages de programmation.

Cet article explique comment charger et gérer des packages d’application dans le portail Azure. Il montre également comment les installer sur les nœuds de calcul d’un pool avec la bibliothèque Batch .NET .

Conditions requises pour le package d’application

Pour utiliser des packages d’application, vous devez lier un compte de stockage Azure à votre compte Batch.

Il existe des restrictions sur le nombre d’applications et de packages d’application au sein d’un compte Batch et sur la taille maximale du package d’application. Pour plus d’informations, consultez Quotas et limites du service Batch.

Remarque

Les pools Batch créés avant le 5 juillet 2017 ne prennent pas en charge les packages d’application (sauf s’ils ont été créés après le 10 mars 2016 à l’aide de la configuration des services cloud). La fonctionnalité de packages d’applications décrite ici remplace la fonctionnalité Batch Apps disponible dans les versions précédentes du service.

Comprendre les applications et les packages d’applications

Dans Azure Batch, une application fait référence à un jeu de versions de fichiers binaires automatiquement téléchargeable sur les nœuds de calcul de votre pool. Une application contient un ou plusieurs packages d’application, qui représentent différentes versions de l’application.

Chaque package d’application est un fichier .zip qui contient les fichiers binaires d’application et tous les fichiers de prise en charge. Seul le format .zip est pris en charge.

Diagramme montrant une vue générale des applications et des packages d’applications.

Vous pouvez spécifier des packages d’application aux niveaux d’un pool ou d’une tâche.

  • Les packages d’application de pool sont déployés sur chaque nœud du pool. Les applications sont déployées lorsqu’un nœud joint un pool et lorsqu’il est redémarré ou réinitialisé.

    Les packages d’applications de pool sont appropriés lorsque tous les nœuds dans un pool exécutent les tâches d’un travail. Vous pouvez spécifier un ou plusieurs packages d’application à déployer lorsque vous créez un pool. Vous pouvez également ajouter ou mettre à jour les packages d’un pool existant. Pour installer un nouveau package dans un pool existant, vous devez redémarrer ses nœuds.

  • Les packages d’application de tâche sont déployés uniquement sur un nœud de calcul planifié pour exécuter une tâche, juste avant d’exécuter la ligne de commande de la tâche. Si le package d’application et la version spécifiés se trouvent déjà sur le nœud, il n’est pas redéployé et le package existant est utilisé.

    Les packages d’application de tâche sont utiles dans les environnements de pool partagé, où différents travaux s’exécutent sur un pool et que le pool n’est pas supprimé lorsqu’un travail est terminé. Si votre travail comporte moins de tâches que de nœuds dans le pool, les packages d’applications de tâche peuvent réduire le transfert de données, car votre application est déployée uniquement sur les nœuds qui exécutent des tâches.

    D’autres scénarios qui peuvent tirer parti des packages d’application de tâche sont des travaux qui exécutent une application volumineuse, mais pour seulement quelques tâches. Par exemple, les applications de tâche peuvent être utiles pour une phase de prétraitement lourde ou une tâche de fusion.

Avec les packages d’application, la tâche de démarrage de votre pool n’a pas besoin de spécifier une longue liste de fichiers de ressources individuels à installer sur les nœuds. Vous n’avez pas besoin de gérer manuellement plusieurs versions de vos fichiers d’application dans Stockage Azure ou sur vos nœuds. Et vous n’avez pas besoin de vous soucier de la génération d’URL SAP pour fournir l’accès aux fichiers dans votre compte stockage Azure. Batch fonctionne en arrière-plan avec stockage Azure pour stocker les packages d’applications et les déployer sur des nœuds de calcul.

Remarque

La taille totale d’une tâche de démarrage doit être inférieure ou égale à 32 768 caractères, y compris les fichiers de ressources et les variables d’environnement. Si votre tâche de démarrage dépasse cette limite, l’utilisation des packages d’application est une autre option. Vous pouvez également créer un fichier .zip contenant vos fichiers de ressources, charger le fichier en tant qu’objet blob dans stockage Azure, puis le décompresser à partir de la ligne de commande de votre tâche de démarrage.

Charger et gérer des applications

Vous pouvez utiliser le portail Azure ou les API de gestion Batch pour gérer les packages d’application dans votre compte Batch. Les sections suivantes expliquent comment lier un compte de stockage, vous allez apprendre à ajouter et gérer des applications et des packages d’application dans le portail Azure.

Remarque

Bien que vous puissiez définir des valeurs d’application dans la ressource Microsoft.Batch/batchAccounts d’un modèle ARM, il n’est actuellement pas possible d’utiliser un modèle ARM pour charger des packages d’application à utiliser dans votre compte Batch. Vous devez les charger dans votre compte de stockage lié, comme décrit dans Ajouter une nouvelle application.

Pour utiliser des packages d’application, vous devez lier un compte de stockage Azure à votre compte Batch. Le service Batch utilise le compte de stockage associé pour stocker vos packages d’applications. Dans l’idéal, vous devez créer un compte de stockage spécifiquement pour une utilisation avec votre compte Batch.

Si vous n’avez pas encore configuré de compte de stockage, le portail Azure affiche un avertissement la première fois que vous sélectionnez Applications dans le menu de navigation de gauche de votre compte Batch. Pour avoir besoin de lier un compte de stockage à votre compte Batch :

  1. Sélectionnez la fenêtre Avertissement qui indique « Aucun compte de stockage configuré pour ce compte batch ».
  2. Ensuite, choisissez Compte de stockage défini... dans la page suivante.
  3. Choisissez le lien Sélectionner un compte de stockage dans la section Informations sur le compte de stockage .
  4. Sélectionnez le compte de stockage que vous souhaitez utiliser avec ce compte batch dans la liste dans le volet Choisir un compte de stockage .
  5. Sélectionnez Ensuite Enregistrer dans le coin supérieur gauche de la page.

Après avoir lié les deux comptes, Batch peut déployer automatiquement les packages stockés dans le compte de stockage lié sur vos nœuds de calcul.

Important

Vous ne pouvez pas utiliser de packages d’application avec des comptes stockage Azure configurés avec des règles de pare-feu ou avec l’espace de noms hiérarchique défini sur Activé.

Le service Batch utilise Azure Storage pour stocker vos packages d’application en tant que blobs blocs. Les données des objet blob de blocs vous sont facturées normalement. De plus, la taille de chaque package ne peut pas dépasser la taille maximale de l’objet blob de blocs. Pour plus d’informations, consultez Objectifs de performance et de scalabilité pour le stockage d’objets blob. Pour réduire les coûts, veillez à prendre en compte la taille et le nombre de packages d’application, et supprimez régulièrement les packages déconseillés.

Ajouter une nouvelle application

Pour créer une application, vous ajoutez un package d’application et spécifiez un ID d’application unique.

Dans votre compte Batch, sélectionnez Applications dans le menu de navigation de gauche, puis sélectionnez Ajouter.

Capture d’écran du processus de création d’une nouvelle application dans le portail Azure.

Entrez les informations suivantes :

  • ID d’application : ID de votre nouvelle application.
  • Version : version du package d’application que vous chargez.
  • Package d’application : fichier .zip contenant les fichiers binaires d’application et les fichiers de prise en charge requis pour exécuter l’application.

L’ID d’application et la version que vous entrez doivent respecter les exigences suivantes :

  • Sur des nœuds Windows, l’ID peut contenir n’importe quelle combinaison de caractères alphanumériques, de traits d'union et de traits de soulignement. Sur des nœuds Linux, seuls les caractères alphanumériques et les traits de soulignement sont autorisés.
  • Impossible de contenir plus de 64 caractères.
  • Doit être unique dans le compte Batch.
  • Les ID conservent la casse et ne respectent pas la casse.

Quand vous êtes prêt, sélectionnez Envoyer. Une fois le fichier .zip chargé sur votre compte stockage Azure, le portail affiche une notification. En fonction de la taille du fichier que vous chargez et de la vitesse de votre connexion réseau, ce processus peut prendre un certain temps.

Afficher les applications actuelles

Pour afficher les applications de votre compte Batch, sélectionnez Applications dans le menu de navigation de gauche.

Capture d’écran de l’élément de menu Applications dans le portail Azure.

La sélection de cette option de menu ouvre la fenêtre Applications . Cette fenêtre affiche l’ID de chaque application dans votre compte et les propriétés suivantes :

  • Packages : nombre de versions associées à cette application.
  • Version par défaut : le cas échéant, la version de l’application installée si aucune version n’est spécifiée lors du déploiement de l’application.
  • Autoriser les mises à jour : spécifie si les mises à jour et suppressions de package sont autorisées.

Pour afficher la structure de fichiers du package d’application sur un nœud de calcul, accédez à votre compte Batch dans le portail Azure. Sélectionnez Pools. Sélectionnez ensuite le pool qui contient le nœud de calcul. Sélectionnez le nœud de calcul sur lequel le package d’application est installé et ouvrez le dossier des applications .

Afficher les détails de l’application

Pour afficher les détails d’une application, sélectionnez-la dans la fenêtre Applications . Vous pouvez configurer votre application en sélectionnant Paramètres dans le menu de navigation de gauche.

  • Autoriser les mises à jour : indique si les packages d’application peuvent être mis à jour ou supprimés. La valeur par défaut de ce paramètre est Oui. S’il est défini sur Non, les packages d’application existants ne peuvent pas être mis à jour ou supprimés, mais de nouvelles versions de package d’application peuvent toujours être ajoutées.
  • Version par défaut : package d’application par défaut à utiliser lorsque l’application est déployée si aucune version n’est spécifiée.
  • Nom complet : nom convivial que votre solution Batch peut utiliser lorsqu’elle affiche des informations sur l’application. Par exemple, ce nom peut être utilisé dans l’interface utilisateur d’un service que vous fournissez à vos clients via Batch.

Ajouter un nouveau package d’application

Pour ajouter une version de package d’application pour une application existante, sélectionnez l’application dans la page Applications de votre compte Batch. Ensuite, cliquez sur Ajouter.

Comme vous l’avez fait pour la nouvelle application, spécifiez la version de votre nouveau package, chargez votre fichier .zip dans le champ Package d’application, puis sélectionnez Envoyer.

Mettre à jour ou supprimer un package d’application

Pour mettre à jour ou supprimer un package d’application existant, sélectionnez l’application dans la page Applications de votre compte Batch. Sélectionnez les points de suspension dans la ligne du package d’applications que vous souhaitez modifier. Sélectionnez ensuite l’action que vous souhaitez effectuer.

Capture d’écran montrant les options de mise à jour et de suppression des packages d’application dans le portail Azure.

Si vous sélectionnez Mettre à jour, vous pouvez charger un nouveau fichier .zip. Ce fichier remplace le fichier .zip précédent que vous avez chargé pour cette version.

Si vous sélectionnez Supprimer, vous êtes invité à confirmer la suppression de cette version. Une fois que vous avez sélectionné OK, Batch supprime le fichier .zip de votre compte de stockage Azure. Si vous supprimez la version par défaut d’une application, le paramètre de version par défaut est supprimé pour cette application.

Installer des applications sur des nœuds de calcul

Vous avez appris à gérer des packages d’application dans le portail Azure. Vous pouvez maintenant apprendre à les déployer sur des nœuds de calcul et à les exécuter avec des tâches Batch.

Installer des packages d’applications de pool

Pour installer un package d’application sur tous les nœuds de calcul d’un pool, spécifiez une ou plusieurs références de package d’application pour le pool. Les packages d’application que vous spécifiez pour un pool sont installés sur chaque nœud de calcul qui joint le pool et sur n’importe quel nœud redémarré ou réinitialisé.

Dans Batch .NET, spécifiez un ou plusieurs CloudPool.ApplicationPackageReferences lorsque vous créez un pool ou lorsque vous utilisez un pool existant. La classe ApplicationPackageReference spécifie un ID d’application et une version à installer sur les nœuds de calcul d’un pool.

// Create the unbound CloudPool
CloudPool myCloudPool =
    batchClient.PoolOperations.CreatePool(
        poolId: "myPool",
        targetDedicatedComputeNodes: 1,
        virtualMachineSize: "standard_d1_v2",
        VirtualMachineConfiguration: new VirtualMachineConfiguration(
            imageReference: new ImageReference(
                                publisher: "MicrosoftWindowsServer",
                                offer: "WindowsServer",
                                sku: "2019-datacenter-core",
                                version: "latest"),
            nodeAgentSkuId: "batch.node.windows amd64");

// Specify the application and version to install on the compute nodes
myCloudPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference {
        ApplicationId = "litware",
        Version = "1.1001.2b" }
};

// Commit the pool so that it's created in the Batch service. As the nodes join
// the pool, the specified application package is installed on each.
await myCloudPool.CommitAsync();

Important

Si un déploiement de package d’application échoue, le service Batch marque le nœud inutilisable et aucune tâche n’est planifiée pour l’exécution sur ce nœud. Si cela se produit, redémarrez le nœud pour réinitialiser le déploiement du package. Le redémarrage du nœud active également la planification des tâches sur le nœud.

Installer des packages d’application de tâche

Comme pour un pool, vous spécifiez des références de package d’application pour une tâche. Lorsqu’une tâche est planifiée pour s’exécuter sur un nœud, le package est téléchargé et extrait juste avant l’exécution de la ligne de commande de la tâche. Si un package et une version spécifiés sont déjà installés sur le nœud, le package n’est pas téléchargé et le package existant est utilisé.

Pour installer un package d’application de tâche, configurez la propriété CloudTask.ApplicationPackageReferences de la tâche :

CloudTask task =
    new CloudTask(
        "litwaretask001",
        "cmd /c %AZ_BATCH_APP_PACKAGE_LITWARE%\\litware.exe -args -here");

task.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference
    {
        ApplicationId = "litware",
        Version = "1.1001.2b"
    }
};

Exécuter les applications installées

Les packages que vous spécifiez pour un pool ou une tâche sont téléchargés et extraits dans un répertoire nommé dans le AZ_BATCH_ROOT_DIR nœud. Batch crée également une variable d’environnement qui contient le chemin d’accès au répertoire nommé. Vos lignes de commande de tâche utilisent cette variable d’environnement lors du référencement de l’application sur le nœud.

Sur les nœuds Windows, la variable est au format suivant :

Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version

Sur les nœuds Linux, le format est légèrement différent. Les points (.), les traits d’union (-) et les signes numériques (#) sont aplatits en traits de soulignement dans la variable d’environnement. En outre, la casse de l’ID d’application est conservée. Par exemple:

Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version

APPLICATIONID et version sont des valeurs qui correspondent à la version de l’application et du package que vous avez spécifiées pour le déploiement. Par exemple, si vous spécifiez que la version 2.7 de blender d’application doit être installée sur les nœuds Windows, vos lignes de commande de tâche utilisent cette variable d’environnement pour accéder à ses fichiers :

Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7

Sur les nœuds Linux, spécifiez la variable d’environnement dans ce format. Aplatissez les points (.), les tirets (-) et les signes dièse (#) en traits de soulignement et conservez la casse de l’ID d’application :

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

Lorsque vous chargez un package d’application, vous pouvez spécifier une version par défaut à déployer sur vos nœuds de calcul. Si vous avez spécifié une version par défaut pour une application, vous pouvez omettre le suffixe de version lorsque vous référencez l’application. Vous pouvez spécifier la version d’application par défaut dans le portail Azure, dans la fenêtre Applications , comme indiqué dans Charger et gérer des applications.

Par exemple, si vous définissez « 2.7 » comme version par défaut du blender d’application et que vos tâches référencent la variable d’environnement suivante, vos nœuds Windows utilisent la version 2.7 :

AZ_BATCH_APP_PACKAGE_BLENDER

L’extrait de code suivant montre un exemple de ligne de commande de tâche qui lance la version par défaut de l’application blender :

string taskId = "blendertask01";
string commandLine =
    @"cmd /c %AZ_BATCH_APP_PACKAGE_BLENDER%\blender.exe -args -here";
CloudTask blenderTask = new CloudTask(taskId, commandLine);

Conseil / Astuce

Pour plus d’informations sur les paramètres d’environnement de nœud de calcul, consultez Paramètres d’environnement pour les tâches.

Mettre à jour les packages d’application d’un pool

Si un pool existant a déjà été configuré avec un package d’application, vous pouvez spécifier un nouveau package pour le pool. En d’autres termes :

  • Le service Batch installe le package nouvellement spécifié sur tous les nouveaux nœuds qui rejoignent le pool et sur tout nœud existant redémarré ou réinitialisé.
  • Les nœuds de calcul qui se trouvent déjà dans le pool lorsque vous mettez à jour les références de package n’installent pas automatiquement le nouveau package d’application. Ces nœuds de calcul doivent être redémarrés ou réinitialisés pour recevoir le nouveau paquet.
  • Lorsqu’un nouveau package est déployé, les variables d’environnement créées reflètent les références du nouveau package d’application.

Dans cet exemple, le pool existant a la version 2.7 de l’application blender configurée comme l’un de ses cloudPool.ApplicationPackageReferences. Pour mettre à jour les nœuds du pool avec la version 2.76b, spécifiez une nouvelle applicationPackageReference avec la nouvelle version et validez la modification.

string newVersion = "2.76b";
CloudPool boundPool = await batchClient.PoolOperations.GetPoolAsync("myPool");
boundPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
    new ApplicationPackageReference {
        ApplicationId = "blender",
        Version = newVersion }
};
await boundPool.CommitAsync();

Maintenant que la nouvelle version a été configurée, le service Batch installe la version 2.76b sur tout nouveau nœud qui joint le pool. Pour installer la version 2.76b sur les nœuds qui se trouvent déjà dans le pool, redémarrez ou réimagez-les. Les nœuds redémarrés conservent les fichiers des déploiements de packages précédents.

Répertorier les applications dans un compte Batch

Vous pouvez répertorier les applications et leurs packages dans un compte Batch à l’aide de la méthode ApplicationOperations.ListApplicationSummaries .

// List the applications and their application packages in the Batch account.
List<ApplicationSummary> applications = await batchClient.ApplicationOperations.ListApplicationSummaries().ToListAsync();
foreach (ApplicationSummary app in applications)
{
    Console.WriteLine("ID: {0} | Display Name: {1}", app.Id, app.DisplayName);

    foreach (string version in app.Versions)
    {
        Console.WriteLine("  {0}", version);
    }
}

Étapes suivantes