Toepassingen implementeren op rekenknooppunten met Batch-toepassingspakketten

Toepassingspakketten kunnen de code in uw Azure Batch-oplossing vereenvoudigen en het eenvoudiger maken om de toepassingen te beheren die door uw taken worden uitgevoerd. Met toepassingspakketten kunt u meerdere versies van de toepassingen die door uw taken worden uitgevoerd, uploaden en beheren, inclusief de ondersteunende bestanden. U kunt vervolgens automatisch een of meer van deze toepassingen implementeren op de rekenknooppunten in uw pool.

De API's voor het maken en beheren van toepassingspakketten maken deel uit van de Batch Management .NET-bibliotheek . De API's voor het installeren van toepassingspakketten op een rekenknooppunt maken deel uit van de Batch .NET-bibliotheek . Vergelijkbare functies bevinden zich in de beschikbare Batch-API's voor andere programmeertalen.

In dit artikel wordt uitgelegd hoe u toepassingspakketten uploadt en beheert in de Azure Portal. U ziet ook hoe u deze kunt installeren op de rekenknooppunten van een pool met de Batch .NET-bibliotheek .

Vereisten voor toepassingspakketten

Als u toepassingspakketten wilt gebruiken, moet u een Azure Storage-account koppelen aan uw Batch-account.

Er gelden beperkingen voor het aantal toepassingen en toepassingspakketten binnen een Batch-account en voor de maximale grootte van het toepassingspakket. Zie Quota en limieten voor Batch-services voor meer informatie.

Notitie

Batch-pools die vóór 5 juli 2017 zijn gemaakt, bieden geen ondersteuning voor toepassingspakketten (tenzij ze na 10 maart 2016 zijn gemaakt met behulp van Cloud Services Configuration). De functie voor toepassingspakketten die hier wordt beschreven, vervangt de batch-apps-functie die beschikbaar was in eerdere versies van de service.

Toepassingen en toepassingspakketten begrijpen

Binnen Azure Batch verwijst een toepassing naar een set binaire bestanden met versiebeheer die automatisch kunnen worden gedownload naar de rekenknooppunten in uw pool. Een toepassing bevat een of meer toepassingspakketten, die verschillende versies van de toepassing vertegenwoordigen.

Elk toepassingspakket is een .zip-bestand dat de binaire bestanden van de toepassing en eventuele ondersteunende bestanden bevat. Alleen de .zip-indeling wordt ondersteund.

Diagram met een weergave op hoog niveau van toepassingen en toepassingspakketten.

U kunt toepassingspakketten opgeven op groep- of taakniveau.

  • Groepstoepassingspakketten worden geïmplementeerd op elk knooppunt in de pool. Toepassingen worden geïmplementeerd wanneer een knooppunt lid wordt van een pool en wanneer het opnieuw wordt opgestart of opnieuw wordt geïnstalleerd.

    Groepstoepassingspakketten zijn geschikt wanneer alle knooppunten in een pool taken van een taak uitvoeren. U kunt een of meer toepassingspakketten opgeven die u wilt implementeren wanneer u een groep maakt. U kunt ook pakketten van een bestaande pool toevoegen of bijwerken. Als u een nieuw pakket wilt installeren in een bestaande pool, moet u de knooppunten opnieuw opstarten.

  • Taaktoepassingspakketten worden alleen geïmplementeerd op een rekenknooppunt dat is gepland om een taak uit te voeren, net voordat de opdrachtregel van de taak wordt uitgevoerd. Als het opgegeven toepassingspakket en de opgegeven versie zich al op het knooppunt bevindt, wordt het niet opnieuw geïmplementeerd en wordt het bestaande pakket gebruikt.

    Taaktoepassingspakketten zijn handig in omgevingen met gedeelde groepen, waar verschillende taken in één pool worden uitgevoerd en de pool niet wordt verwijderd wanneer een taak is voltooid. Als uw taak minder taken heeft dan knooppunten in de groep, kunnen taaktoepassingspakketten de gegevensoverdracht minimaliseren, omdat uw toepassing alleen wordt geïmplementeerd op de knooppunten waarop taken worden uitgevoerd.

    Andere scenario's die kunnen profiteren van taaktoepassingspakketten zijn taken die een grote toepassing uitvoeren, maar slechts voor een paar taken. Taaktoepassingen kunnen bijvoorbeeld handig zijn voor een zware voorverwerkingsfase of een samenvoegtaak.

