Risolvere i ritardi di creazione dei nodi batch durante il riavvio o la ricreazione dell'immagini
Questo articolo illustra come risolvere i ritardi di creazione di nodi batch quando si riavvia o si ricrea l'immagine di un nodo. Evitare problemi in Microsoft Azure Batch causati dall'installazione del runtime Python di grandi dimensioni e dei pacchetti Python. Questa installazione causa ritardi lunghi e possibili errori imprevisti quando un nodo batch viene aggiunto per la prima volta a un pool batch o quando il nodo viene riavviato o ricreato l'immagine.
Sintomi
Quando si crea un pool di batch e si aggiunge un nodo al pool oppure si riavvia o si ricrea l'immagine del nodo, l'installazione dell'applicazione richiede troppo tempo per terminare o non riesce dopo un lungo periodo di installazione.
Causa
Questo problema si verifica perché un pacchetto Python è troppo grande da usare come attività di avvio.
Quando si crea un pool di batch in Azure Batch e si aggiunge un nodo batch, il processo consigliato consiste nell'usare un'attività di avvio per preparare l'ambiente operativo. Questa attività di avvio può eseguire le operazioni seguenti:
Installare le applicazioni eseguite dalle attività.
Avviare i processi in background quando il nodo batch viene aggiunto per la prima volta al pool o quando il nodo viene riavviato o ricreato l'immagine.
Tuttavia, per il runtime del linguaggio Python e le applicazioni che richiedono l'esecuzione di Python, il pacchetto potrebbe essere così grande da richiedere molto tempo per l'installazione dell'attività di avvio. Anche dopo che la maggior parte dell'installazione si è verificata, l'installazione potrebbe comunque non riuscire a causa di un problema imprevisto.
Soluzione
Per risolvere questo problema, trovare le corrispondenze con le macchine virtuali (VM) e i percorsi dell'account batch e le versioni del sistema operativo e preinstallare Python e i relativi pacchetti prima di acquisire un'immagine Gen1.
Usare un'immagine personalizzata preconfezionata per allocare nodi batch. Per informazioni generali su questo processo, vedere Usare un'immagine gestita per creare un pool di immagini personalizzato.
Per evitare tempi di installazione lunghi ed evitare errori di installazione, seguire queste procedure generali:
Specificare la stessa località o area da usare quando si crea l'account batch e si crea il nodo batch della macchina virtuale.
Selezionare un'immagine con Gen1 nel nome, ad esempio Windows Server 2019 Datacenter - Gen1 (nodo Windows) o Ubuntu Server 18.04 LTS - Gen1 (nodo Linux). Un'immagine gen1 è necessaria perché alcune famiglie di macchine virtuali non supportano immagini gen2 .
Quando si crea un pool di nodi nel portale di Azure, assicurarsi che l'elenco sku nella sezione Sistema operativo contenga la versione di sistema specificata.
Personalizzare l'installazione di Python in modo che venga preinstallata nell'immagine e funzioni per tutti gli utenti.
Procedure specifiche del sistema
Le sezioni a schede seguenti descrivono i passaggi da eseguire per un nodo batch Windows o un nodo batch Linux.
Nodo Windows: installare la versione richiesta di Python nell'unità C e aggiungere manualmente il percorso di sistema
Riepilogo delle procedure
Dopo aver creato e avviato la macchina virtuale, connettersi alla macchina virtuale usando Remote Desktop Protocol (RDP). Installare quindi tutto ciò che è necessario nella macchina virtuale, inclusa la versione richiesta del runtime python (ad esempio Python 3.10.4) e modificare il percorso di sistema. Infine, acquisire l'immagine della macchina virtuale, distribuirla in un pool batch che usa l'immagine della macchina virtuale, connettersi al nuovo nodo del pool batch e quindi testarla per assicurarsi che il runtime e i pacchetti Python preinstallati funzionino correttamente.
Passaggi della procedura
Creare una macchina virtuale Windows nella portale di Azure specificando le impostazioni seguenti.
Nome impostazione Valore impostazione Area La stessa area assegnata all'account batch Image Immagine di Windows con Gen1 (non Gen2) nel nome ed è supportata dal servizio batch Eseguire l'installazione guidata di Python e quindi selezionare l'opzione Personalizza installazione . Nella pagina Opzioni avanzate passare quindi alla casella Personalizza percorso di installazione e specificare un percorso nell'unità C.
Modificare la variabile di ambiente di sistema per
Path
in modo che includa il percorso di installazione di Python (ad esempio C:\Python\) e il percorso dei pacchetti installati da Python (ad esempio C:\Python\Scripts\).Note
L'installazione guidata di Python aggiunge questi percorsi solo alla variabile di ambiente utente per
Path
. Pertanto, è necessario aggiungere i percorsi alla variabile di ambiente di sistema corrispondente. In caso contrario, quando si acquisisce l'immagine della macchina virtuale, le impostazioni Python e i pacchetti software aggiuntivi installati dall'utente vengono eliminati dall'immagine.Per aggiungere questi percorsi alla variabile di ambiente di sistema, seguire questa procedura:
Selezionare Start e quindi cercare e selezionare Impostazioni.
Nell'app Impostazioni selezionare System About Advanced system settings (Sistema>informazioni sulle>impostazioni di sistema avanzate).
Nella finestra di dialogo Proprietà sistema selezionare la scheda Avanzate e quindi selezionare Variabili di ambiente.
Nella finestra di dialogo Variabili di ambiente passare alla sezione Variabili di sistema, selezionare la variabile Percorso e quindi selezionare Modifica.
Nella finestra di dialogo Modifica variabile di ambiente selezionare Nuovo e quindi immettere il percorso dei pacchetti installati in Python. Ripetere quindi questo passaggio per immettere il percorso del runtime Python.
Selezionare OK tre volte per applicare le modifiche nelle tre finestre di dialogo.
Testare l'installazione di Python in una console.
Ad esempio, dopo l'esecuzione
python --version
per verificare la versione di Python installata, è possibile eseguire l'interprete Python per provare a importare un pacchetto che non è ancora stato installato ( ad esempionumpy
). Dopo aver visualizzato l'eccezione previstaModuleNotFoundError
, eseguire ilpip install <package-name>
comando per installare il pacchetto e quindi eseguire di nuovo l'interprete Python per importare il pacchetto. Il comando di importazione dovrebbe ora avere esito positivo.Acquisire l'immagine della macchina virtuale seguendo la procedura descritta in Creare un'immagine di una macchina virtuale nel portale, ma applicare solo le impostazioni seguenti nella pagina Crea un'immagine .
Nome impostazione Valore impostazione Gruppo di risorse Selezionare dall'elenco dei gruppi di risorse oppure selezionare Crea nuovo per creare un gruppo di risorse. Raccolta di calcolo di Azure di destinazione Selezionare dall'elenco delle raccolte di calcolo di Azure oppure selezionare Crea nuovo per creare una raccolta di calcolo di Azure. Definizione dell'immagine della macchina virtuale di destinazione Selezionare Crea nuovo. Nella pagina Crea una definizione di immagine di macchina virtuale immettere solo il nome della definizione dell'immagine della macchina virtuale che si vuole assegnare all'immagine. (La pagina fornirà automaticamente il Impostazioni editore, offerta e SKU . Numero di versione Immettere un numero di versione da assegnare all'immagine della macchina virtuale. Dopo aver applicato le impostazioni dell'immagine della macchina virtuale, selezionare Rivedi e crea per verificare le impostazioni e quindi selezionare Crea per creare l'immagine. Questo passaggio crea i tre tipi di risorse seguenti:
- Raccolta di calcolo di Azure
- Definizione immagine personalizzata
- Versione della definizione dell'immagine personalizzata
Dopo aver creato le tre risorse, seguire questa procedura per creare un nuovo pool batch che usa l'immagine della macchina virtuale:
Nella portale di Azure cercare e selezionare Account Batch.
Nell'elenco degli account batch selezionare l'account.
Nel riquadro dei menu dell'account batch selezionare Pool e quindi selezionare Aggiungi per creare un pool batch.
Nella pagina Aggiungi pool impostare le impostazioni seguenti e quindi selezionare OK.
Nome impostazione Valore impostazione Pool ID Nuovo nome per il pool Tipo di immagine Immagine personalizzata - Raccolta immagini condivise * Raccolta di immagini condivise Nome della raccolta di calcolo di Azure di destinazione specificata al momento della creazione dell'immagine della macchina virtuale Image Nome della definizione dell'immagine della macchina virtuale specificato al momento della creazione dell'immagine della macchina virtuale Versione Numero di versione specificato al momento della creazione dell'immagine della macchina virtuale Sistema operativo Windows Distribuzione dei sistemi operativi windowsserver SKU del sistema operativo Codice prodotto della versione del sistema operativo selezionata( ad esempio, microsoftwindowsserver-2019-datacenter) * Raccolta immagini condivise è un altro nome per Azure Compute Gallery. Si tratta di una delle risorse create durante la creazione dell'immagine della macchina virtuale.
Dopo aver allocato il nodo del pool batch, passare alla pagina del nodo del pool batch e quindi selezionare Connetti nel menu dell'intestazione.
Nel riquadro Connetti selezionare l'opzione Genera un utente, selezionare il pulsante Genera un utente casuale e quindi selezionare Scarica file RDP.
Eseguire il file RDP scaricato per connettersi al nuovo nodo batch.
Testare di nuovo l'installazione di Python per assicurarsi che la versione preinstallata funzioni correttamente.
Riferimenti
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.