Condividi tramite


Distribuzione di applicazioni in nodi di Azure in un cluster HPC Windows

A partire da HPC Pack 2008 R2 con Service Pack 1 (SP1), HPC Pack include utilità e meccanismi predefiniti che consentono agli amministratori del cluster di distribuire applicazioni (ad esempio file eseguibili, servizi SOA, file XLL e cartelle di lavoro di Microsoft Excel abilitate per il cluster) in nodi di Azure aggiunti a un cluster locale in uno scenario di "burst" di Azure. Per impostazione predefinita, i nodi di Azure non possono accedere direttamente alle risorse locali e alle cartelle condivise, quindi i metodi usati per distribuire applicazioni nei nodi di Azure differiscono dai metodi usati per distribuire applicazioni in locale. Inoltre, i nodi di Azure aggiunti a un cluster WINDOWS HPC vengono distribuiti e riprovisionati in modo dinamico, quindi i metodi consigliati per la distribuzione delle applicazioni consentono di garantire che le applicazioni siano automaticamente disponibili nelle nuove istanze del nodo di Azure.

Considerazioni sui carichi di lavoro delle applicazioni HPC per il burst di Azure

Prima di distribuire le applicazioni nei nodi di Azure, valutare se i carichi di lavoro HPC esistenti o pianificati verranno eseguiti o ridimensionati in modo efficiente in Azure. Le considerazioni dettagliate sulla migrazione, lo sviluppo e la progettazione per le applicazioni HPC eseguite in uno scenario burst di Azure non rientrano nell'ambito di questo argomento. Inoltre, le funzionalità della piattaforma Azure sono in continua evoluzione. Di seguito sono tuttavia riportate le caratteristiche correnti del burst dei carichi di lavoro di Azure con HPC Pack, in particolare per le distribuzioni su larga scala dei nodi di Azure:

  • calcoli a nodo singolo altamente distribuiti questi includono molti processi di sweep parametrici e determinati processi di architettura orientata ai servizi. Altri tipi di processo, inclusi i processi MPI (Message Passing Interface), possono essere eseguiti in una configurazione burst di Azure, ma possono richiedere la selezione di una dimensione di istanza a elevato utilizzo di calcolo che supporta la rete RDMA di Azure. Per informazioni generali sui tipi di processi HPC, vedere Understanding Parallel Computing Jobs.

  • tempo di calcolo supera il tempo di spostamento dei dati alcuni carichi di lavoro HPC richiedono il caricamento di grandi quantità di dati in Azure per il calcolo o restituiscono grandi quantità di dati elaborati. Assicurarsi che lo spostamento dei dati non sia un collo di bottiglia nel flusso di lavoro HPC.

  • l'accesso ai dati basato su file applicazioni HPC esistenti che accedono ai file di dati in locale possono essere facilmente migrate per l'esecuzione in Azure accedendo ai file di dati caricati nell'archiviazione BLOB di Azure. È possibile sviluppare nuove applicazioni HPC per accedere alla varietà di tipi di archiviazione in Azure. Tuttavia, a seconda della riservatezza dei dati, dei requisiti legali, delle considerazioni sui costi e di altri fattori, potrebbe non essere possibile archiviare i dati dell'applicazione in Azure.

  • modello di carico di lavoro "Bursty" Lo scenario burst di Azure è ideale per carichi di lavoro a elevato utilizzo di risorse che non sono facilmente completati usando le risorse fisse di un cluster locale. I carichi di lavoro possono includere picchi di calcolo irregolari, processi pianificati regolarmente o processi occasionali.

Per altre informazioni sull'esecuzione di applicazioni nei nodi di Azure, vedere linee guida per l'esecuzione di applicazioni HPC nei nodi di Azure.

Selezione di un metodo per distribuire applicazioni e dati nei nodi di Azure

Il metodo usato per distribuire applicazioni e dati (in alcuni casi) nei nodi di Azure dipende da ciò che è necessario per installare l'applicazione, come descritto nella tabella seguente.