Met toepassingspakketten hoeft de begintaak van uw pool geen lange lijst met afzonderlijke resourcebestanden op te geven die op de knooppunten moeten worden geïnstalleerd. U hoeft niet handmatig meerdere versies van uw toepassingsbestanden te beheren in Azure Storage of op uw knooppunten. En u hoeft zich geen zorgen te maken over het genereren van SAS-URL's om toegang te bieden tot de bestanden in uw Azure Storage-account. Batch werkt op de achtergrond met Azure Storage om toepassingspakketten op te slaan en te implementeren op rekenknooppunten.

Notitie

De totale grootte van een begintaak moet kleiner zijn dan of gelijk zijn aan 32.768 tekens, inclusief resourcebestanden en omgevingsvariabelen. Als uw begintaak deze limiet overschrijdt, is het gebruik van toepassingspakketten een andere optie. U kunt ook een .zip-bestand met uw resourcebestanden maken, het bestand als blob uploaden naar Azure Storage en het bestand vervolgens uitpakken vanaf de opdrachtregel van uw begintaak.

Toepassingen uploaden en beheren

U kunt de Azure Portal of de Batch Management API's gebruiken om de toepassingspakketten in uw Batch-account te beheren. In de volgende secties wordt uitgelegd hoe u een opslagaccount koppelt en leert u hoe u toepassingen en toepassingspakketten toevoegt en beheert in de Azure Portal.

Notitie

Hoewel u toepassingswaarden kunt definiëren in de resource Microsoft.Batch/batchAccounts van een ARM-sjabloon, is het momenteel niet mogelijk om een ARM-sjabloon te gebruiken voor het uploaden van toepassingspakketten voor gebruik in uw Batch-account. U moet deze uploaden naar uw gekoppelde opslagaccount, zoals beschreven in Een nieuwe toepassing toevoegen.

Als u toepassingspakketten wilt gebruiken, moet u een Azure Storage-account koppelen aan uw Batch-account. De Batch-service gebruikt het bijbehorende opslagaccount om uw toepassingspakketten op te slaan. In het ideale geval maakt u een opslagaccount specifiek voor gebruik met uw Batch-account.

Als u nog geen opslagaccount hebt geconfigureerd, wordt in de Azure Portal een waarschuwing weergegeven wanneer u toepassingen voor het eerst selecteert in het linkernavigatiemenu van uw Batch-account. Ga als volgt te werk om een opslagaccount te koppelen aan uw Batch-account:

  1. Selecteer het venster Waarschuwing met de tekst 'Er is geen opslagaccount geconfigureerd voor dit batchaccount'.
  2. Kies vervolgens Opslagaccount ingesteld... op de volgende pagina.
  3. Kies de koppeling Een opslagaccount selecteren in de sectie Opslagaccountgegevens .
  4. Selecteer het opslagaccount dat u wilt gebruiken met dit batchaccount in de lijst in het deelvenster Opslagaccount kiezen .
  5. Selecteer vervolgens Opslaan in de linkerbovenhoek van de pagina.

Nadat u de twee accounts hebt gekoppeld, kan Batch de pakketten die zijn opgeslagen in het gekoppelde opslagaccount, automatisch implementeren op uw rekenknooppunten.

Belangrijk

U kunt geen toepassingspakketten gebruiken met Azure Storage-accounts die zijn geconfigureerd met firewallregels of met hiërarchische naamruimte ingesteld op Ingeschakeld.

