Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I pacchetti dell'applicazione possono semplificare il codice nella soluzione Azure Batch e semplificare la gestione delle applicazioni eseguite dalle attività. Con i pacchetti dell'applicazione, è possibile caricare e gestire più versioni delle applicazioni eseguite dalle attività, inclusi i file di supporto. È quindi possibile distribuire automaticamente una o più di queste applicazioni nei nodi di calcolo nel pool.
Le API per la creazione e la gestione dei pacchetti dell'applicazione fanno parte della libreria .NET di gestione batch . Le API per l'installazione dei pacchetti dell'applicazione in un nodo di calcolo fanno parte della libreria Batch .NET . Le funzionalità confrontabili si trovano nelle API Batch disponibili per altri linguaggi di programmazione.
Questo articolo illustra come caricare e gestire i pacchetti dell'applicazione nel portale di Azure. Illustra anche come installarli nei nodi di calcolo di un pool con la libreria Batch .NET .
Requisiti del pacchetto dell'applicazione
Per usare i pacchetti dell'applicazione, è necessario collegare un account di archiviazione di Azure all'account Batch.
Esistono restrizioni sul numero di applicazioni e pacchetti dell'applicazione all'interno di un account Batch e sulle dimensioni massime del pacchetto dell'applicazione. Per altre informazioni, vedere Quote e limiti del servizio Batch.
Annotazioni
I pool batch creati prima del 5 luglio 2017 non supportano i pacchetti dell'applicazione (a meno che non siano stati creati dopo il 10 marzo 2016 tramite la configurazione dei servizi cloud). La funzionalità pacchetti dell'applicazione descritta di seguito sostituisce la funzionalità App Batch disponibile nelle versioni precedenti del servizio.
Informazioni sulle applicazioni e sui pacchetti dell'applicazione
All'interno di Azure Batch, un'applicazione fa riferimento a un set di file binari con controllo delle versioni che possono essere scaricati automaticamente nei nodi di calcolo nel pool. Un'applicazione contiene uno o più pacchetti dell'applicazione, che rappresentano versioni diverse dell'applicazione.
Ogni pacchetto dell'applicazione è un file .zip che contiene i file binari dell'applicazione ed eventuali file di supporto. È supportato solo il formato .zip.
È possibile specificare i pacchetti dell'applicazione a livello di pool o di attività.
I pacchetti delle applicazioni del pool vengono distribuiti a ogni nodo del pool. Le applicazioni vengono distribuite quando un nodo viene aggiunto a un pool e quando il nodo viene riavviato o rinnovato l'immagine.
I pacchetti dell'applicazione pool sono appropriati quando tutti i nodi di un pool eseguono le attività di un processo. È possibile specificare uno o più pacchetti di applicazioni da distribuire quando si crea un pool. È anche possibile aggiungere o aggiornare i pacchetti di un pool esistente. Per installare un nuovo pacchetto in un pool esistente, è necessario riavviare i relativi nodi.
I pacchetti dell'applicazione di attività vengono distribuiti solo in un nodo di calcolo pianificato per eseguire un'attività, subito prima di eseguire la riga di comando dell'attività. Se il pacchetto e la versione dell'applicazione specificati sono già presenti nel nodo, non viene ridistribuito e viene usato il pacchetto esistente.
I pacchetti applicativi di attività sono utili negli ambienti con pool condivisi, dove diversi compiti vengono eseguiti in un pool e il pool non viene eliminato al termine di un compito. Se l'incarico ha meno attività rispetto ai nodi nel pool, i pacchetti delle applicazioni dei processi possono ridurre al minimo il trasferimento dei dati, poiché l'applicazione viene distribuita solo sui nodi che eseguono attività.
Altri scenari che possono trarre vantaggio dai pacchetti dell'applicazione di attività sono i lavori che eseguono un'applicazione di grandi dimensioni, ma solo per pochi compiti. Ad esempio, le applicazioni di attività possono essere utili per una fase di pre-elaborazione pesante o un'attività di unione.
Con i pacchetti dell'applicazione, l'attività di avvio del pool non deve specificare un lungo elenco di singoli file di risorse da installare nei nodi. Non è necessario gestire manualmente più versioni dei file dell'applicazione in Archiviazione di Azure o nei nodi. E non è necessario preoccuparsi di generare URL SAS per fornire l'accesso ai file nell'account di archiviazione di Azure. Batch funziona in background con Archiviazione di Azure per archiviare i pacchetti dell'applicazione e distribuirli nei nodi di calcolo.
Annotazioni
Le dimensioni totali di un'attività di avvio devono essere inferiori o uguali a 32.768 caratteri, inclusi i file di risorse e le variabili di ambiente. Se l'attività di avvio supera questo limite, l'uso dei pacchetti dell'applicazione è un'altra opzione. È anche possibile creare un file .zip contenente i file di risorse, caricare il file come BLOB in Archiviazione di Azure e quindi decomprimerlo dalla riga di comando dell'attività di avvio.
Caricare e gestire applicazioni
È possibile usare il portale di Azure o le API di gestione batch per gestire i pacchetti dell'applicazione nell'account Batch. Le sezioni seguenti illustrano come collegare un account di archiviazione e come aggiungere e gestire applicazioni e pacchetti di applicazioni nel portale di Azure.
Annotazioni
Sebbene sia possibile definire i valori dell'applicazione nella risorsa Microsoft.Batch/batchAccounts di un modello di Resource Manager, non è attualmente possibile usare un modello di Resource Manager per caricare i pacchetti dell'applicazione da usare nell'account Batch. È necessario caricarli nell'account di archiviazione collegato come descritto in Aggiungere una nuova applicazione.
Collegare un account di archiviazione
Per usare i pacchetti dell'applicazione, è necessario collegare un account di archiviazione di Azure all'account Batch. Il servizio Batch usa l'account di archiviazione associato per archiviare i pacchetti dell'applicazione. Idealmente, è consigliabile creare un account di archiviazione specifico per l'uso con l'account Batch.
Se non è ancora stato configurato un account di archiviazione, nel portale di Azure viene visualizzato un avviso la prima volta che si seleziona Applicazioni dal menu di spostamento a sinistra nell'account Batch. Per la necessità di collegare un account di archiviazione al tuo account Batch:
- Selezionare la finestra Avviso che indica che "Nessun account di archiviazione configurato per questo account batch".
- Scegliere quindi Account di archiviazione impostato... nella pagina successiva.
- Scegliere il collegamento Selezionare un account di archiviazione nella sezione Informazioni sull'account di archiviazione .
- Selezionare l'account di archiviazione che si desidera utilizzare con questo account batch nell'elenco nel riquadro Scelta dell'account di archiviazione.
- Selezionare quindi Salva nell'angolo superiore sinistro della pagina.
Dopo aver collegato i due account, Batch può distribuire automaticamente i pacchetti archiviati nell'account di archiviazione collegato ai nodi di calcolo.
Importante
Non è possibile usare i pacchetti dell'applicazione con gli account di archiviazione di Azure configurati con regole del firewall o con lo spazio dei nomi gerarchico impostato su Abilitato.
Il servizio Batch utilizza Azure Storage per salvare i pacchetti delle applicazioni sotto forma di blocchi di BLOB. Vengono addebitati i costi normali per i dati BLOB a blocchi e le dimensioni di ogni pacchetto non possono superare le dimensioni massime del BLOB a blocchi. Per altre informazioni, vedere Obiettivi di scalabilità e prestazioni per Archiviazione BLOB. Per ridurre al minimo i costi, assicurarsi di considerare le dimensioni e il numero dei pacchetti dell'applicazione e rimuovere periodicamente i pacchetti deprecati.
Aggiungere una nuova applicazione
Per creare una nuova applicazione, aggiungere un pacchetto dell'applicazione e specificare un ID applicazione univoco.
Nell'account Batch selezionare Applicazioni dal menu di spostamento a sinistra e quindi selezionare Aggiungi.
Immettere le informazioni seguenti:
- ID applicazione: ID della nuova applicazione.
- Versione": versione per il pacchetto dell'applicazione che si sta caricando.
- Pacchetto dell'applicazione: il file .zip contenente i file binari dell'applicazione e i file di supporto necessari per eseguire l'applicazione.
L'ID applicazione e la versione immessi devono seguire questi requisiti:
- Nei nodi di Windows, l'ID può contenere qualsiasi combinazione di caratteri alfanumerici, trattini e caratteri di sottolineatura. Nei nodi di Linux, sono consentiti solo caratteri alfanumerici e caratteri di sottolineatura.
- Non può contenere più di 64 caratteri.
- Deve essere univoco all'interno dell'account Batch.
- Gli ID non fanno distinzione tra maiuscole e minuscole, ma la differenza viene mantenuta.
Al termine, selezionare Invia. Dopo aver caricato il file di .zip nell'account di archiviazione di Azure, nel portale viene visualizzata una notifica. A seconda delle dimensioni del file che si sta caricando e della velocità della connessione di rete, questo processo potrebbe richiedere del tempo.
Visualizzare le applicazioni correnti
Per visualizzare le applicazioni nell'account Batch, selezionare Applicazioni nel menu di spostamento a sinistra.
Se si seleziona questa opzione di menu, viene visualizzata la finestra Applicazioni . In questa finestra viene visualizzato l'ID di ogni applicazione nell'account e le proprietà seguenti:
- Pacchetti: numero di versioni associate all'applicazione.
- Versione predefinita: se applicabile, la versione dell'applicazione installata se non viene specificata alcuna versione durante la distribuzione dell'applicazione.
- Consenti aggiornamenti: specifica se gli aggiornamenti e le eliminazioni dei pacchetti sono consentiti.
Per visualizzare la struttura di file del pacchetto dell'applicazione in un nodo di calcolo, passare all'account Batch nel portale di Azure. Selezionare Pools. Selezionare quindi il pool che contiene il nodo di calcolo. Selezionare il nodo di calcolo in cui è installato il pacchetto dell'applicazione e aprire la cartella delle applicazioni .
Visualizzare i dettagli dell'applicazione
Per visualizzare i dettagli per un'applicazione, selezionarlo nella finestra Applicazioni . È possibile configurare l'applicazione selezionando Impostazioni nel menu di spostamento a sinistra.
- Consenti aggiornamenti: indica se i pacchetti dell'applicazione possono essere aggiornati o eliminati. Il valore predefinito è Sì. Se è impostata su No, non è possibile aggiornare o eliminare pacchetti di applicazioni esistenti, ma è comunque possibile aggiungere nuove versioni del pacchetto dell'applicazione.
- Versione predefinita: pacchetto dell'applicazione predefinito da usare quando l'applicazione viene distribuita se non è specificata alcuna versione.
- Nome visualizzato: nome descrittivo che la soluzione Batch può usare quando visualizza informazioni sull'applicazione. Ad esempio, questo nome può essere usato nell'interfaccia utente di un servizio fornito ai clienti tramite Batch.
Aggiungere un nuovo pacchetto dell'applicazione
Per aggiungere una versione del pacchetto dell'applicazione per un'applicazione esistente, selezionare l'applicazione nella pagina Applicazioni dell'account Batch. Selezionare quindi Aggiungi.
Come è stato fatto per la nuova applicazione, specificare la versione per il nuovo pacchetto, caricare il file .zip nel campo Pacchetto applicazione e quindi selezionare Invia.
Aggiornare o eliminare un pacchetto dell'applicazione
Per aggiornare o eliminare un pacchetto di applicazione esistente, selezionare l'applicazione nella pagina Applicazioni dell'account Batch. Selezionare l'icona dei puntini nella riga del pacchetto dell'applicazione da modificare. Selezionare quindi l'azione da eseguire.
Se si seleziona Aggiorna, è possibile caricare un nuovo file di .zip. Questo file sostituisce il file di .zip precedente caricato per tale versione.
Se si seleziona Elimina, viene richiesto di confermare l'eliminazione di tale versione. Dopo aver selezionato OK, Batch elimina il file .zip dall'account di archiviazione di Azure. Se si elimina la versione predefinita di un'applicazione, l'impostazione Versione predefinita viene rimossa per tale applicazione.
Installare applicazioni nei nodi di calcolo
Si è appreso come gestire i pacchetti dell'applicazione nel portale di Azure. È ora possibile apprendere come distribuirli nei nodi di calcolo ed eseguirli con le attività batch.
Installare i pacchetti dell'applicazione del pool
Per installare un pacchetto dell'applicazione in tutti i nodi di calcolo in un pool, specificare uno o più riferimenti al pacchetto dell'applicazione per il pool. I pacchetti applicativi specificati per un pool vengono installati su ogni nodo di calcolo che entra nel pool e su qualsiasi nodo riavviato o riimmaginato.
In Batch .NET specificare uno o più CloudPool.ApplicationPackageReferences quando si crea un nuovo pool o quando si usa un pool esistente. La classe ApplicationPackageReference specifica un ID applicazione e una versione da installare nei nodi di calcolo di 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();
Importante
Se la distribuzione di un pacchetto dell'applicazione non riesce, il servizio Batch contrassegna il nodo inutilizzabile e nessuna attività è pianificata per l'esecuzione in tale nodo. In questo caso, riavviare il nodo per reinizializzare la distribuzione del pacchetto. Il riavvio del nodo abilita anche la pianificazione delle attività nel nodo.
Installare i pacchetti dell'applicazione di gestione attività
Analogamente a un pool, è possibile specificare i riferimenti ai pacchetti dell'applicazione per un'attività. Quando un'attività è pianificata per l'esecuzione in un nodo, il pacchetto viene scaricato ed estratto subito prima dell'esecuzione della riga di comando dell'attività. Se nel nodo è già installato un pacchetto e una versione specificati, il pacchetto non viene scaricato e viene usato il pacchetto esistente.
Per installare un pacchetto applicativo per un'attività, configurare la proprietà CloudTask.ApplicationPackageReferences dell'attività:
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"
}
};
Eseguire le applicazioni installate
I pacchetti specificati per un pool o un'attività vengono scaricati ed estratti in una directory denominata all'interno AZ_BATCH_ROOT_DIR
del nodo. Batch crea anche una variabile di ambiente che contiene il percorso della directory denominata. Le righe di comando dell'attività usano questa variabile di ambiente quando si fa riferimento all'applicazione nel nodo.
Nei nodi Windows la variabile è nel formato seguente:
Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version
Nei nodi Linux il formato è leggermente diverso. I punti (.), i trattini (-) e i segni di numero (#) sono convertiti in underscore nella variabile di ambiente. Viene inoltre mantenuto il caso dell'ID applicazione. Per esempio:
Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version
APPLICATIONID
e version
sono valori che corrispondono alla versione dell'applicazione e del pacchetto specificata per la distribuzione. Ad esempio, se si specifica che la versione 2.7 di application blender deve essere installata nei nodi di Windows, le righe di comando dell'attività useranno questa variabile di ambiente per accedere ai relativi file:
Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7
Nei nodi Linux specificare la variabile di ambiente in questo formato. Appiattire i punti (.), i trattini (-) e i segni di numero (#) ai caratteri di sottolineatura e mantenere il caso dell'ID applicazione:
Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7
Quando si carica un pacchetto dell'applicazione, è possibile specificare una versione predefinita da distribuire nei nodi di calcolo. Se è stata specificata una versione predefinita per un'applicazione, è possibile omettere il suffisso della versione quando si fa riferimento all'applicazione. È possibile specificare la versione predefinita dell'applicazione nel portale di Azure, nella finestra Applicazioni , come illustrato in Caricare e gestire le applicazioni.
Ad esempio, se si imposta "2.7" come versione predefinita per application blender e le attività fanno riferimento alla variabile di ambiente seguente, i nodi di Windows usano la versione 2.7:
AZ_BATCH_APP_PACKAGE_BLENDER
Il frammento di codice seguente mostra una riga di comando dell'attività di esempio che avvia la versione predefinita dell'applicazione blender :
string taskId = "blendertask01";
string commandLine =
@"cmd /c %AZ_BATCH_APP_PACKAGE_BLENDER%\blender.exe -args -here";
CloudTask blenderTask = new CloudTask(taskId, commandLine);
Suggerimento
Per altre informazioni sulle impostazioni dell'ambiente dei nodi di calcolo, vedere Impostazioni dell'ambiente per le attività.
Aggiornare i pacchetti dell'applicazione di un pool
Se un pool esistente è già stato configurato con un pacchetto dell'applicazione, è possibile specificare un nuovo pacchetto per il pool. Questo significa che:
- Il servizio Batch installa il pacchetto appena specificato su tutti i nuovi nodi che si uniscono al pool e su qualsiasi nodo esistente riavviato o reimmaginato.
- I nodi di calcolo già presenti nel pool quando si aggiornano i riferimenti al pacchetto non installano automaticamente il nuovo pacchetto dell'applicazione. Questi nodi di calcolo devono essere riavviati o ricreati per ricevere il nuovo pacchetto.
- Quando viene distribuito un nuovo pacchetto, le variabili di ambiente create riflettono i riferimenti al nuovo pacchetto dell'applicazione.
In questo esempio, il pool esistente ha la versione 2.7 dell'applicazione blender configurata come una delle CloudPool.ApplicationPackageReferences. Per aggiornare i nodi del pool con la versione 2.76b, specificare un nuovo ApplicationPackageReference con la nuova versione ed eseguire il commit della modifica.
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();
Ora che la nuova versione è stata configurata, il servizio Batch installa la versione 2.76b in qualsiasi nuovo nodo che unisce il pool. Per installare 2.76b nei nodi già presenti nel pool, riavviarli o rieffettuare l'immagine. I nodi riavviati mantengono i file dalle distribuzioni di pacchetti precedenti.
Elencare le applicazioni in un account Batch
È possibile elencare le applicazioni e i relativi pacchetti in un account Batch usando il metodo 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);
}
}
Passaggi successivi
- L'API REST batch offre anche il supporto per l'uso dei pacchetti dell'applicazione. Ad esempio, vedere l'elemento applicationPackageReferences per informazioni su come specificare i pacchetti da installare e Applicazioni per ottenere informazioni sull'applicazione.
- Informazioni su come gestire a livello di codice gli account e le quote di Azure Batch con Batch Management .NET. La libreria .NET di gestione batch può abilitare le funzionalità di creazione ed eliminazione di account per l'applicazione o il servizio Batch.