Requisiti di installazione metodo Disponibilità
L'installazione può essere eseguita copiando i file e tutte le dipendenze, ad esempio DLL o file di configurazione nel nodo. - Pacchetti e fasi dell'amministratore per l'archiviazione di Azure usando i comandi hpcpack .
Vedere Uso di hpcpack e hpcsync.
- L'amministratore distribuisce i nodi di Azure. I pacchetti vengono distribuiti (copiati ed estratti) automaticamente in nuove istanze del nodo di Azure oppure l'amministratore può distribuire manualmente se i nodi sono già in esecuzione.
Vedere Burst to Azure Worker Instances with Microsoft HPC Pack.
HPC Pack 2008 R2 con SP1
L'installazione richiede l'esecuzione invisibile all'utente di un programma di installazione o richiede passaggi di configurazione aggiuntivi, ad esempio l'impostazione delle variabili di ambiente o la creazione di eccezioni del firewall. - Pacchetti e fasi dell'amministratore per file o programmi di installazione in Archiviazione di Azure usando i comandi hpcpack .
Vedere Uso di hpcpack e hpcsync.
- L'amministratore specifica uno script di avvio nel modello di nodo di Azure per configurare l'ambiente o eseguire i comandi di installazione.
Vedere Usare uno script di avvio per i nodi di Azure.
- L'amministratore distribuisce i nodi di Azure. I pacchetti vengono distribuiti automaticamente in nuove istanze del nodo di Azure e quindi lo script di avvio viene eseguito come parte del processo di provisioning.
Vedere Burst to Azure Worker Instances with Microsoft HPC Pack.
HPC Pack 2008 R2 con SP2
L'installazione e la distribuzione dei dati nei nodi di Azure possono verificarsi durante un'attività di preparazione al momento dell'esecuzione del processo. - L'amministratore usa uno strumento di archiviazione di Azure, ad esempio AzCopy per caricare programmi di installazione e file di dati in un contenitore nell'archiviazione BLOB di Azure.
- Pacchetti di amministratori e fasi aggiuntivi di file o programmi di installazione in Archiviazione di Azure usando i comandi hpcpack.
Vedere Uso di hpcpack e hpcsync.
- L'amministratore specifica uno script di avvio nel modello di nodo di Azure per configurare l'ambiente o eseguire i comandi di installazione.
Vedere Usare uno script di avvio per i nodi di Azure.
- L'amministratore distribuisce i nodi di Azure. I pacchetti vengono distribuiti automaticamente in nuove istanze del nodo di Azure e quindi lo script di avvio viene eseguito come parte del processo di provisioning.
Vedere Burst to Azure Worker Instances with Microsoft HPC Pack.
- L'amministratore crea un processo con un'attività di preparazione del nodo per eseguire passaggi di installazione aggiuntivi o per scaricare i dati da un contenitore di archiviazione BLOB di Azure.
Vedere Definire un'attività di preparazione del nodo - Gestione processi.
HPC Pack 2008 R2 con SP1
L'installazione richiede passaggi che non sono facili da creare tramite script e l'accesso ai dati dell'applicazione e dell'applicazione da un'unità durevole in Azure.

-
- L'amministratore usa gli strumenti di Windows per creare un disco rigido virtuale (VHD) e installa l'applicazione e tutti i dati dell'applicazione necessari nel disco rigido virtuale.
- L'amministratore scollega il disco rigido virtuale e usa il comando di caricamento hpcpack per caricare il disco rigido virtuale come BLOB di pagine nell'archiviazione di Azure.
Vedere Uso di hpcpack e hpcsync.
- L'amministratore specifica il disco rigido virtuale dell'applicazione che si trova in Archiviazione di Azure durante la configurazione del modello di nodo di Azure.
Vedere montare un disco rigido virtuale dell'applicazione nei nodi del ruolo di lavoro di Azure.
- Facoltativamente, l'amministratore specifica uno script di avvio per configurazioni aggiuntive o per configurare cartelle condivise in uno o più nodi della distribuzione.
Vedere Usare uno script di avvio per i nodi di Azure.
- L'amministratore distribuisce i nodi di Azure. Vengono create istanze del nodo di Azure che montano il disco rigido virtuale dell'applicazione, tutti i pacchetti nella risorsa di archiviazione vengono distribuiti automaticamente nei nodi e quindi lo script di avvio viene eseguito come parte del processo di provisioning.
Vedere Burst to Azure Worker Instances with Microsoft HPC Pack.
HPC Pack 2012