De Batch-service maakt gebruik van Azure Storage om uw toepassingspakketten op te slaan als blok-blobs. Er worden normaal kosten in rekening gebracht voor de blok-blobgegevens en de grootte van elk pakket mag niet groter zijn dan de maximale blok-blobgrootte. Zie Schaalbaarheids- en prestatiedoelen voor blob-opslag voor meer informatie. Als u de kosten wilt minimaliseren, moet u rekening houden met de grootte en het aantal van uw toepassingspakketten en regelmatig afgeschafte pakketten verwijderen.

Een nieuwe toepassing toevoegen

Als u een nieuwe toepassing wilt maken, voegt u een toepassingspakket toe en geeft u een unieke toepassings-id op.

Selecteer toepassingen in het linkernavigatiemenu van uw Batch-account en selecteer vervolgens Toevoegen.

Schermopname van het proces voor het maken van nieuwe toepassingen in de Azure Portal.

Voer de volgende informatie in:

  • Toepassings-id: de id van uw nieuwe toepassing.
  • Version': de versie voor het toepassingspakket dat u uploadt.
  • Toepassingspakket: het .zip-bestand met de binaire bestanden van de toepassing en ondersteunende bestanden die nodig zijn om de toepassing uit te voeren.

De toepassings-id en versie die u invoert, moeten aan deze vereisten voldoen:

  • Op Windows-knooppunten kan de id elke combinatie van alfanumerieke tekens, afbreekstreepjes en onderstrepingstekens bevatten. Op Linux-knooppunten zijn alleen alfanumerieke tekens en onderstrepingstekens toegestaan.
  • Mag niet meer dan 64 tekens bevatten.
  • Moet uniek zijn binnen het Batch-account.
  • Id's zijn hoofdletterbewaarbaar en niet hoofdlettergevoelig.

Wanneer u klaar bent, selecteert u Verzenden. Nadat het .zip-bestand is geüpload naar uw Azure Storage-account, wordt in de portal een melding weergegeven. Afhankelijk van de grootte van het bestand dat u uploadt en de snelheid van uw netwerkverbinding, kan dit proces enige tijd duren.

Huidige toepassingen weergeven

Als u de toepassingen in uw Batch-account wilt weergeven, selecteert u Toepassingen in het linkernavigatiemenu.

Schermopname van het menu-item Toepassingen in de Azure Portal.

Als u deze menuoptie selecteert, wordt het venster Toepassingen geopend. In dit venster worden de id van elke toepassing in uw account en de volgende eigenschappen weergegeven:

  • Pakketten: het aantal versies dat aan deze toepassing is gekoppeld.
  • Standaardversie: indien van toepassing, de toepassingsversie die is geïnstalleerd als er geen versie is opgegeven bij het implementeren van de toepassing.
  • Updates toestaan: hiermee geeft u op of pakketupdates en verwijderingen zijn toegestaan.

Als u de bestandsstructuur van het toepassingspakket op een rekenknooppunt wilt zien, gaat u naar uw Batch-account in de Azure Portal. Selecteer Pools. Selecteer vervolgens de pool met het rekenknooppunt. Selecteer het rekenknooppunt waarop het toepassingspakket is geïnstalleerd en open de map toepassingen .

Toepassingsdetails weergeven

Als u de details van een toepassing wilt zien, selecteert u deze in het venster Toepassingen . U kunt uw toepassing configureren door Instellingen te selecteren in het linkernavigatiemenu.

  • Updates toestaan: geeft aan of toepassingspakketten kunnen worden bijgewerkt of verwijderd. De standaardwaarde is Ja. Als deze optie is ingesteld op Nee, kunnen bestaande toepassingspakketten niet worden bijgewerkt of verwijderd, maar kunnen er wel nieuwe toepassingspakketversies worden toegevoegd.
  • Standaardversie: het standaardtoepassingspakket dat moet worden gebruikt wanneer de toepassing wordt geïmplementeerd als er geen versie is opgegeven.
  • Weergavenaam: een beschrijvende naam die uw Batch-oplossing kan gebruiken wanneer er informatie over de toepassing wordt weergegeven. Deze naam kan bijvoorbeeld worden gebruikt in de gebruikersinterface van een service die u via Batch aan uw klanten verstrekt.

