Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Behebung von Skalierungsproblemen
Dieser Abschnitt ist relevant für Cluster, die mit AWS ParallelCluster Version 3.0.0 und höher mit dem Slurm Job Scheduler installiert wurden. Weitere Hinweise zur Konfiguration mehrerer Warteschlangen finden Sie unter. Konfiguration mehrerer Warteschlangen
Wenn bei einem Ihrer laufenden Cluster Probleme auftreten, versetzen Sie den Cluster in einen STOPPED Zustand, indem Sie den folgenden Befehl ausführen, bevor Sie mit der Problembehandlung beginnen. Dadurch werden unerwartete Kosten vermieden.
$pcluster update-compute-fleet --cluster-namemycluster\ --status STOP_REQUESTED
Sie können die auf den Clusterknoten verfügbaren Log-Streams auflisten, indem Sie den pcluster list-cluster-log-streams Befehl verwenden und nach einem private-dns-name der ausgefallenen Knoten oder des Hauptknotens filtern:
$pcluster list-cluster-log-streams --cluster-namemycluster--regioneu-west-1\ --filters 'Name=private-dns-name,Values=ip-10-0-0-101'
Anschließend können Sie den Inhalt des Protokollstreams abrufen, um ihn zu analysieren, indem Sie den pcluster get-cluster-log-events Befehl verwenden und das --log-stream-name entsprechende an eines der im folgenden Abschnitt genannten Schlüsselprotokolle übergeben:
$pcluster get-cluster-log-events --cluster-namemycluster\ --regioneu-west-1--log-stream-nameip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init
AWS ParallelCluster erstellt CloudWatch Cluster-Logstreams in Protokollgruppen. Sie können diese Protokolle in der CloudWatch Konsole „Benutzerdefinierte Dashboards“ oder „Protokollgruppen“ einsehen. Weitere Informationen erhalten Sie unter Integration mit Amazon CloudWatch Logs und CloudWatch Amazon-Dashboard.
Wichtige Protokolle für das Debuggen
Die folgende Tabelle bietet einen Überblick über die Schlüsselprotokolle für den Hauptknoten:
-
/var/log/cfn-init.log- Dies ist das CloudFormation Init-Log. Es enthält alle Befehle, die beim Einrichten einer Instanz ausgeführt wurden. Verwenden Sie es, um Initialisierungsprobleme zu beheben. -
/var/log/chef-client.log- Dies ist das Chef-Client-Protokoll. Es enthält alle Befehle, die ausgeführt wurden Chef/CINC. Verwenden Sie es, um Initialisierungsprobleme zu beheben. -
/var/log/parallelcluster/slurm_resume.log- Das ist einResumeProgramProtokoll. Es startet Instanzen für dynamische Knoten. Verwenden Sie es, um Probleme beim Starten dynamischer Knoten zu beheben. -
/var/log/parallelcluster/slurm_suspend.log- Das ist dasSuspendProgramProtokoll. Es wird aufgerufen, wenn Instanzen für dynamische Knoten beendet werden. Verwenden Sie es, um Probleme mit der Terminierung dynamischer Knoten zu beheben. Wenn Sie dieses Protokoll überprüfen, sollten Sie auch dasclustermgtdProtokoll überprüfen. -
/var/log/parallelcluster/clustermgtd- Das ist dasclustermgtdProtokoll. Es wird als zentralisierter Daemon ausgeführt, der die meisten Cluster-Betriebsaktionen verwaltet. Verwenden Sie ihn, um Probleme beim Starten, Beenden oder Clusterbetrieb zu beheben. -
/var/log/slurmctld.log- Dies ist das Slurm Control Daemon-Protokoll. AWS ParallelCluster trifft keine Skalierungsentscheidungen. Vielmehr versucht es nur, Ressourcen bereitzustellen, um die Slurm Anforderungen zu erfüllen. Es ist nützlich bei Skalierungs- und Zuweisungsproblemen, auftragsbezogenen Problemen und allen Problemen im Zusammenhang mit dem Start und der Beendigung des Terminplans. -
/var/log/parallelcluster/compute_console_output- Dieses Protokoll zeichnet die Konsolenausgabe einer Beispielteilmenge statischer Rechenknoten auf, die unerwartet beendet wurden. Verwenden Sie dieses Protokoll, wenn statische Rechenknoten beendet werden und die Rechenknotenprotokolle in CloudWatch nicht verfügbar sind. Dercompute_console_output logInhalt, den Sie erhalten, ist derselbe, wenn Sie die Amazon EC2-Konsole verwenden oder AWS CLI die Ausgabe der Instance-Konsole abrufen.
Dies sind die wichtigsten Protokolle für die Rechenknoten:
-
/var/log/cloud-init-output.log- Das ist das Cloud-Init-Log. Es enthält alle Befehle, die beim Einrichten einer Instanz ausgeführt wurden. Verwenden Sie es, um Initialisierungsprobleme zu beheben. -
/var/log/parallelcluster/computemgtd- Das ist dascomputemgtdProtokoll. Es wird auf jedem Rechenknoten ausgeführt, um den Knoten in dem seltenen Fall zu überwachen, dass derclustermgtdDaemon auf dem Hauptknoten offline ist. Verwenden Sie es, um unerwartete Abschlussprobleme zu beheben. -
/var/log/slurmd.log- Dies ist das Slurm Compute Daemon-Log. Verwenden Sie es, um Probleme bei der Initialisierung und bei Rechenfehlern zu beheben.
Es wird ein InsufficientInstanceCapacity Fehler angezeigt in slurm_resume.log wenn ich einen Job nicht ausführen kann, oder in clustermgtd.log wenn ich keinen Cluster erstellen kann
Wenn der Cluster einen Slurm Scheduler verwendet, liegt ein Problem mit unzureichender Kapazität vor. Wenn nicht genügend Instances verfügbar sind, wenn eine Instance-Startanforderung gestellt wird, wird ein InsufficientInstanceCapacity Fehler zurückgegeben.
Bezüglich der statischen Instance-Kapazität finden Sie den Fehler im clustermgtd Protokoll unter/var/log/parallelcluster/clustermgtd.
Für die dynamische Instanzkapazität finden Sie den Fehler im ResumeProgram Protokoll unter/var/log/parallelcluster/slurm_resume.log.
Die Meldung sieht dem folgenden Beispiel ähnlich:
An error occurred (InsufficientInstanceCapacity) when calling the RunInstances/CreateFleet operation...
Je nach Anwendungsfall sollten Sie erwägen, eine der folgenden Methoden zu verwenden, um diese Art von Fehlermeldungen zu vermeiden:
-
Deaktivieren Sie die Platzierungsgruppe, falls sie aktiviert ist. Weitere Informationen finden Sie unter Probleme beim Start von Placement-Gruppen und Instances.
-
Reservieren Sie Kapazität für die Instances und starten Sie sie mit ODCR (On-Demand Capacity Reservations). Weitere Informationen finden Sie unter Instances mit On-Demand Kapazitätsreservierungen (ODCR) starten.
-
Konfigurieren Sie mehrere Rechenressourcen mit unterschiedlichen Instanztypen. Wenn für Ihre Arbeitslast kein bestimmter Instanztyp erforderlich ist, können Sie das schnelle Failover bei unzureichender Kapazität mit mehreren Rechenressourcen nutzen. Weitere Informationen finden Sie unter Slurmschneller Cluster-Failover mit unzureichender Kapazität.
-
Konfigurieren Sie mehrere Instanztypen in derselben Rechenressource und nutzen Sie die Zuweisung mehrerer Instanztypen. Weitere Informationen zur Konfiguration mehrerer Instanzen finden Sie unter Zuweisung mehrerer Instanztypen mit Slurm und Scheduling/SlurmQueues/ComputeResources/Instances.
-
Verschieben Sie die Warteschlange in eine andere Availability Zone, indem Sie die Subnetz-ID in der Clusterkonfiguration Scheduling//SlurmQueuesNetworking/SubnetIdsändern.
-
Wenn Ihre Arbeitslast nicht eng miteinander verknüpft ist, verteilen Sie die Warteschlange auf verschiedene Availability Zones. Weitere Informationen zur Konfiguration mehrerer Subnetze finden Sie unter Scheduling//SlurmQueuesNetworking/SubnetIds.
Behebung von Problemen bei der Knoteninitialisierung
In diesem Abschnitt wird beschrieben, wie Sie Probleme bei der Knoteninitialisierung beheben können. Dazu gehören auch Probleme, bei denen der Knoten nicht gestartet, hochgefahren oder einem Cluster nicht beigetreten werden kann.
Hauptknoten
Anwendbare Protokolle:
-
/var/log/cfn-init.log -
/var/log/chef-client.log -
/var/log/parallelcluster/clustermgtd -
/var/log/parallelcluster/slurm_resume.log -
/var/log/slurmctld.log
Überprüfen Sie die /var/log/cfn-init.log /var/log/chef-client.log Und-Protokolle oder die entsprechenden Log-Streams. Diese Protokolle enthalten alle Aktionen, die bei der Einrichtung des Hauptknotens ausgeführt wurden. Bei den meisten Fehlern, die während der Installation auftreten, sollten sich Fehlermeldungen im /var/log/chef-client.log Protokoll befinden. Wenn in der Konfiguration des Clusters OnNodeStart oder OnNodeConfigured Skripte angegeben sind, überprüfen Sie anhand der Protokollmeldungen, ob das Skript erfolgreich ausgeführt wird.
Wenn ein Cluster erstellt wird, muss der Hauptknoten warten, bis die Rechenknoten dem Cluster beitreten, bevor er dem Cluster beitreten kann. Aus diesem Grund fällt auch der Hauptknoten aus, wenn die Rechenknoten dem Cluster nicht beitreten können. Je nachdem, welche Art von Berechnungshinweisen Sie verwenden, können Sie eines der folgenden Verfahren anwenden, um diese Art von Problem zu beheben:
Datenverarbeitungsknoten
-
Anwendbare Protokolle:
-
/var/log/cloud-init-output.log -
/var/log/slurmd.log
-
-
Wenn ein Rechenknoten gestartet wird, überprüfen Sie zunächst
/var/log/cloud-init-output.log, welcher die Setup-Protokolle enthalten sollte, die dem/var/log/chef-client.logProtokoll auf dem Hauptknoten ähneln. Bei den meisten Fehlern, die während des Setups auftreten, sollten sich Fehlermeldungen im/var/log/cloud-init-output.logLog befinden. Wenn in der Clusterkonfiguration Skripts für die Vor- oder Nachinstallation angegeben sind, überprüfen Sie, ob sie erfolgreich ausgeführt wurden. -
Wenn Sie ein benutzerdefiniertes AMI mit Änderungen an der Slurm Konfiguration verwenden, liegt möglicherweise ein Slurm entsprechender Fehler vor, der verhindert, dass der Rechenknoten dem Cluster beitritt. Überprüfen Sie das Protokoll auf Fehler im Zusammenhang mit dem
/var/log/slurmd.logScheduler.
Dynamische Rechenknoten:
-
Suchen
ResumeProgramSie im Log (/var/log/parallelcluster/slurm_resume.log) nach dem Namen Ihres Rechenknotens, um festzustellen, ob der Knoten jemals aufgerufenResumeProgramwurde. (FallsResumeProgrames noch nie aufgerufen wurde, können Sie anhand vonslurmctldlog (/var/log/slurmctld.log) überprüfen, ob Sie Slurm jemals versucht haben,ResumeProgrammit dem Knoten aufzurufen). -
Beachten Sie, dass falsche Berechtigungen für dazu führen
ResumeProgramkönnen, dassResumeProgramunbeaufsichtigte Fehler auftreten. Wenn Sie ein benutzerdefiniertes AMI mit Änderungen amResumeProgramSetup verwenden, überprüfen Sie, ob das demslurmBenutzerResumeProgramgehört und über die Berechtigung744(rwxr--r--) verfügt. -
Wenn aufgerufen
ResumeProgramwird, überprüfen Sie, ob eine Instance für den Knoten gestartet wurde. Wenn keine Instance gestartet wurde, wird eine Fehlermeldung angezeigt, die den Startfehler beschreibt. -
Wenn die Instance gestartet wird, ist möglicherweise während des Einrichtungsvorgangs ein Problem aufgetreten. Sie sollten die entsprechende private IP-Adresse und Instanz-ID aus dem
ResumeProgramProtokoll sehen. Darüber hinaus können Sie sich die entsprechenden Setup-Protokolle für die jeweilige Instanz ansehen. Weitere Informationen zur Behebung eines Setup-Fehlers mit einem Rechenknoten finden Sie im nächsten Abschnitt.
Statische Rechenknoten:
-
Prüfen Sie im
clustermgtd(/var/log/parallelcluster/clustermgtd) -Protokoll, ob Instanzen für den Knoten gestartet wurden. Wenn sie nicht gestartet wurden, sollte eine klare Fehlermeldung angezeigt werden, in der der Startfehler detailliert beschrieben wird. -
Wenn die Instanz gestartet wird, gibt es während des Einrichtungsvorgangs ein Problem. Sie sollten die entsprechende private IP-Adresse und Instanz-ID aus dem
ResumeProgramProtokoll sehen. Darüber hinaus können Sie sich die entsprechenden Setup-Protokolle für die jeweilige Instanz ansehen.
Von Spot-Instances unterstützte Rechenknoten:
-
Wenn Sie Spot-Instances zum ersten Mal verwenden und der Job weiterhin einen PD-Status (ausstehend) hat, überprüfen Sie die
/var/log/parallelcluster/slurm_resume.logDatei noch einmal. Sie werden wahrscheinlich einen Fehler wie den folgenden finden:2022-05-20 13:06:24,796 - [slurm_plugin.common:add_instances_for_nodes] - ERROR - Encountered exception when launching instances for nodes (x1) ['spot-dy-t2micro-2']: An error occurred (AuthFailure.ServiceLinkedRoleCreationNotPermitted) when calling the RunInstances operation: The provided credentials do not have permission to create the service-linked role for Amazon EC2 Spot Instances.Wenn Sie Spot-Instances verwenden, muss in Ihrem Konto eine
AWSServiceRoleForEC2Spotserviceverknüpfte Rolle vorhanden sein. Führen Sie den folgenden Befehl aus AWS CLI, um diese Rolle in Ihrem Konto mithilfe von zu erstellen:$aws iam create-service-linked-role --aws-service-name spot.amazonaws.com.rproxy.goskope.comWeitere Informationen finden Sie Arbeiten mit Spot-Instances im AWS ParallelCluster Benutzerhandbuch und unter Service-linked Rolle für Spot-Instance-Anfragen im Amazon EC2-Benutzerhandbuch.
Behebung unerwarteter Knotenwechsel und -beendigungen
In diesem Abschnitt wird weiterhin untersucht, wie Sie Probleme im Zusammenhang mit Knoten beheben können, insbesondere wenn ein Knoten unerwartet ersetzt oder beendet wird.
-
Anwendbare Protokolle:
-
/var/log/parallelcluster/clustermgtd(Kopfknoten) -
/var/log/slurmctld.log(Kopfknoten) -
/var/log/parallelcluster/computemgtd(Knoten berechnen)
-
Knoten wurden unerwartet ersetzt oder beendet
-
Prüfen Sie im
clustermgtdProtokoll (/var/log/parallelcluster/clustermgtd), ob ein Knotenclustermgtdersetzt oder beendet wurde. Beachten Sie, dassclustermgtddamit alle normalen Wartungsarbeiten am Knoten durchgeführt werden. -
Wenn der Knoten
clustermgtdersetzt oder beendet wurde, sollte eine Meldung angezeigt werden, in der detailliert beschrieben wird, warum diese Aktion auf dem Knoten ausgeführt wurde. Wenn der Grund mit dem Scheduler zusammenhängt (z. B. weil der Knoten aktiviert istDOWN), finden Sie weitere Informationen imslurmctldLog-In. Wenn der Grund mit Amazon EC2 zusammenhängt, sollte es eine informative Meldung geben, in der das Amazon EC2-Problem beschrieben wird, das den Austausch erforderlich machte. -
Wenn der Knoten
clustermgtdnicht beendet wurde, überprüfen Sie zunächst, ob es sich um eine erwartete Kündigung durch Amazon EC2 handelte, genauer gesagt um eine Spot-Kündigung.computemgtd, das auf einem Rechenknoten läuft, kann auch einen Knoten beenden, wenn dieser alsclustermgtdfehlerhaft eingestuft wird. Prüfen Siecomputemgtdlog (/var/log/parallelcluster/computemgtd), um zu sehen, ob der Knotencomputemgtdbeendet wurde.
Knoten sind ausgefallen
-
Checken Sie in
slurmctldlog (/var/log/slurmctld.log) ein, um zu sehen, warum ein Job oder ein Knoten ausgefallen ist. Beachten Sie, dass Jobs automatisch erneut in die Warteschlange gestellt werden, wenn ein Knoten ausfällt. -
Wenn gemeldet
slurm_resumewird, dass der Knoten gestartet wurde, und nach einigen Minutenclustermgtdmeldet, dass es in Amazon EC2 für diesen Knoten keine entsprechende Instance gibt, schlägt der Knoten möglicherweise während der Einrichtung fehl. Gehen Sie wie folgt vor, um das Protokoll von einem Compute (/var/log/cloud-init-output.log) abzurufen:-
Reichen Sie einen Job ein, um einen neuen Knoten hochfahren zu lassenSlurm.
-
Warten Sie, bis der Rechenknoten gestartet ist.
-
Ändern Sie das Verhalten beim Herunterfahren der Instanz so, dass ein ausgefallener Rechenknoten gestoppt und nicht beendet wird.
$aws ec2 modify-instance-attribute \ --instance-idi-1234567890abcdef0\ --instance-initiated-shutdown-behavior "{\"Value\": \"stop\"}" -
Beendigungsschutz aktivieren.
$aws ec2 modify-instance-attribute \ --instance-idi-1234567890abcdef0\ --disable-api-termination -
Markieren Sie den Knoten so, dass er leicht identifizierbar ist.
$aws ec2 create-tags \ --resourcesi-1234567890abcdef0\ --tags Key=Name,Value=QUARANTINED-Compute -
Trennen Sie den Knoten vom Cluster, indem Sie das
parallelcluster:cluster-nameTag ändern.$aws ec2 create-tags \ --resourcesi-1234567890abcdef0\ --tags Key=parallelcluster:clustername,Value=QUARANTINED-ClusterName -
Rufen Sie mit diesem Befehl die Konsolenausgabe vom Knoten ab.
$aws ec2 get-console-output --instance-idi-1234567890abcdef0--output text
-
Ersetzen, Beenden oder Ausschalten problematischer Instanzen und Knoten
-
Anwendbare Protokolle:
-
/var/log/parallelcluster/clustermgtd(Kopfknoten) -
/var/log/parallelcluster/slurm_suspend.log(Kopfknoten)
-
-
In den meisten Fällen werden alle erwarteten Aktionen zum Beenden der Instanz
clustermgtdverarbeitet. Schauen Sie imclustermgtdProtokoll nach, warum ein Knoten nicht ersetzt oder beendet werden konnte. -
Wenn dynamische Knoten ausfallenSlurmSettingsEigenschaften, überprüfen Sie im
SuspendProgramProtokoll, ob der Aufruf vonslurmctldmit dem spezifischen Knoten als Argument ausgeführtSuspendProgramwurde. Beachten Sie, dass damit eigentlichSuspendProgramkeine Aktion ausgeführt wird. Vielmehr protokolliert es nur, wenn es aufgerufen wird. Das Beenden undNodeAddrZurücksetzen aller Instanzen erfolgt durchclustermgtd. Slurmversetzt KnotenSuspendTimeoutautomatisch wieder in einenPOWER_SAVINGZustand nach dem Ende. -
Wenn Rechenknoten aufgrund von Bootstrap-Fehlern ständig ausfallen, überprüfen Sie, ob sie mit Slurm geschützter Cluster-Modus aktivierter Option gestartet werden. Wenn der geschützte Modus nicht aktiviert ist, ändern Sie die Einstellungen für den geschützten Modus, um den geschützten Modus zu aktivieren. Führen Sie eine Problembehandlung durch und korrigieren Sie das Bootstrap-Skript.
Warteschlange (Partition) Inaktiver Status
Wenn Sie ausführen sinfo und in der Ausgabe Warteschlangen mit dem AVAIL Status von angezeigt werdeninact, wurde Ihr Cluster möglicherweise Slurm geschützter Cluster-Modus aktiviert und die Warteschlange wurde für einen vordefinierten Zeitraum in den INACTIVE Status versetzt.
Behebung anderer bekannter Knoten- und Jobprobleme
Eine andere Art von bekanntem Problem besteht darin, dass AWS ParallelCluster möglicherweise keine Jobs zugewiesen werden oder keine Skalierungsentscheidungen getroffen werden. Bei dieser Art von Problem werden Ressourcen AWS ParallelCluster nur gemäß den Anweisungen gestartet, beendet oder verwaltet. Slurm Überprüfen Sie das slurmctld Protokoll, um diese Probleme zu beheben.