Esercizio - Creare un processo di Azure Batch nell'interfaccia della riga di comando per eseguire l'attività parallela

Completato

L'interfaccia della riga di comando di Azure consente di creare e distribuire le risorse di Azure Batch dalla riga di comando.

Come progettista della soluzione per l'organizzazione no profit, si vuole avviare la creazione di una soluzione Batch per lo scenario OCR in Azure. Come primo passaggio, si intende testare la creazione di un account Batch, un pool di nodi di lavoro, un processo e una serie di attività, il tutto tramite l'interfaccia della riga di comando di Azure.

L'interfaccia della riga di comando di Azure è una riga di comando multipiattaforma per la creazione e la gestione delle risorse di Azure. Usa una sintassi az noun verb --properties coerente. I comandi dell'interfaccia della riga di comando per la gestione di Azure Batch seguono questa convenzione, pertanto tutti i comandi hanno il formato di az batch verb --properties.

Importante

Gli esercizi in questo modulo sono facoltativi. Per completare gli esercizi, è necessario avere una sottoscrizione di Azure.

Creare le risorse di Azure Batch

Per prima cosa, si creerà l'account Azure Batch e il pool di nodi di lavoro per lo scenario di test. Verranno quindi creati un processo di Batch e le attività da eseguire nel pool.

Creare un nuovo gruppo di risorse

  1. Accedere al portale di Azure.

  2. Selezionare Gruppi di risorse nel menu a sinistra.

  3. Seleziona + Crea.

  4. Completare il modulo per creare un nuovo gruppo di risorse per l'esercizio e prendere nota del nome.

Creare l'account Azure Batch

  1. Nel portale aprire Cloud Shell selezionando l'icona di Cloud Shell (>_) nel menu in alto. Usare il menu a discesa nella parte superiore della finestra del terminale per assicurarsi di essere in Bash.

  2. Creare le variabili di ambiente per il gruppo di risorse e la risorsa batch.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. Eseguire il comando seguente in Cloud Shell per creare un account Azure Batch. Scegliere una delle località seguenti:

    westeurope,eastus,eastus2,westus,northcentralus,brazilsouth,northeurope,centralus,eastasia,japaneast,australiasoutheast,japanwest,koreasouth,koreacentral,southeastasia,southcentralus,australiaeast,southindia,centralindia,westindia,canadacentral,canadaeast,uksouth,ukwest,westcentralus,westus2,francecentral,southafricanorth
    
    az batch account create \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --location <choose a location from the preceding list>
    
  4. Eseguire il comando seguente per accedere all'account Azure Batch:

    az batch account login \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --shared-key-auth
    
  5. Creare un pool di tre macchine virtuali A1 Standard v2 che eseguono Ubuntu 18.04:

    az batch pool create \
     --id mypool --vm-size Standard_A1_v2 \
     --target-dedicated-nodes 3 \
     --image canonical:ubuntuserver:18.04-LTS \
     --node-agent-sku-id "batch.node.ubuntu 18.04"  
    
  6. Eseguire il comando seguente per determinare periodicamente se i nodi siano pronti:

    az batch pool show --pool-id mypool \
     --query "allocationState"
    

    Quando questa query mostra che i nodi sono "stabili", sono pronti per il lavoro. Se invece risultano in fase di "ridimensionamento", è in corso il provisioning. È possibile usare il tasto freccia su per ripetere il comando più recente in Cloud Shell, se si vuole eseguire più di una volta una query sullo stato dei nodi.

  7. Eseguire il comando seguente per creare un processo di Batch, un raggruppamento logico di tutte le attività che verranno eseguite sui nodi:

    az batch job create \
     --id myjob \
     --pool-id mypool
    
  8. Eseguire il comando seguente per creare attività di Batch:

    for i in {1..10}
    do
       az batch task create \
        --task-id mytask$i \
        --job-id myjob \
        --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'"
    done
    

    Questo ciclo crea una serie di attività di Batch numerate, ognuna delle quali restituisce informazioni sull'ID attività e l'ID nodo coinvolti. Esaminando attentamente quello che sta succedendo, è possibile notare alcune caratteristiche del funzionamento di Azure Batch. Le attività vengono pianificate automaticamente sui nodi con capacità disponibile. Tuttavia, le variabili di ambiente usate (AZ_BATCH_TASK_ID e AZ_BATCH_NODE_ID), per visualizzare le informazioni su quale attività è in esecuzione e su quale nodo sono disponibili solo nel contesto dell'utente dell'attività, un account predefinito creato in ogni nodo per eseguire le attività. Inoltre, l'argomento --command-line non viene eseguito direttamente in una shell, pertanto è necessario richiamare in modo esplicito la shell con /bin/bash -cper poter usare comandi quali printenv e grep.

    Questo ciclo completa l'implementazione del processo di Azure Batch. L'account Azure Batch e il pool dei nodi di lavoro verranno mantenuti per essere usati nel modulo successivo, ma si eliminerà il processo di Batch. Poiché il processo di Batch funge da contenitore per le attività di Batch, anche le attività verranno eliminate.

  9. Eseguire il comando seguente in Cloud Shell per eliminare il processo di Batch:

    az batch job delete --job-id myjob -y