Een nieuw toepassingspakket toevoegen

Als u een toepassingspakketversie voor een bestaande toepassing wilt toevoegen, selecteert u de toepassing op de pagina Toepassingen van uw Batch-account. Selecteer vervolgens Toevoegen.

Net als voor de nieuwe toepassing geeft u de versie op voor het nieuwe pakket, uploadt u het .zip-bestand in het veld Toepassingspakket en selecteert u vervolgens Verzenden.

Een toepassingspakket bijwerken of verwijderen

Als u een bestaand toepassingspakket wilt bijwerken of verwijderen, selecteert u de toepassing op de pagina Toepassingen van uw Batch-account. Selecteer het beletselteken in de rij van het toepassingspakket dat u wilt wijzigen. Selecteer vervolgens de actie die u wilt uitvoeren.

Schermopname van de opties voor het bijwerken en verwijderen van toepassingspakketten in de Azure Portal.

Als u Bijwerken selecteert, kunt u een nieuw .zip-bestand uploaden. Dit bestand vervangt het vorige .zip bestand dat u voor die versie hebt geüpload.

Als u Verwijderen selecteert, wordt u gevraagd om het verwijderen van die versie te bevestigen. Nadat u OK hebt geselecteerd, verwijdert Batch het .zip-bestand uit uw Azure Storage-account. Als u de standaardversie van een toepassing verwijdert, wordt de instelling Standaardversie verwijderd voor die toepassing.

Toepassingen installeren op rekenknooppunten

U hebt geleerd hoe u toepassingspakketten beheert in de Azure Portal. U kunt nu leren hoe u ze implementeert op rekenknooppunten en hoe u ze uitvoert met Batch-taken.

Groepstoepassingspakketten installeren

Als u een toepassingspakket wilt installeren op alle rekenknooppunten in een pool, geeft u een of meer toepassingspakketverwijzingen op voor de groep. De toepassingspakketten die u voor een pool opgeeft, worden geïnstalleerd op elk rekenknooppunt dat lid wordt van de pool en op elk knooppunt dat opnieuw wordt opgestart of opnieuw wordt geïnstalleerd.

Geef in Batch .NET een of meer CloudPool.ApplicationPackageReferences op wanneer u een nieuwe pool maakt of wanneer u een bestaande groep gebruikt. De klasse ApplicationPackageReference geeft een toepassings-id en versie op die moeten worden geïnstalleerd op de rekenknooppunten van een 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();

Belangrijk

Als de implementatie van een toepassingspakket mislukt, markeert de Batch-service het knooppunt als onbruikbaar en worden er geen taken gepland voor uitvoering op dat knooppunt. Als dit gebeurt, start u het knooppunt opnieuw op om de pakketimplementatie opnieuw te starten. Door het knooppunt opnieuw op te starten, kunt u ook taken opnieuw plannen op het knooppunt.

Taaktoepassingspakketten installeren

Net als bij een groep geeft u toepassingspakketverwijzingen op voor een taak. Wanneer een taak is gepland voor uitvoering op een knooppunt, wordt het pakket gedownload en geëxtraheerd net voordat de opdrachtregel van de taak wordt uitgevoerd. Als een opgegeven pakket en versie al op het knooppunt zijn geïnstalleerd, wordt het pakket niet gedownload en wordt het bestaande pakket gebruikt.

Als u een taaktoepassingspakket wilt installeren, configureert u de eigenschap CloudTask.ApplicationPackageReferences van de taak:

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"
    }
};

De geïnstalleerde toepassingen uitvoeren

De pakketten die u opgeeft voor een pool of taak, worden gedownload en geëxtraheerd naar een benoemde map binnen het AZ_BATCH_ROOT_DIR van het knooppunt. Batch maakt ook een omgevingsvariabele die het pad naar de benoemde map bevat. Uw taakopdrachtregels gebruiken deze omgevingsvariabele wanneer wordt verwezen naar de toepassing op het knooppunt.