Uso di hpcpack e hpcsync

Ogni distribuzione del nodo di Azure è associata a un account di archiviazione di Azure specificato nel modello di nodo. Un amministratore del cluster può eseguire lo staging dei file, ad esempio applicazioni, servizi SOA, XLLs, cartelle di lavoro di Excel abilitate per cluster e utilità, all'account di archiviazione usando i comandi hpcpack. È possibile usare hpcpack create per creare file o cartelle in un formato compresso (.zip) che può essere caricato nell'archiviazione di Azure. Ogni applicazione, servizio SOA o XLL deve essere inserita in un pacchetto separatamente e il pacchetto deve includere eventuali dipendenze necessarie, ad esempio DLL o file di configurazione. È quindi possibile usare caricamento hpcpack per caricare il pacchetto nell'account di archiviazione. È possibile eseguire i comandi hpcpack dal nodo head o in un computer in cui sono installate le utilità client HPC.

Tutti i pacchetti nell'account di archiviazione vengono distribuiti automaticamente in nuove istanze del nodo di Azure durante il processo di provisioning. Ciò si verifica quando si distribuisce un set di nodi di Azure usando le utilità di gestione HPC e se le istanze del nodo vengono riprovisionate automaticamente dal sistema Window Azure. Il comando hpcsync viene eseguito in ogni nodo di Azure e copia tutti i pacchetti dall'archiviazione al nodo e quindi estrae i file. Se si caricano pacchetti nell'archiviazione dopo l'avvio dei nodi di Azure, è possibile distribuire i pacchetti eseguendo manualmente il comando hpcsync in ogni nodo di Azure.

Nota

Se si creano più modelli di nodo di Azure che fanno riferimento allo stesso account di archiviazione, gli stessi file di staging verranno distribuiti in tutti i set di nodi di Azure. Per distribuire file diversi in set di nodi diversi, creare un account di archiviazione di Azure separato per ogni modello di nodo di Azure.

Il diagramma seguente illustra il flusso di lavoro e i meccanismi di base per la copia delle applicazioni nei nodi di Azure:

Copiare applicazioni in nodi di Azure in Windows HPC

Per impostazione predefinita, hpcsync estrae i file in un percorso specificato dalla variabile di ambiente CCP_PACKAGE_ROOT. Questa variabile viene impostata nei nodi di Azure durante il processo di provisioning. I file estratti vengono inseriti in una cartella determinata come segue: %CCP_PACKAGE_ROOT%\<packageName>\<uploadTimeStamp>. Si tratta del percorso previsto per i servizi SOA, le xlls e le cartelle di lavoro di Excel. Tuttavia, ciò non è utile per le applicazioni che gli utenti del cluster chiameranno nelle righe di comando. Per semplificare la struttura di cartelle per i file eseguibili, è possibile impostare la proprietà relativa path per il pacchetto quando la si carica nella risorsa di archiviazione. hpcsync applica il percorso relativo durante l'estrazione dei file, in modo che il percorso sia determinato nel modo seguente: %CCP_PACKAGE_ROOT%\<relativePath>. Gli utenti possono quindi specificare il percorso dell'applicazione come nell'esempio seguente di un comando di invio del processo: job submit %CCP_PACKAGE_ROOT%\myRelativePath\myapp.exe

