Freigeben über


Beheben von Verzögerungen bei der Erstellung von Batchknoten beim Neustart oder Reimaging

In diesem Artikel wird erläutert, wie Sie Verzögerungen bei der Erstellung von Batchknoten beheben, wenn Sie einen Knoten neu starten oder ein Reimaging durchführen. Vermeiden Sie Probleme in Microsoft Azure Batch, die durch die Installation der großen Python-Runtime und python-Pakete verursacht werden. Diese Installation verursacht lange Verzögerungen und mögliche unerwartete Fehler, wenn ein Batchknoten zum ersten Mal einem Batchpool hinzugefügt wird oder wenn der Knoten neu gestartet oder ein Reimaging durchgeführt wird.

Symptome

Wenn Sie einen Batchpool erstellen und dem Pool einen Knoten hinzufügen oder den Knoten neu starten oder ein Reimaging durchführen, dauert die Anwendungsinstallation zu lange, oder nach einer längeren Installationszeit tritt ein Fehler auf.

Ursache

Dieses Problem tritt auf, weil ein Python-Paket zu groß für die Verwendung als Startaufgabe ist.

Wenn Sie einen Batchpool in Azure Batch erstellen und einen Batchknoten hinzufügen, wird empfohlen, die Betriebsumgebung mithilfe eines Starttasks vorzubereiten. Diese Startaufgabe kann die folgenden Aktionen ausführen:

  • Installieren Sie die Anwendungen, die Von Ihren Tasks ausgeführt werden.

  • Starten Sie Hintergrundprozesse, wenn der Batchknoten zum ersten Mal dem Pool hinzugefügt wird oder wenn der Knoten neu gestartet oder ein Reimaging durchgeführt wird.

Für die Python-Sprachruntime und Anwendungen, für die Python ausgeführt werden muss, kann das Paket jedoch so groß sein, dass es lange dauert, bis die Startaufgabe installiert ist. Auch nach dem Großteil der Installation kann die Installation aufgrund eines unerwarteten Problems fehlschlagen.

Lösung

Um dieses Problem zu beheben, stimmen Sie die Speicherorte des virtuellen Computers (VM) und Batchkontos sowie die Betriebssystemversionen ab, und installieren Sie Python und die zugehörigen Pakete vor, bevor Sie ein Gen1-Image erfassen.

Verwenden Sie ein vorkonfiguriertes benutzerdefiniertes Image, um Batchknoten zuzuweisen. Allgemeine Informationen zu diesem Prozess finden Sie unter Verwenden eines verwalteten Images zum Erstellen eines benutzerdefinierten Imagepools.

Führen Sie die folgenden allgemeinen Methoden aus, um lange Installationszeiten zu vermeiden und Installationsfehler zu vermeiden:

  • Geben Sie denselben Standort oder dieselbe Region an, die beim Erstellen des Batchkontos und erstellen des VM-Batchknotens verwendet werden soll.

  • Wählen Sie ein Image mit Gen1 im Namen aus, z. B. Windows Server 2019 Datacenter – Gen1 (Windows-Knoten) oder Ubuntu Server 18.04 LTS – Gen1 (Linux-Knoten). Ein Gen1-Image ist erforderlich, da einige VM-Familien keine Gen2-Images unterstützen.

  • Wenn Sie einen Pool von Knoten im Azure-Portal erstellen, stellen Sie sicher, dass die SKU-Liste im Abschnitt Betriebssystem die angegebene Systemversion enthält.

  • Passen Sie Ihre Python-Installation so an, dass sie auf dem Image vorinstalliert wird und für alle Benutzer funktioniert.

Systemspezifische Verfahren

In den folgenden Registerkartenabschnitten werden die Schritte beschrieben, die Sie für einen Windows-Batchknoten oder einen Linux-Batchknoten ausführen müssen.

Windows-Knoten: Installieren Sie die erforderliche Version von Python auf Laufwerk C, und fügen Sie den Systempfad manuell an.