Op Windows-knooppunten heeft de variabele de volgende indeling:

Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version

Op Linux-knooppunten is de indeling iets anders. Punten (.), afbreekstreepjes (-) en cijfertekens (#) worden afgevlakt tot onderstrepingstekens in de omgevingsvariabele. Ook blijft de case van de toepassings-id behouden. Bijvoorbeeld:

Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version

APPLICATIONID en version zijn waarden die overeenkomen met de toepassings- en pakketversie die u hebt opgegeven voor implementatie. Als u bijvoorbeeld opgeeft dat versie 2.7 van de toepassingsmixer moet worden geïnstalleerd op Windows-knooppunten, gebruiken uw taakopdrachtregels deze omgevingsvariabele om toegang te krijgen tot de bestanden:

Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7

Geef op Linux-knooppunten de omgevingsvariabele in deze indeling op. Maak de punten (.), afbreekstreepjes (-) en nummertekens (#) plat tot onderstrepingstekens en behoud het hoofdlettergebruik van de toepassings-id:

Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7

Wanneer u een toepassingspakket uploadt, kunt u een standaardversie opgeven voor implementatie op uw rekenknooppunten. Als u een standaardversie voor een toepassing hebt opgegeven, kunt u het versieachtervoegsel weglaten wanneer u naar de toepassing verwijst. U kunt de standaardversie van de toepassing opgeven in de Azure Portal in het venster Toepassingen, zoals wordt weergegeven in Toepassingen uploaden en beheren.

Als u bijvoorbeeld '2.7' instelt als de standaardversie voor toepassingsmixer en uw taken verwijzen naar de volgende omgevingsvariabele, gebruiken uw Windows-knooppunten versie 2.7:

AZ_BATCH_APP_PACKAGE_BLENDER

In het volgende codefragment ziet u een voorbeeldtaakopdrachtregel waarmee de standaardversie van de blendertoepassing wordt gestart:

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

De toepassingspakketten van een groep bijwerken

Als een bestaande groep al is geconfigureerd met een toepassingspakket, kunt u een nieuw pakket voor de groep opgeven. Dit betekent:

  • De Batch-service installeert het zojuist opgegeven pakket op alle nieuwe knooppunten die lid worden van de pool en op elk bestaand knooppunt dat opnieuw wordt opgestart of opnieuw wordt geïnstalleerd.
  • Rekenknooppunten die zich al in de pool bevinden wanneer u de pakketverwijzingen bijwerkt, installeren het nieuwe toepassingspakket niet automatisch. Deze rekenknooppunten moeten opnieuw worden opgestart of opnieuw worden geïnstalleerd om het nieuwe pakket te ontvangen.
  • Wanneer een nieuw pakket wordt geïmplementeerd, weerspiegelen de gemaakte omgevingsvariabelen de nieuwe toepassingspakketverwijzingen.

In dit voorbeeld heeft de bestaande pool versie 2.7 van de blendertoepassing geconfigureerd als een van de bijbehorende CloudPool.ApplicationPackageReferences. Als u de knooppunten van de pool wilt bijwerken met versie 2.76b, geeft u een nieuwe ApplicationPackageReference op met de nieuwe versie en voert u de wijziging door.

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();

Nu de nieuwe versie is geconfigureerd, installeert de Batch-service versie 2.76b op elk nieuw knooppunt dat lid wordt van de pool. Als u 2.76b wilt installeren op de knooppunten die zich al in de pool bevinden, start u ze opnieuw op of maakt u ze opnieuw. Opnieuw opgestarte knooppunten behouden bestanden uit eerdere pakketimplementaties.

De toepassingen in een Batch-account weergeven

U kunt de toepassingen en de bijbehorende pakketten in een Batch-account weergeven met behulp van de methode 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);
    }
}

Volgende stappen