Di seguito sono riportate considerazioni importanti su hpcsync e CCP_PACKAGE_ROOT:

  • Nei nodi di lavoro di Azure la cartella %CCP_PACKAGE_ROOT% viene creata in una partizione disco da 10 GB. Ciò significa che tutti i file dell'applicazione in un'istanza del nodo non possono superare 10 GB. Se un'applicazione dispone di notevoli file di input e output, è possibile usare uno script di avvio per concedere autorizzazioni utente sulle unità C:\ in modo che gli utenti possano scrivere in tutto lo spazio disponibile sul nodo.

  • Quando si esegue hpcsync manualmente, è possibile eseguire l'override del percorso predefinito (%CCP_PACKAGE_ROOT%). Ad esempio, è possibile creare una cartella in ogni nodo di Azure e quindi specificare tale percorso quando si esegue hpcsync. Tutti i pacchetti verranno estratti in tale cartella. Tuttavia, tutte le nuove istanze del nodo distribuite (o automaticamente di cui viene eseguito il provisioning) non includeranno tale cartella e i pacchetti verranno distribuiti automaticamente nel percorso predefinito. Inoltre, gli utenti del cluster dispongono solo delle autorizzazioni di scrittura per le cartelle in %CCP_PACKAGE_ROOT%. A meno che non si modifichi le autorizzazioni per le cartelle nei nodi di Azure, solo gli amministratori possono eseguire applicazioni al di fuori di %CCP_PACKAGE_ROOT%.

  • Quando hpcsync distribuisce un pacchetto, nessuno dei file estratti può avere una lunghezza del percorso completo superiore a 256 caratteri. Le directory radice in cui i file estratti sono temporaneamente e infine inseriti possono contenere fino a 136 caratteri, lasciando 120 caratteri per il nome file, le sottodirectory (se presenti) e il relativoPath (se specificato). Se il percorso dei file estratti supera i 256 caratteri, la distribuzione del pacchetto ha esito negativo.

Il meccanismo di hpcsync è sufficiente per distribuire servizi SOA, file XLL e applicazioni che possono essere installati semplicemente copiando i file in un nodo. Se è necessario eseguire un programma di installazione per installare un'applicazione o se l'applicazione richiede passaggi di configurazione aggiuntivi, ad esempio l'impostazione di variabili di ambiente, l'aggiunta di eccezioni del firewall, la modifica delle autorizzazioni per le cartelle o la creazione di cartelle, è possibile includere uno script di avvio nel modello di nodo. Questo script verrà eseguito durante il processo di provisioning dopo l'esecuzione di hpcsync e può essere usato per configurare i nodi ed eseguire i passaggi di installazione dell'applicazione necessari.

Come preparare i file dell'applicazione in Archiviazione di Azure

Questa sezione fornisce informazioni su come creare un pacchetto di applicazioni e inviarle ad Archiviazione di Azure usando hpcpack. I pacchetti a fasi vengono distribuiti automaticamente nelle nuove istanze del nodo di Azure di cui è stato effettuato il provisioning o che vengono automaticamente sottoposte a provisioning dal sistema di Azure.

Nota

È necessario essere un amministratore del cluster o avere almeno l'ID sottoscrizione di Azure e la chiave dell'account di archiviazione per preparare i file nell'archiviazione di Azure.

Requisiti

Se si crea un pacchetto di un servizio SOA:

  • Il nome del pacchetto deve essere il nome del servizio SOA, ovvero il nome del servizio specificato dal client SOA nel costruttore SessionStartInfo. Ad esempio, serviceName.zip o serviceName_serviceVersion.zip.

  • È necessario includere la DLL del servizio, tutte le DLL dipendenti e i file di configurazione del servizio nel pacchetto.

  • Il file di configurazione del servizio deve essere distribuito anche nel nodo head. Tutte le impostazioni sono determinate dalla copia locale del file di configurazione.

  • Non specificare un percorso relativo quando si carica il pacchetto. I servizi SOA devono essere decompressi nel percorso predefinito.

Se si crea un pacchetto di un file XLL:

  • Il nome del pacchetto deve essere il nome del file XLL. Ad esempio, XLLName.zip.

  • Se XLL ha dipendenze, inserire i file XLL e di supporto in una cartella e creare un pacchetto della cartella. L'XLL deve trovarsi nel livello superiore della cartella (non in una sottocartella).

  • Non specificare un percorso relativo quando si carica il pacchetto. Le xlls devono essere decompresse nel percorso predefinito.

Se si crea un pacchetto di una cartella di lavoro di Excel:

  • Il nome del pacchetto deve essere il nome della cartella di lavoro. Ad esempio, workbookName.zip.

  • Se la cartella di lavoro presenta dipendenze, inserire la cartella di lavoro e i file di supporto in una cartella e creare un pacchetto della cartella. La cartella di lavoro deve trovarsi nel livello superiore della cartella (non in una sottocartella).

  • Non specificare un percorso relativo quando si carica il pacchetto. Le cartelle di lavoro devono essere decompresse nel percorso predefinito.