Zusammenfassung des Verfahrens

Nachdem Sie den virtuellen Computer erstellt und gestartet haben, stellen Sie mithilfe des Remotedesktopprotokolls (RDP) eine Verbindung mit dem virtuellen Computer her. Installieren Sie dann alles, was Sie auf dem virtuellen Computer benötigen, einschließlich der erforderlichen Version der Python-Runtime (z. B. Python 3.10.4), und bearbeiten Sie den Systempfad. Erfassen Sie abschließend das VM-Image, stellen Sie es in einem Batchpool bereit, der das VM-Image verwendet, stellen Sie eine Verbindung mit dem neuen Batchpoolknoten her, und testen Sie es dann, um sicherzustellen, dass die vorinstallierte Python-Runtime und die pakete ordnungsgemäß funktionieren.

Prozedurschritte

  1. Erstellen Sie eine Windows-VM im Azure-Portal, indem Sie die folgenden Einstellungen angeben.

    Name der Einstellung Einstellungswert
    Region Dieselbe Region, die Ihrem Batch-Konto zugewiesen ist
    Image Ein Windows-Image, das Gen1 (nicht Gen2) im Namen enthält und vom Batchdienst unterstützt wird
  2. Stellen Sie mithilfe von RDP eine Verbindung mit dem virtuellen Computer her.

  3. Führen Sie den Python-Setup-Assistenten aus, und wählen Sie dann die Option Installation anpassen aus. Wechseln Sie dann auf der Seite Erweiterte Optionen zum Feld Installationsspeicherort anpassen , und geben Sie einen Pfad auf Laufwerk C an.

  4. Bearbeiten Sie die Systemumgebungsvariable für Path so, dass sie den Python-Installationspfad (z. B. C:\Python\) und den Pfad zu den installierten Python-Paketen (z. B. C:\Python\Scripts\) enthält.

    Hinweis

    Der Python-Setup-Assistent fügt diese Pfade nur der Benutzerumgebungsvariable für Pathhinzu. Daher müssen Sie die Pfade der entsprechenden Systemumgebungsvariablen hinzufügen. Andernfalls werden beim Erfassen des VM-Images die Python-Einstellungen und die zusätzlichen Softwarepakete, die der Benutzer installiert hat, aus dem Image gelöscht.

    Führen Sie die folgenden Schritte aus, um diese Pfade an die Systemumgebungsvariable anzufügen:

    1. Wählen Sie Start aus, suchen Sie nach Einstellungen, und wählen Sie sie aus.

    2. Wählen Sie in der App Einstellungen die Option System>Info>Erweiterte Systemeinstellungen aus.

    3. Wählen Sie im Dialogfeld Systemeigenschaften die Registerkarte Erweitert und dann Umgebungsvariablen aus.

    4. Wechseln Sie im Dialogfeld Umgebungsvariablen zum Abschnitt Systemvariablen , wählen Sie die Variable Path und dann Bearbeiten aus.

    5. Wählen Sie im Dialogfeld Umgebungsvariablen bearbeitendie Option Neu aus, und geben Sie dann den Pfad zu den installierten Python-Paketen ein. Wiederholen Sie dann diesen Schritt, um den Pfad zur Python-Runtime einzugeben.

    6. Wählen Sie dreimal OK aus, um die Änderungen in den drei Dialogfeldern anzuwenden.

  5. Testen Sie die Python-Installation in einer Konsole.

    Nachdem Sie beispielsweise ausgeführt python --version haben, um die installierte Python-Version zu überprüfen, können Sie den Python-Interpreter ausführen, um zu versuchen, ein Paket zu importieren, das noch nicht installiert wurde (z numpy. B. ). Nachdem Sie die erwartete ModuleNotFoundError Ausnahme erhalten haben, führen Sie den pip install <package-name> Befehl aus, um das Paket zu installieren, und führen Sie dann den Python-Interpreter erneut aus, um dieses Paket zu importieren. Der Importbefehl sollte jetzt erfolgreich sein.

  6. Erfassen Sie das VM-Image, indem Sie die Schritte unter Erstellen eines Images einer VM im Portal ausführen, aber nur die folgenden Einstellungen auf der Seite Image erstellen anwenden.

    Name der Einstellung Einstellungswert
    Ressourcengruppe Wählen Sie aus der Liste der Ressourcengruppen aus, oder wählen Sie Neu erstellen aus, um eine Ressourcengruppe zu erstellen.
    Azure Compute Gallery als Ziel Wählen Sie aus der Liste der Azure-Computekataloge aus, oder wählen Sie Neu erstellen aus, um einen Azure-Computekatalog zu erstellen.
    Definition des Ziel-VM-Images Wählen Sie Neu erstellen aus. Geben Sie auf der Seite VM-Imagedefinition erstellen nur den Namen der VM-Imagedefinition ein, den Sie dem Image geben möchten. (Auf der Seite werden automatisch die Einstellungen für Herausgeber, Angebot und SKU bereitgestellt .)
    Versionsnummer Geben Sie eine Versionsnummer ein, die Sie dem VM-Image geben möchten.
  7. Nachdem Sie die VM-Imageeinstellungen angewendet haben, wählen Sie Überprüfen + erstellen aus, um die Einstellungen zu überprüfen, und wählen Sie dann Erstellen aus, um das Image zu erstellen. In diesem Schritt werden die folgenden drei Ressourcentypen erstellt:

    • Azure Compute Gallery
    • Benutzerdefinierte Imagedefinition
    • Version der Benutzerdefinierten Imagedefinition
  8. Nachdem die drei Ressourcen erstellt wurden, führen Sie die folgenden Schritte aus, um einen neuen Batchpool zu erstellen, der das VM-Image verwendet:

    1. Suchen Sie im Azure-Portal nach Batch-Konten, und wählen Sie diese Option aus.

    2. Wählen Sie in der Liste der Batchkonten Ihr Konto aus.

    3. Wählen Sie im Menübereich Ihres Batchkontos Pools und dann Hinzufügen aus, um einen Batchpool zu erstellen.

    4. Nehmen Sie auf der Seite Pool hinzufügen die folgenden Einstellungen vor, und wählen Sie dann OK aus.

      Name der Einstellung Einstellungswert
      Pool-ID Der neue Name für Ihren Pool
      Imagetyp Benutzerdefiniertes Image – Shared Image Gallery *
      Shared Image Gallery Der Name des Azure Compute-Zielkatalogs, den Sie beim Erstellen des VM-Images angegeben haben.
      Image Der Name der VM-Imagedefinition, den Sie beim Erstellen des VM-Images angegeben haben
      Version Die Versionsnummer, die Sie beim Erstellen des VM-Images angegeben haben
      Betriebssystem Windows
      Betriebssystemverteilung windowsserver
      Betriebssystem-SKU Der Produktcode der ausgewählten Betriebssystemversion (z. B. microsoftwindowsserver-2019-datacenter)

      * Shared Image Gallery ist ein anderer Name für Azure Compute Gallery. Dies ist eine der Ressourcen, die während der Erstellung Ihres VM-Images erstellt wurden.

  9. Nachdem der Batchpoolknoten zugeordnet wurde, wechseln Sie zur Seite Batchpoolknoten, und wählen Sie dann Verbinden im Überschriftenmenü aus.

  10. Wählen Sie im Bereich Verbinden die Option Benutzer generieren , wählen Sie die Schaltfläche Zufälligen Benutzer generieren und dann RDP-Datei herunterladen aus.

  11. Führen Sie die heruntergeladene RDP-Datei aus, um eine Verbindung mit dem neuen Batchknoten herzustellen.

  12. Testen Sie die Python-Installation erneut, um sicherzustellen, dass die vorinstallierte Version ordnungsgemäß funktioniert.

References

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.