Übung: Erstellen eines Azure Batch-Auftrags in der CLI zum Ausführen Ihrer parallelen Aufgaben

Abgeschlossen

Mithilfe der Azure CLI können Sie Azure Batch-Ressourcen über die Befehlszeile erstellen und bereitstellen.

Als Architekt der Lösung für die Non-Profit-Organisation möchten Sie eine Batch-Lösung für das OCR-Szenario in Azure erstellen. Dafür testen Sie zunächst die Erstellung eines Batch-Kontos, eines Workerknotenpools, eines Auftrags und von Aufgaben. Für all das verwenden Sie die Azure CLI.

Die Azure CLI ist eine plattformübergreifende Befehlszeile zum Erstellen und Verwalten von Azure-Ressourcen. Sie verwendet eine konsistente az noun verb --properties-Syntax. Die CLI sorgt dafür, dass Azure Batch dieser Konvention folgt, weshalb alle Befehle das Format az batch verb --properties haben.

Wichtig

Die Übungen in diesem Modul sind optional. Für diese Übungen benötigen Sie ein eigenes Azure-Abonnement.

Erstellen der Azure Batch-Ressourcen

Zunächst erstellen Sie für Ihr Testszenario das Azure Batch-Konto und den Workerknotenpool. Anschließend erstellen Sie einen Batch-Auftrag und Aufgaben, die im Pool ausgeführt werden.

Erstellen einer neuen Ressourcengruppe

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie im Menü auf der linken Seite die Option Ressourcengruppen aus.

  3. Wählen Sie + Erstellen aus.

  4. Füllen Sie das Formular aus, um eine neue Ressourcengruppe für die Übung zu erstellen, und notieren Sie sich den Namen.

Erstellen eines Azure Batch-Kontos

  1. Öffnen Sie im Portal die Cloud Shell, indem Sie im oberen Menü das Symbol für die Cloud Shell (>_) auswählen. Verwenden Sie das Dropdownmenü oben im Terminalfenster, um sicherzustellen, dass Sie sich in Bash befinden.

  2. Erstellen Sie Umgebungsvariablen für Ihre Ressourcengruppe und Batch-Ressource.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. Führen Sie in Cloud Shell den folgenden Befehl aus, um ein neues Azure Batch-Konto zu erstellen. Wählen Sie einen der folgenden Standorte aus:

    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. Führen Sie den folgenden Befehl aus, um sich in Ihrem Azure Batch-Konto anzumelden:

    az batch account login \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --shared-key-auth
    
  5. Erstellen Sie einen Pool mit drei A1 v2-Standard-VMs, auf denen Ubuntu 18.04 ausgeführt wird:

    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. Führen Sie den folgenden Befehl aus, um regelmäßig zu bestimmen, ob die Knoten bereit sind:

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

    Wenn diese Abfrage anzeigt, dass die Knoten „steady“ (bereit) sind, bedeutet das, dass sie einsatzbereit sind. Wenn jedoch „resizing“ (Größe wird geändert) angezeigt wird, werden sie gerade bereitgestellt. Mithilfe der Pfeiltaste nach oben können Sie den zuletzt in Cloud Shell verwendeten Befehl wiederholen, wenn Sie den Status der Knoten mehr als einmal abfragen möchten.

  7. Führen Sie den folgenden Befehl aus, um einen Batchauftrag zu erstellen. Dies ist eine logische Gruppierung aller Aufgaben, die auf Ihren Knoten ausgeführt werden:

    az batch job create \
     --id myjob \
     --pool-id mypool
    
  8. Führen Sie den folgenden Befehl aus, um Batch-Aufgaben zu erstellen.

    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
    

    Diese Schleife erstellt eine Reihe nummerierter Batch-Aufgaben, von denen jede Informationen zur ID der Aufgabe und zur ID des Knotens ausgibt, die beteiligt sind. Wenn Sie sich genau ansehen, was hier geschieht, können Sie einige Charakteristika der Arbeitsweise von Azure Batch erkennen. Die Ausführung von Aufgaben wird automatisch auf Knoten mit verfügbarer Kapazität geplant. Die Umgebungsvariablen (AZ_BATCH_TASK_ID und AZ_BATCH_NODE_ID), die wir verwenden, um Informationen dazu anzuzeigen, welche Aufgabe gerade auf welchem Knoten ausgeführt wird, sind jedoch nur im Kontext der Aufgabenbenutzer:innen verfügbar. Dies ist ein Standardkonto, das auf jedem Knoten erstellt wird, um Aufgaben auszuführen. Außerdem wird das --command-line-Argument nicht direkt unter einer Shell ausgeführt. Sie müssen also die Shell explizit mithilfe von /bin/bash -c aufrufen, um Befehle wie printenv und grep zu verwenden.

    Diese Schleife schließt die Implementierung des Azure Batch-Auftrags ab. Sie werden das Azure Batch-Konto und den Workerknotenpool in der nächste Lerneinheit erneut verwenden, den Batch-Auftrag löschen Sie jedoch. Da ein Batch-Auftrag als Container für seine Batch-Aufgaben fungiert, werden die Aufgaben ebenfalls gelöscht.

  9. Führen Sie den folgenden Befehl in Cloud Shell aus, um den Batch-Auftrag zu löschen:

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