Se si crea un pacchetto di un file eseguibile ,ad esempio un'applicazione MPI, il programma di installazione dell'applicazione o l'utilità che verrà chiamata da uno script di avvio:

  • È necessario includere tutte le DLL o i file dipendenti nel pacchetto.

  • Quando si carica il pacchetto, specificare la proprietà percorso relativo.

Se si crea un pacchetto di uno script di avvio:

  • Il nome del pacchetto deve essere il nome dello script di avvio. Ad esempio, startup.bat.zip.

  • Non specificare un percorso relativo quando si carica il pacchetto. Lo script di avvio deve essere decompresso nel percorso predefinito.

  • Se lo script di avvio chiama programmi di installazione o utilità, assicurarsi di creare un pacchetto e di preparare i file necessari separatamente.

Passaggi

Come esempi, le procedure seguenti illustrano come eseguire il staging di vari tipi di file dell'applicazione in Archiviazione di Azure.

Nota

Non è necessario un prompt dei comandi con privilegi elevati (esegui come amministratore) per eseguire hpcpack create. Tuttavia, caricamento hpcpack richiede l'elevazione dei privilegi. Per eseguire le procedure seguenti, eseguire i comandi in una finestra del prompt dei comandi con privilegi elevati.

Per creare un pacchetto e preparare un servizio SOA in Archiviazione di Azure
  1. Se il servizio SOA non è già registrato e distribuito nel cluster locale, registrare il servizio SOA inserendo una copia del file di configurazione del servizio nella cartella di registrazione del servizio nel nodo head (in genere si tratta di %CCP_HOME%\ServiceRegistration). Per informazioni dettagliate, vedere Distribuire e modificare il file di configurazione del servizio.

  2. Copiare il file di configurazione del servizio, l'assembly del servizio e le DLL dipendenti in una cartella vuota. Ad esempio, copiare i file in una cartella denominata C:\myFiles\myServiceFiles.

  3. Al prompt dei comandi con privilegi elevati eseguire hpcpack create e specificare un nome per il pacchetto e la cartella che contiene i file del servizio.

    Importante

    Il nome del pacchetto deve essere il nome del servizio SOA, ovvero il nome del servizio specificato dal client SOA nel costruttore SessionStartInfo.

    Ad esempio, per creare un pacchetto del contenuto di C:\myFiles\myServiceFiles come myServiceName.zip (e salvare il pacchetto in una cartella denominata AzurePackages):

    hpcpack create C:AzurePackagesmyServiceName.zip C:myFilesmyServiceFiles

  4. Eseguire caricamento hpcpack per caricare il pacchetto in Archiviazione di Azure usando il comando seguente, dove myHeadNode è il nome del nodo head e myAzureTemplate è il nome del modello usato per distribuire i nodi di Azure. Ad esempio:

    hpcpack upload C:\AzurePackages\myServiceName.zip /nodetemplate:myAzureNodeTemplate /scheduler:myHeadNode

Per creare un pacchetto e preparare un file XLL o una cartella di lavoro di Excel in Archiviazione di Azure
  1. Se la cartella di lavoro o XLL presenta dipendenze da DLL o altri file, copiare la cartella di lavoro o XLL e le relative dipendenze in una cartella, ad esempio c:\myFiles\myExcelFiles.

  2. Al prompt dei comandi con privilegi elevati eseguire hpcpack create per creare il pacchetto XLL o la cartella di lavoro. Specificare un nome per il pacchetto e specificare la cartella di lavoro o XLL. Il nome del pacchetto deve essere il nome del file XLL o della cartella di lavoro di Excel.

    Ad esempio, se la cartella di lavoro o XLL presenta dipendenze, creare un pacchetto dell'intera cartella e salvare il pacchetto in una cartella denominata AzurePackages):

    hpcpack create C:\AzurePackages\myXLL.zip C:\myFiles\myExcelFiles

    Se la cartella di lavoro o XLL non ha dipendenze, è possibile crearne direttamente il pacchetto. Ad esempio, per creare un pacchetto C:\myFiles\myXLL.xll come myXLL.zip:

    hpcpack create C:\AzurePackages\myXLL.zip C:\myFiles\myXLL.xll

  3. Eseguire caricamento hpcpack per caricare il pacchetto in Archiviazione di Azure usando il comando seguente, dove myHeadNode è il nome del nodo head e myAzureTemplate è il nome del modello usato per distribuire i nodi di Azure. Ad esempio:

    hpcpack upload C:\AzurePackages\myXLL.zip /nodetemplate:myAzureNodeTemplate /scheduler:myHeadNode

