Toepassingen implementeren op rekenknooppunten met Batch-toepassingspakketten
Toepassingspakketten kunnen de code in uw Azure Batch vereenvoudigen en het gemakkelijker maken om de toepassingen te beheren die door uw taken worden uitgevoerd. Met toepassingspakketten kunt u meerdere versies van toepassingen uploaden en beheren die door uw taken worden uitgevoerd, 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 reken knooppunt maken deel uit van de Batch .NET-bibliotheek. Vergelijkbare functies zijn beschikbaar in de beschikbare Batch-API's voor andere talen.
In dit artikel wordt uitgelegd hoe u toepassingspakketten uploadt en beheert in de Azure Portal. U ziet ook hoe u ze installeert 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 de Azure Batch service voor meer informatie.
Notitie
Batch-pools die zijn gemaakt vóór 5 juli 2017 bieden geen ondersteuning voor toepassingspakketten (tenzij ze zijn gemaakt na 10 maart 2016 met behulp van Cloud Services Configuration). De functie voor toepassingspakketten die hier wordt beschreven, is de functie Batch-apps die beschikbaar is in eerdere versies van de service.
Toepassingen en toepassingspakketten begrijpen
Binnen Azure Batch verwijst een toepassing naar een set binaire bestanden met versies 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 alle ondersteunende bestanden bevat. Alleen de .zip-indeling wordt ondersteund.
U kunt toepassingspakketten opgeven op groep- of taakniveau.
Groep toepassingspakketten worden geïmplementeerd op elk knooppunt in de pool. Toepassingen worden geïmplementeerd wanneer een knooppunt lid wordt van een pool en wanneer het knooppunt opnieuw wordt opgestart of er een nieuwe animatie van wordt gemaakt.
Pooltoepassingspakketten zijn geschikt wanneer alle knooppunten in een pool de taken van een job uitvoeren. U kunt een of meer toepassingspakketten opgeven die u wilt implementeren wanneer u een groep maakt. U kunt ook de pakketten van een bestaande pool toevoegen of bijwerken. Als u een nieuw pakket wilt installeren in een bestaande pool, moet u de knooppunten ervan opnieuw opstarten.
Toepassingspakketten voor taken worden alleen geïmplementeerd op een rekenpunt dat is gepland om een taak uit te voeren, net voordat de opdrachtregel van de taak wordt uitgevoerd. Als het opgegeven toepassingspakket en de versie al op het knooppunt zijn, wordt het niet opnieuw geïmplementeerd en wordt het bestaande pakket gebruikt.
Toepassingspakketten voor taken zijn handig in omgevingen met gedeelde pool, waarbij verschillende taken worden uitgevoerd op één pool en de groep niet wordt verwijderd wanneer een taak is voltooid. Als uw job minder taken dan knooppunten in de pool heeft, kunnen taaktoepassingspakketten de gegevensoverdracht minimaliseren, omdat uw toepassing alleen wordt geïmplementeerd op de knooppunten die taken uitvoeren.
Andere scenario's die kunnen profiteren van toepassingspakketten voor taken zijn taken die een grote toepassing uitvoeren, maar voor slechts enkele taken. Taaktoepassingen kunnen bijvoorbeeld nuttig zijn voor een zware voorverwerkingsfase of een samenvoegingstaak.
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 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 bronbestanden 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, dit uploaden als een blob naar Azure Storage en het bestand vervolgens uit de opdrachtregel van uw begintaak uitsetsen.
Upload en beheren van toepassingen
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 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 om toepassingspakketten te uploaden voor gebruik in uw Batch-account. U moet deze uploaden naar uw gekoppelde opslagaccount, zoals hieronder wordt beschreven.
Een opslagaccount koppelen
Als u toepassingspakketten wilt gebruiken, moet u een Azure Storage aan uw Batch-account koppelen. De Batch-service gebruikt het bijbehorende opslagaccount om uw toepassingspakketten op te slaan. U wordt aangeraden een opslagaccount te maken dat speciaal is bedoeld voor gebruik met uw Batch-account.
Als u nog geen opslagaccount hebt geconfigureerd, wordt in de Azure Portal de eerste keer dat u Toepassingen in uw Batch-account selecteert, een waarschuwing weergegeven. Als u een opslagaccount wilt koppelen aan uw Batch-account, selecteert u Storage account in het venster Waarschuwing en selecteert u Storage account opnieuw.
Nadat u de twee accounts hebt gekoppeld, kan Batch de pakketten die zijn opgeslagen in het gekoppelde Storage implementeren op uw rekenknooppunten.
Belangrijk
U kunt geen toepassingspakketten gebruiken met Azure Storage-accounts die zijn geconfigureerd met firewallregelsof als Hiërarchische naamruimte is ingesteld op Ingeschakeld.
De Batch-service gebruikt Azure Storage om uw toepassingspakketten op te slaan als blok-blobs. Er worden zoals gebruikelijk 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- Azure Storage prestatiedoelen voor opslagaccounts voor meer informatie. Om de kosten te minimaliseren, moet u rekening houden met de grootte en het aantal van uw toepassingspakketten en regelmatig afgeschafte pakketten verwijderen.
Huidige toepassingen weergeven
Als u de toepassingen in uw Batch-account wilt weergeven, selecteert u Toepassingen in het navigatiemenu links.
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 is gekoppeld aan deze toepassing.
- Standaardversie: indien van toepassing, de toepassingsversie die wordt 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 reken knooppunt wilt bekijken, gaat u naar uw Batch-account in Azure Portal. Selecteer Pools. selecteer vervolgens de pool die het reken-knooppunt bevat. Selecteer het reken-knooppunt waarop het toepassingspakket is geïnstalleerd en open de map toepassingen.
Toepassingsdetails weergeven
Als u de details voor een toepassing wilt bekijken, selecteert u deze in het venster Toepassingen. U kunt de volgende instellingen voor uw toepassing configureren.
- Updates toestaan: geeft aan of toepassingspakketten kunnen worden bijgewerkt of verwijderd. De standaardwaarde is Ja. Als deze waarde is ingesteld op Nee, kunnen bestaande toepassingspakketten niet worden bijgewerkt of verwijderd, maar kunnen er nog steeds 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 gebruiksvriendelijke 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 levert.
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 uw Batch-account en selecteer vervolgens Toevoegen.
Voer de volgende informatie in:
- Toepassings-id: de id van uw nieuwe toepassing.
- Versie:: 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 opvolgt, moeten aan de volgende vereisten voldoen:
- Op Windows knooppunten kan de id een combinatie van alfanumerieke tekens, afbreekstreepingstekens 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 case-preserving en niet-case-niet-gevoelig.
Wanneer u klaar bent, selecteert u Verzenden. Nadat het .zip 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 enige tijd duren.
Een nieuw toepassingspakket toevoegen
Als u een toepassingspakketversie voor een bestaande toepassing wilt toevoegen, selecteert u de toepassing in de sectie Toepassingen van uw Batch-account en selecteert u vervolgens Toevoegen.
Net als bij de nieuwe toepassing geeft u de versie voor het nieuwe pakket op, 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 in de sectie Toepassingen van uw Batch-account. Selecteer het beletselteken in de rij van het toepassingspakket dat u wilt wijzigen en selecteer vervolgens de actie die u wilt uitvoeren.
Als u Bijwerken selecteert, kunt u een nieuw bestand .zip uploaden. Hiermee vervangt u 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. Wanneer u OK selecteert, verwijdert Batch het .zip uit uw Azure Storage account. Als u de standaardversie van een toepassing verwijdert, wordt de instelling Standaardversie voor die toepassing verwijderd.
Toepassingen installeren op rekenknooppunten
Nu u hebt geleerd hoe u toepassingspakketten beheert in de Azure Portal, kunnen we bespreken hoe u ze implementeert op rekenknooppunten en deze uitvoert met Batch-taken.
Groeptoepassingspakketten installeren
Als u een toepassingspakket wilt installeren op alle rekenknooppunten in een pool, geeft u een of meer toepassingspakketverwijzingen op voor de pool. De toepassingspakketten die u voor een pool opgeeft, worden geïnstalleerd op elk rekenpunt dat lid wordt van de pool en op elk knooppunt dat opnieuw wordt opgestart of een installatie terug wordt gemaakt.
Geef in Batch .NET een of meer CloudPool.ApplicationPackageReferences op wanneer u een nieuwe pool of voor een bestaande pool maakt. 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 dat niet kan worden gebruikt 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. Als u het knooppunt opnieuw opstart, kunt u ook opnieuw taakplanning op het knooppunt uitvoeren.
Toepassingspakketten voor taken installeren
Net als bij een pool geeft u toepassingspakketverwijzingen op voor een taak. Wanneer een taak is gepland om te worden uitgevoerd 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 toepassingspakket voor taken 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 hebt opgegeven voor een pool of taak, worden gedownload en uitgepakt naar een benoemde map binnen de AZ_BATCH_ROOT_DIR van het knooppunt. Batch maakt ook een omgevingsvariabele die het pad naar de benoemde map bevat. De opdrachtregels van uw taak gebruiken deze omgevingsvariabele bij het verwijzen 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 (.), afbreekstreepingen (-) en cijfertekens (#) worden afgevlakt tot onderstrepingstekens in de omgevingsvariabele. Houd er ook rekening mee dat het geval van de toepassings-id behouden blijft. 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 hebt opgegeven dat versie 2.7 van application blender moet worden geïnstalleerd op Windows-knooppunten, gebruikt uw taakopdrachtregels deze omgevingsvariabele voor toegang tot de bestanden:
Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7
Geef op Linux-knooppunten de omgevingsvariabele in deze indeling op. Vlak de punten (.), afbreekstreepingen (-) en cijfertekens (#) af naar onderstrepingstekens en behoud de toepassings-id:
Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7
Wanneer u een toepassingspakket uploadt, kunt u een standaardversie opgeven die moet worden geïmplementeerd 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 standaardtoepassingsversie opgeven in Azure Portal, in het venster Toepassingen, zoals wordt weergegeven in Upload toepassingen beheren.
Als u bijvoorbeeld '2.7' in stelt als de standaardversie voor application blender en uw taken verwijzen naar de volgende omgevingsvariabele, wordt versie 2.7 uitgevoerd op uw Windows-knooppunten:
AZ_BATCH_APP_PACKAGE_BLENDER
Het volgende codefragment toont een voorbeeldtaakopdrachtregel die de standaardversie van de blendertoepassing start:
string taskId = "blendertask01";
string commandLine =
@"cmd /c %AZ_BATCH_APP_PACKAGE_BLENDER%\blender.exe -args -here";
CloudTask blenderTask = new CloudTask(taskId, commandLine);
Tip
Zie Omgevingsinstellingen voor taken voor meer informatie over omgevingsinstellingen voor reken knooppunt.
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 een installatie terug wordt gemaakt.
- Rekenknooppunten die zich al in de pool hebben wanneer u de pakketverwijzingen bijwerkt, installeren het nieuwe toepassingspakket niet automatisch. Deze rekenknooppunten moeten opnieuw worden opgestart of opnieuw worden opgestart om het nieuwe pakket te ontvangen.
- Wanneer een nieuw pakket wordt geïmplementeerd, weerspiegelen de gemaakte omgevingsvariabelen de verwijzingen naar het nieuwe toepassingspakket.
In dit voorbeeld is voor de bestaande pool versie 2.7 van de blendertoepassing geconfigureerd als een van de 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 geeft 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 hebben, moet u deze opnieuw opstarten of de installatie van de knooppunten opnieuw maken. Houd er rekening mee dat opnieuw opgestarte knooppunten bestanden van eerdere pakketimplementaties behouden.
De toepassingen in een Batch-account opneren
U kunt de toepassingen en hun pakketten in een Batch-account in een lijst zetten 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
- De Batch REST API biedt ook ondersteuning voor het werken met toepassingspakketten. Zie bijvoorbeeld het element applicationPackageReferences voor het opgeven van pakketten die moeten worden geïnstalleerd en Toepassingen voor het verkrijgen van toepassingsgegevens.
- Meer informatie over het programmatisch beheren Azure Batch accounts en quota met Batch Management .NET. Met de Batch Management .NET-bibliotheek kunt u functies voor het maken en verwijderen van een account maken voor uw Batch-toepassing of -service.