Behebung von Problemen bei der Clusterbereitstellung - AWS ParallelCluster

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 Problemen bei der Clusterbereitstellung

Wenn Ihr Cluster nicht erstellt werden kann und die Stack-Erstellung rückgängig gemacht wird, können Sie die Protokolldateien durchsuchen, um das Problem zu diagnostizieren. Die Fehlermeldung sieht wahrscheinlich wie die folgende Ausgabe aus:

$ pcluster create-cluster --cluster-name mycluster --region eu-west-1 \ --cluster-configuration cluster-config.yaml { "cluster": { "clusterName": "mycluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f01-11ec-a3b9-024fcc6f3387", "region": "eu-west-1", "version": "3.7.0", "clusterStatus": "CREATE_IN_PROGRESS" } } $ pcluster describe-cluster --cluster-name mycluster --region eu-west-1 { "creationTime": "2021-09-06T11:03:47.696Z", ... "cloudFormationStackStatus": "ROLLBACK_IN_PROGRESS", "clusterName": "mycluster", "computeFleetStatus": "UNKNOWN", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f01-11ec-a3b9-024fcc6f3387", "lastUpdatedTime": "2021-09-06T11:03:47.696Z", "region": "eu-west-1", "clusterStatus": "CREATE_FAILED" }

AWS CloudFormation Ereignisse anzeigen auf CREATE_FAILED

Sie können die Konsole oder die AWS ParallelCluster CLI verwenden, um CloudFormation Ereignisse bei CREATE_FAILED Fehlern anzuzeigen und so die Ursache zu finden.

Ereignisse in der CloudFormation Konsole anzeigen

Weitere Informationen zur Ursache des "CREATE_FAILED" Status finden Sie in der CloudFormation Konsole.

CloudFormation Fehlermeldungen von der Konsole aus anzeigen.
  1. Melden Sie sich bei der an AWS Management Console und navigieren Sie zu https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie den Stack mit dem Namen cluster_name aus.

  3. Wählen Sie die Registerkarte Ereignisse.

  4. Überprüfen Sie den Status der Ressource, die nicht erstellt werden konnte, indem Sie die Liste der Ressourcenereignisse nach der logischen ID durchsuchen. Wenn eine Unteraufgabe nicht erstellt werden konnte, gehen Sie rückwärts vor, um das fehlgeschlagene Ressourcenereignis zu finden.

  5. Wenn Sie beispielsweise die folgende Statusmeldung sehen, müssen Sie Instance-Typen verwenden, die Ihr aktuelles vCPU-Limit nicht überschreiten, oder mehr vCPU-Kapazität anfordern.

    2022-02-04 16:09:44 UTC-0800 HeadNode CREATE_FAILED You have requested more vCPU capacity than your current vCPU limit of 0 allows for the instance bucket that the specified instance type belongs to. Please visit http://aws.amazon.com/contact-us/ec2-request to request an adjustment to this limit. (Service: AmazonEC2; Status Code: 400; Error Code: VcpuLimitExceeded; Request ID: a9876543-b321-c765-d432-dcba98766789; Proxy: null).

Verwenden Sie die CLI, um CloudFormation Ereignisse anzuzeigen und zu filtern CREATE_FAILED

Um das Problem bei der Clustererstellung zu diagnostizieren, können Sie den pcluster get-cluster-stack-events Befehl verwenden, indem Sie nach dem CREATE_FAILED Status filtern. Weitere Informationen finden Sie im AWS Command Line Interface Benutzerhandbuch unter Filtern der AWS CLI Ausgabe.

$ pcluster get-cluster-stack-events --cluster-name mycluster --region eu-west-1 \ --query 'events[?resourceStatus==`CREATE_FAILED`]' [ { "eventId": "3ccdedd0-0f03-11ec-8c06-02c352fe2ef9", "physicalResourceId": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f02-11ec-a3b9-024fcc6f3387", "resourceStatus": "CREATE_FAILED", "resourceStatusReason": "The following resource(s) failed to create: [HeadNode]. ", "stackId": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f02-11ec-a3b9-024fcc6f3387", "stackName": "mycluster", "logicalResourceId": "mycluster", "resourceType": "AWS::CloudFormation::Stack", "timestamp": "2021-09-06T11:11:51.780Z" }, { "eventId": "HeadNode-CREATE_FAILED-2021-09-06T11:11:50.127Z", "physicalResourceId": "i-04e91cc1f4ea796fe", "resourceStatus": "CREATE_FAILED", "resourceStatusReason": "Received FAILURE signal with UniqueId i-04e91cc1f4ea796fe", "resourceProperties": "{\"LaunchTemplate\":{\"Version\":\"1\",\"LaunchTemplateId\":\"lt-057d2b1e687f05a62\"}}", "stackId": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f02-11ec-a3b9-024fcc6f3387", "stackName": "mycluster", "logicalResourceId": "HeadNode", "resourceType": "AWS::EC2::Instance", "timestamp": "2021-09-06T11:11:50.127Z" } ]

Im vorherigen Beispiel lag der Fehler an der Einrichtung des Hauptknotens.

Verwenden Sie die CLI, um Protokollstreams anzuzeigen

Um diese Art von Problem zu debuggen, können Sie die vom Hauptknoten aus verfügbaren Log-Streams auflisten, pcluster list-cluster-log-streams indem Sie nach dem Inhalt der Log-Streams filtern node-type und diese anschließend analysieren.

$ pcluster list-cluster-log-streams --cluster-name mycluster --region eu-west-1 \ --filters 'Name=node-type,Values=HeadNode' { "logStreams": [ { "logStreamArn": "arn:aws:logs:eu-west-1:xxx:log-group:/aws/parallelcluster/mycluster-202109061103:log-stream:ip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init", "logStreamName": "ip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init", ... }, { "logStreamArn": "arn:aws:logs:eu-west-1:xxx:log-group:/aws/parallelcluster/mycluster-202109061103:log-stream:ip-10-0-0-13.i-04e91cc1f4ea796fe.chef-client", "logStreamName": "ip-10-0-0-13.i-04e91cc1f4ea796fe.chef-client", ... }, { "logStreamArn": "arn:aws:logs:eu-west-1:xxx:log-group:/aws/parallelcluster/mycluster-202109061103:log-stream:ip-10-0-0-13.i-04e91cc1f4ea796fe.cloud-init", "logStreamName": "ip-10-0-0-13.i-04e91cc1f4ea796fe.cloud-init", ... }, ... ] }

Die beiden wichtigsten Protokollstreams, die Sie verwenden können, um Initialisierungsfehler zu finden, sind die folgenden:

  • cfn-initist das Protokoll für das cfn-init Skript. Überprüfen Sie zuerst diesen Log-Stream. Sie werden den Command chef failed Fehler wahrscheinlich in diesem Protokoll sehen. Sehen Sie sich die Zeilen unmittelbar vor dieser Zeile an, um weitere Einzelheiten zu der Fehlermeldung zu erfahren. Weitere Informationen finden Sie unter cfn-init.

  • cloud-initist das Protokoll für Cloud-Init. Wenn Sie nichts darin sehen, versuchen Sie als cfn-init Nächstes, in diesem Protokoll nachzuschauen.

Sie können den Inhalt des Protokollstreams abrufen, indem Sie die folgende Option verwenden pcluster get-cluster-log-events (beachten Sie die --limit 5 Option, die Anzahl der abgerufenen Ereignisse zu begrenzen):

$ pcluster get-cluster-log-events --cluster-name mycluster \ --region eu-west-1 --log-stream-name ip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init \ --limit 5 { "nextToken": "f/36370880979637159565202782352491087067973952362220945409/s", "prevToken": "b/36370880752972385367337528725601470541902663176996585497/s", "events": [ { "message": "2021-09-06 11:11:39,049 [ERROR] Unhandled exception during build: Command runpostinstall failed", "timestamp": "2021-09-06T11:11:39.049Z" }, { "message": "Traceback (most recent call last):\n File \"/opt/aws/bin/cfn-init\", line 176, in <module>\n worklog.build(metadata, configSets)\n File \"/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py\", line 135, in build\n Contractor(metadata).build(configSets, self)\n File \"/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py\", line 561, in build\n self.run_config(config, worklog)\n File \"/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py\", line 573, in run_config\n CloudFormationCarpenter(config, self._auth_config).build(worklog)\n File \"/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py\", line 273, in build\n self._config.commands)\n File \"/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py\", line 127, in apply\n raise ToolError(u\"Command %s failed\" % name)", "timestamp": "2021-09-06T11:11:39.049Z" }, { "message": "cfnbootstrap.construction_errors.ToolError: Command runpostinstall failed", "timestamp": "2021-09-06T11:11:39.049Z" }, { "message": "2021-09-06 11:11:49,212 [DEBUG] CloudFormation client initialized with endpoint https://cloudformation.eu-west-1.amazonaws.com", "timestamp": "2021-09-06T11:11:49.212Z" }, { "message": "2021-09-06 11:11:49,213 [DEBUG] Signaling resource HeadNode in stack mycluster with unique ID i-04e91cc1f4ea796fe and status FAILURE", "timestamp": "2021-09-06T11:11:49.213Z" } ] }

Im vorherigen Beispiel wurde der Fehler durch einen runpostinstall Fehler verursacht. Er steht also in engem Zusammenhang mit dem Inhalt des benutzerdefinierten Bootstrap-Skripts, das im OnNodeConfigured Konfigurationsparameter von verwendet wurde. CustomActions

Erstellen Sie den ausgefallenen Cluster erneut mit rollback-on-failure

AWS ParallelCluster erstellt CloudWatch Cluster-Protokollstreams in Protokollgruppen. Sie können diese Protokolle in der CloudWatch Konsole „Benutzerdefinierte Dashboards“ oder „Protokollgruppen“ anzeigen. Weitere Informationen finden Sie unter Integration mit Amazon CloudWatch Logs und CloudWatchAmazon-Dashboard. Wenn keine Protokollstreams verfügbar sind, kann der Fehler durch das CustomActions benutzerdefinierte Bootstrap-Skript oder ein AMI-Problem verursacht werden. Um das Erstellungsproblem in diesem Fall zu diagnostizieren, erstellen Sie den Cluster erneut, einschließlich des --rollback-on-failure Parameterspcluster create-cluster, der auf gesetzt ist. false Verwenden Sie dann SSH, um den Cluster anzuzeigen, wie im Folgenden gezeigt:

$ pcluster create-cluster --cluster-name mycluster --region eu-west-1 \ --cluster-configuration cluster-config.yaml --rollback-on-failure false { "cluster": { "clusterName": "mycluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:xxx:stack/mycluster/1bf6e7c0-0f01-11ec-a3b9-024fcc6f3387", "region": "eu-west-1", "version": "3.7.0", "clusterStatus": "CREATE_IN_PROGRESS" } } $ pcluster ssh --cluster-name mycluster

Nachdem Sie beim Hauptknoten angemeldet sind, sollten Sie drei primäre Protokolldateien finden, anhand derer Sie den Fehler finden können.

  • /var/log/cfn-init.logist das Protokoll für das cfn-init Skript. Überprüfen Sie zuerst dieses Protokoll. Es ist wahrscheinlich, dass Ihnen ein Fehler wie Command chef failed in diesem Protokoll angezeigt wird. Sehen Sie sich die Zeilen unmittelbar vor dieser Zeile an, um genauere Informationen zu der Fehlermeldung zu erhalten. Weitere Informationen finden Sie unter cfn-init.

  • /var/log/cloud-init.logist das Protokoll für Cloud-Init. Wenn Sie nichts darin sehen, versuchen Sie als cfn-init.log Nächstes, in diesem Protokoll nachzuschauen.

  • /var/log/cloud-init-output.logist die Ausgabe von Befehlen, die von cloud-init ausgeführt wurden. Dies beinhaltet die Ausgabe von. cfn-init In den meisten Fällen müssen Sie sich dieses Protokoll nicht ansehen, um diese Art von Problem zu beheben.