Per creare un pacchetto e preparare un file eseguibile in Archiviazione di Azure
  1. Copiare il file eseguibile e qualsiasi dipendenza o DLL in una cartella, ad esempio C:\myFiles\myAppFiles.

  2. Al prompt dei comandi con privilegi elevati eseguire hpcpack create per creare un pacchetto dei file dell'applicazione. Specificare un nome per il pacchetto e specificare la cartella che contiene i file dell'applicazione.

    Ad esempio, per creare un pacchetto del contenuto di c:\myFiles\myAppFiles come myApp.zip (e salvare il pacchetto in una cartella denominata AzurePackages):

    hpcpack create c:\AzurePackages\myApp.zip c:\myFiles\myAppFiles

  3. Caricare il pacchetto in Archiviazione di Azure usando il comando seguente, dove myHeadNode è il nome del nodo head e myAzureTemplate è il nome del modello usato per distribuire i nodi di Azure. Specificare un percorso relativo per i file dell'applicazione. Ad esempio:

    hpcpack upload c:\AzurePackages\myApp.zip /scheduler:myHeadNode /nodetemplate:myAzureTemplate /relativepath:myApp

Come distribuire pacchetti di staging nei nodi di Azure

I pacchetti di staging in Archiviazione di Azure vengono distribuiti automaticamente nelle nuove istanze del nodo. È possibile distribuire manualmente i pacchetti, ad esempio per verificare di avere tutte le dipendenze necessarie in un pacchetto prima di automatizzare la distribuzione in tutti i nuovi nodi o di distribuire pacchetti in nodi già in esecuzione. È possibile usare clusrun e hpcsync per distribuire i file dall'account di archiviazione di Azure ai nodi di Azure.

Ad esempio:

clusrun /nodegroup:AzureWorkerNodes hpcsync

Per visualizzare un elenco di cartelle o file distribuiti nei nodi di Azure, è possibile eseguire il comando seguente:

clusrun /nodegroup:AzureWorkerNodes dir %CCP_PACKAGE_ROOT% /s

Accesso ai file dai nodi di Azure

Se l'applicazione HPC richiede l'accesso ai file, di seguito sono riportate le opzioni per accedere ai file dalle applicazioni distribuite ai nodi di Azure.

Opzione Prerequisiti Note
Unità di Azure L'amministratore configura e monta un disco rigido virtuale dell'applicazione nei nodi di Azure.

Vedere montare un disco rigido virtuale dell'applicazione nei nodi del ruolo di lavoro di Azure.
- L'unità viene copiata e memorizzata nella cache in locale in ogni nodo
- L'unità può essere scritta da un solo nodo alla volta
File server nella macchina virtuale di Azure L'amministratore configura un'istanza di macchina virtuale di Azure, collega un disco dati alla macchina virtuale, abilita il ruolo File Server e crea una cartella di condivisione file.

Vedere Come configurare un file server di macchine virtuali di Azure e usarlo da processi di calcolo di Windows HPC Server.
- L'accesso da processi alle risorse del file server richiede l'accesso utente autenticato.
- Fornisce la compatibilità SMB per le applicazioni esistenti
- Fornisce un massimo di 16 TB di dati per server
- Limita la larghezza di banda a 800 MB/s
Eseguire il mirroring dei file locali nell'archivio BLOB di Azure L'amministratore usa uno strumento di archiviazione di Azure, ad esempio AzCopy per eseguire il mirroring dei file locali in un contenitore nell'archiviazione BLOB di Azure.
- Il mirroring dei dati dall'ambiente locale ad Azure comporta un sovraccarico.
Accedere direttamente all'archiviazione BLOB di Azure L'applicazione è progettata per eseguire operazioni di accesso ai dati direttamente nei BLOB di Azure - Offre la massima scalabilità delle opzioni disponibili

Riferimenti aggiuntivi