Beheben von Verzögerungen bei der Erstellung von Batchknoten beim Neustarten oder Reimaging
In diesem Artikel wird erläutert, wie Die Erstellung von Batchknoten beim Neustart oder Umbilden eines Knotens aufgelöst wird. Vermeiden Sie Probleme in Microsoft Azure Batch, die durch die Installation der großen Python-Laufzeit- 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 umimages neu erstellt wird.
Symptome
Wenn Sie einen Batchpool erstellen und dem Pool einen Knoten hinzufügen oder den Knoten neu starten oder neu abbilden, dauert die Anwendungsinstallation zu lange, oder sie schlägt nach einer langen Installationszeit fehl.
Ursache
Dieses Problem tritt auf, da ein Python-Paket zu groß ist, um es als Startaufgabe zu verwenden.
Wenn Sie einen Batchpool in Azure Batch erstellen und einen Batchknoten hinzufügen, empfiehlt es sich, eine Startaufgabe zum Vorbereiten der Betriebssystemumgebung zu verwenden. Diese Startaufgabe kann folgende Aktionen ausführen:
Installieren Sie die Anwendungen, die Ihre Aufgaben ausführen.
Starten Sie Hintergrundprozesse, wenn der Batchknoten zuerst dem Pool hinzugefügt wird, oder wenn der Knoten neu gestartet oder umimages neu erstellt wird.
Für die Python-Sprachlaufzeit und -Anwendungen, für die Python ausgeführt werden muss, kann das Paket jedoch so groß sein, dass die Installation der Startaufgabe sehr lange dauert. Selbst nachdem die meisten Installationen aufgetreten sind, kann die Installation aufgrund eines unerwarteten Problems weiterhin fehlschlagen.
Lösung
Um dieses Problem zu beheben, stimmen Sie mit den Speicherorten des virtuellen Computers (VM) und batchkontospeicherorten und Betriebssystemversionen überein, und installieren Sie Python und die zugehörigen Pakete vor dem Erfassen eines Gen1-Images.
Verwenden Sie ein vordefiniertes benutzerdefiniertes Image, um Batchknoten zuzuweisen. Allgemeine Informationen zu diesem Prozess finden Sie unter Verwenden eines verwalteten Images zum Erstellen eines benutzerdefinierten Imagepools.
Befolgen Sie die folgenden allgemeinen Methoden, um längere Installationszeiten zu vermeiden und Installationsfehler zu vermeiden:
Geben Sie denselben Speicherort oder dieselbe Region an, der beim Erstellen des Batchkontos verwendet werden soll, und erstellen Sie den VM-Batchknoten.
Wählen Sie ein Bild 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.
Stellen Sie beim Erstellen eines Knotenpools im Azure-Portal sicher, dass die Sku-Liste im Abschnitt "Betriebssystem" die von Ihnen 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 Abschnitten im Registerkartenformat 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 dem C-Laufwerk, und fügen Sie den Systempfad manuell an.
Zusammenfassung der Vorgehensweise
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 der VM benötigen, einschließlich der erforderlichen Version der Python-Runtime (z. B. Python 3.10.4), und bearbeiten Sie den Systempfad. Erfassen Sie schließlich das VM-Image, stellen Sie es in einem Batchpool bereit, der das VM-Image verwendet, eine Verbindung mit dem neuen Batchpoolknoten herstellt, und testen Sie es dann, um sicherzustellen, dass die vorinstallierte Python-Laufzeit und -Pakete ordnungsgemäß funktionieren.
Prozedurschritte
Erstellen Sie eine Windows-VM im Azure-Portal, indem Sie die folgenden Einstellungen angeben.
Einstellungsname Einstellungswert Region Dieselbe Region, die Ihrem Batchkonto zugewiesen ist Abbildung Ein Windows-Image mit Gen1 (nicht Gen2) im Namen und wird vom Batchdienst unterstützt. Stellen Sie mithilfe von RDP eine Verbindung mit dem virtuellen Computer her.
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 dem Laufwerk "C" an.
Bearbeiten Sie die Systemumgebungsvariable so
Path
, dass sie den Python-Installationspfad (z. B. C:\Python\) und den Pfad zu den installierten Python-Paketen (z. B. C:\Python\Scripts\) enthält.Notiz
Der Python-Setup-Assistent fügt diese Pfade nur der Benutzerumgebungsvariable für
Path
. Daher müssen Sie die Pfade zur entsprechenden Systemumgebungsvariable 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:
Wählen Sie "Start" aus, und suchen Sie dann nach "Einstellungen", und wählen Sie dann "Einstellungen" aus.
Wählen Sie in der Einstellungs-App "System>Über>erweiterte Systemeinstellungen" aus.
Wählen Sie im Dialogfeld "Systemeigenschaften " die Registerkarte "Erweitert " und dann "Umgebungsvariablen" aus.
Wechseln Sie im Dialogfeld "Umgebungsvariablen " zum Abschnitt "Systemvariablen ", wählen Sie die Variable "Pfad " und dann " Bearbeiten" aus.
Wählen Sie im Dialogfeld "Umgebungsvariable bearbeiten" "Neu" aus, und geben Sie dann den Pfad zu den installierten Python-Paketen ein. Wiederholen Sie dann diesen Schritt, um den Pfad zur Python-Laufzeit einzugeben.
Wählen Sie dreimal OK aus, um die Änderungen in den drei Dialogfeldern anzuwenden.
Testen Sie die Python-Installation in einer Konsole.
Nachdem Sie beispielsweise ausgeführt
python --version
haben, um die version von Python zu überprüfen, die Sie installiert haben, können Sie den Python-Interpreter ausführen, um zu versuchen, ein Paket zu importieren, das noch nicht installiert wurde (znumpy
. B. ). Nachdem Sie die erwartete Ausnahme erhaltenModuleNotFoundError
haben, führen Sie denpip install <package-name>
Befehl aus, um das Paket zu installieren, und führen Sie dann erneut den Python-Interpreter aus, um dieses Paket zu importieren. Der Importbefehl sollte jetzt erfolgreich sein.Erfassen Sie das VM-Image, indem Sie die Schritte unter Erstellen eines Images eines virtuellen Computers im Portal ausführen, aber nur die folgenden Einstellungen auf der Seite "Bild erstellen" anwenden.
Einstellungsname Einstellungswert Ressourcengruppe Wählen Sie aus der Liste der Ressourcengruppen aus, oder wählen Sie " Neu erstellen" aus, um eine Ressourcengruppe zu erstellen. Ziel-Azure-Computekatalog Wählen Sie in der Liste der Azure-Computekataloge aus, oder wählen Sie " Neu erstellen" aus, um einen Azure-Computekatalog zu erstellen. Ziel-VM-Imagedefinition Wählen Sie Neu erstellen. Geben Sie auf der Seite "VM-Imagedefinition erstellen" nur den Namen der VM-Imagedefinition ein, den Sie dem Image zuweisen möchten. (Die Seite stellt automatisch die Publisher-, Angebots- und SKU-Einstellungen .) Versionsnummer Geben Sie eine Versionsnummer ein, die Sie dem VM-Image zugeben möchten. Nachdem Sie die Vm-Imageeinstellungen angewendet haben, wählen Sie "Überprüfen" und "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 Bilddefinition
- Version der benutzerdefinierten Bilddefinition
Führen Sie nach dem Erstellen der drei Ressourcen die folgenden Schritte aus, um einen neuen Batchpool zu erstellen, der das VM-Image verwendet:
Suchen Sie im Azure-Portal nach Batchkonten, und wählen Sie sie aus.
Wählen Sie in der Liste der Batchkonten Ihr Konto aus.
Wählen Sie im Menübereich Ihres Batchkontos "Pools" und dann " Hinzufügen" aus, um einen Batchpool zu erstellen.
Nehmen Sie auf der Seite "Pool hinzufügen" die folgenden Einstellungen vor, und wählen Sie dann "OK" aus.
Einstellungsname Einstellungswert Pool-ID Der neue Name für Ihren Pool Imagetyp Benutzerdefiniertes Bild – Freigegebene Bildergalerie * Shared Image Gallery Der Name des Azure-Ziel-Computekatalogs, den Sie beim Erstellen des VM-Images angegeben haben Abbildung 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 Betriebssystem-Distribution windowsserver Betriebssystem-Sku Der Produktcode der von Ihnen ausgewählten Betriebssystemversion (z . B. microsoftwindowsserver-2019-datacenter) * Der freigegebene Bilderkatalog ist ein weiterer Name für den Azure Compute Gallery. Dies ist eine der Ressourcen, die während der Erstellung ihres VM-Images erstellt wurden.
Wechseln Sie nach der Zuweisung des Batchpoolknotens zur Seite "Batchpoolknoten", und wählen Sie dann im Menü "Überschrift" die Option "Verbinden" aus.
Wählen Sie im Bereich "Verbinden " die Option "Benutzer generieren" aus, wählen Sie die Schaltfläche "Zufällige Benutzer generieren" und dann " RDP-Datei herunterladen" aus.
Führen Sie die heruntergeladene RDP-Datei aus, um eine Verbindung mit dem neuen Batchknoten herzustellen.
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.