Risoluzione dei problemi di scalabilità - AWS ParallelCluster

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi di scalabilità

Questa sezione è rilevante per i cluster che sono stati installati utilizzando la AWS ParallelCluster versione 3.0.0 e successive con il Slurm pianificatore di lavori. Per ulteriori informazioni sulla configurazione di più code, vedere. Configurazione di più code

Se uno dei cluster in esecuzione presenta problemi, posiziona il cluster in uno STOPPED stato eseguendo il comando seguente prima di iniziare la risoluzione dei problemi. In questo modo si evita di incorrere in costi imprevisti.

$ pcluster update-compute-fleet --cluster-name mycluster \ --status STOP_REQUESTED

È possibile elencare i flussi di log disponibili dai nodi del cluster utilizzando il pcluster list-cluster-log-streams comando e il filtraggio utilizzando uno private-dns-name dei nodi in errore o il nodo principale:

$ pcluster list-cluster-log-streams --cluster-name mycluster --region eu-west-1 \ --filters 'Name=private-dns-name,Values=ip-10-0-0-101'

È quindi possibile recuperare il contenuto del flusso di log per analizzarlo utilizzando il pcluster get-cluster-log-events comando e passando il --log-stream-name corrispondente a uno dei log chiave indicati nella sezione seguente:

$ pcluster get-cluster-log-events --cluster-name mycluster \ --region eu-west-1 --log-stream-name ip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init

AWS ParallelCluster crea flussi di CloudWatch log del cluster in gruppi di log. È possibile visualizzare questi registri nei dashboard personalizzati o nei CloudWatch gruppi di log della console. Per ulteriori informazioni, consulta Integrazione con Amazon CloudWatch Logs e CloudWatch Pannello di controllo Amazon.

Registri chiave per il debug

La tabella seguente fornisce una panoramica dei log chiave per il nodo principale:

  • /var/log/cfn-init.log- Questo è il registro di AWS CloudFormation inizializzazione. Contiene tutti i comandi che sono stati eseguiti durante la configurazione di un'istanza. Usalo per risolvere i problemi di inizializzazione.

  • /var/log/chef-client.log- Questo è il registro del client Chef. Contiene tutti i comandi che sono stati eseguiti tramite Chef/CINC. Usalo per risolvere i problemi di inizializzazione.

  • /var/log/parallelcluster/slurm_resume.log- Questo è un registro. ResumeProgram Lancia istanze per nodi dinamici. Usalo per risolvere i problemi di avvio dei nodi dinamici.

  • /var/log/parallelcluster/slurm_suspend.log- Questo è il registro. SuspendProgram Viene chiamato quando le istanze vengono terminate per i nodi dinamici. Usalo per risolvere i problemi di terminazione dei nodi dinamici. Quando controlli questo registro, dovresti controllare anche il registro. clustermgtd

  • /var/log/parallelcluster/clustermgtd- Questo è il clustermgtd registro. Funziona come il demone centralizzato che gestisce la maggior parte delle azioni operative del cluster. Usalo per risolvere eventuali problemi di avvio, interruzione o funzionamento del cluster.

  • /var/log/slurmctld.log- Questa è la Slurm registro del demone di controllo. AWS ParallelCluster non prende decisioni di scalabilità. Piuttosto, tenta solo di lanciare risorse per soddisfare i Slurm requisiti. È utile per problemi di scalabilità e allocazione, problemi relativi al lavoro e qualsiasi problema di avvio e terminazione relativo alla pianificazione.

  • /var/log/parallelcluster/compute_console_output- Questo registro registra l'output della console da un sottoinsieme campione di nodi di calcolo statici che sono terminati in modo imprevisto. Utilizza questo registro se i nodi di calcolo statici terminano e i log dei nodi di calcolo non sono disponibili in. CloudWatch Il compute_console_output log contenuto che ricevi è lo stesso quando usi la EC2 console Amazon o AWS CLI per recuperare l'output della console dell'istanza.

Questi sono i log chiave per i nodi di calcolo:

  • /var/log/cloud-init-output.log- Questo è il log cloud-init. Contiene tutti i comandi che sono stati eseguiti durante la configurazione di un'istanza. Usalo per risolvere i problemi di inizializzazione.

  • /var/log/parallelcluster/computemgtd- Questo è il registro. computemgtd Viene eseguito su ogni nodo di elaborazione per monitorare il nodo nel raro caso in cui il clustermgtd demone sul nodo principale sia offline. Usalo per risolvere problemi di terminazione imprevisti.

  • /var/log/slurmd.log- Questa è la Slurm calcola il registro del demone. Usalo per risolvere i problemi di inizializzazione e di errore di calcolo.

Viene visualizzato un InsufficientInstanceCapacity errore slurm_resume.log quando non riesco a eseguire un processo o clustermgtd.log quando non riesco a creare un cluster

Se il cluster utilizza un Slurm scheduler, stai riscontrando un problema di capacità insufficiente. Se non ci sono abbastanza istanze disponibili quando viene effettuata una richiesta di avvio dell'istanza, viene restituito un InsufficientInstanceCapacity errore.

Per quanto riguarda la capacità statica delle istanze, è possibile trovare l'errore nel clustermgtd registro all'indirizzo/var/log/parallelcluster/clustermgtd.

Per quanto riguarda la capacità dinamica delle istanze, è possibile trovare l'errore nel ResumeProgram registro all'indirizzo/var/log/parallelcluster/slurm_resume.log.

Il messaggio è simile al seguente esempio:

An error occurred (InsufficientInstanceCapacity) when calling the RunInstances/CreateFleet operation...

In base al tuo caso d'uso, valuta la possibilità di utilizzare uno dei seguenti metodi per evitare di ricevere questi tipi di messaggi di errore:

Risoluzione dei problemi di inizializzazione dei nodi

Questa sezione illustra come risolvere i problemi di inizializzazione dei nodi. Ciò include i problemi in cui il nodo non riesce ad avviarsi, accendersi o entrare a far parte di un cluster.

Nodo principale

Registri applicabili:

  • /var/log/cfn-init.log

  • /var/log/chef-client.log

  • /var/log/parallelcluster/clustermgtd

  • /var/log/parallelcluster/slurm_resume.log

  • /var/log/slurmctld.log

Controlla i /var/log/chef-client.log log /var/log/cfn-init.log and o i flussi di log corrispondenti. Questi registri contengono tutte le azioni eseguite durante la configurazione del nodo principale. La maggior parte degli errori che si verificano durante l'installazione dovrebbero contenere messaggi di errore nel /var/log/chef-client.log registro. Se OnNodeStart nella configurazione del cluster sono specificati i nostri OnNodeConfigured script, ricontrolla che lo script venga eseguito correttamente tramite i messaggi di registro.

Quando viene creato un cluster, il nodo principale deve attendere che i nodi di calcolo si uniscano al cluster prima di potersi unire al cluster. Per questo motivo, se i nodi di elaborazione non riescono a unirsi al cluster, anche il nodo principale fallisce. È possibile seguire una di queste serie di procedure, a seconda del tipo di note di calcolo utilizzate, per risolvere questo tipo di problema:

Nodi di calcolo

  • Registri applicabili:

    • /var/log/cloud-init-output.log

    • /var/log/slurmd.log

  • Se viene avviato un nodo di calcolo/var/log/cloud-init-output.log, controllate innanzitutto che contenga i log di configurazione simili a quelli del /var/log/chef-client.log nodo principale. La maggior parte degli errori che si verificano durante l'installazione dovrebbero contenere messaggi di errore nel registro. /var/log/cloud-init-output.log Se nella configurazione del cluster sono specificati script di preinstallazione o post-installazione, verificate che siano stati eseguiti correttamente.

  • Se stai utilizzando uno strumento personalizzato AMI con modifiche al Slurm configurazione, allora potrebbe esserci un Slurm-errore relativo che impedisce al nodo di calcolo di entrare a far parte del cluster. Per gli errori relativi alla pianificazione, controlla il registro. /var/log/slurmd.log

Nodi di calcolo dinamici:

  • Cerca in ResumeProgram log (/var/log/parallelcluster/slurm_resume.log) il nome del tuo nodo di calcolo per vedere se ResumeProgram è mai stato chiamato con il nodo. (Se ResumeProgram non è mai stato chiamato, puoi controllare slurmctld log (/var/log/slurmctld.log) per determinare se Slurm hai mai provato a chiamare ResumeProgram con il nodo).

  • Tieni presente che autorizzazioni errate per ResumeProgram potrebbero causare ResumeProgram un errore silenzioso. Se stai utilizzando una configurazione personalizzata AMI con modifiche alla ResumeProgram configurazione, verifica che sia di proprietà dell'slurmutente e disponga dell'autorizzazione 744 (rwxr--r--). ResumeProgram

  • Se ResumeProgram viene chiamato, controlla se è stata avviata un'istanza per il nodo. Se non è stata avviata alcuna istanza, viene visualizzato un messaggio di errore che descrive l'errore di avvio.

  • Se l'istanza viene avviata, potrebbe essersi verificato un problema durante il processo di configurazione. Dovresti vedere l'indirizzo IP privato e l'ID dell'istanza corrispondenti dal ResumeProgram registro. Inoltre, puoi consultare i registri di configurazione corrispondenti per l'istanza specifica. Per ulteriori informazioni sulla risoluzione di un errore di configurazione con un nodo di calcolo, consulta la sezione successiva.

Nodi di calcolo statici:

  • Controlla il registro clustermgtd (/var/log/parallelcluster/clustermgtd) per vedere se sono state lanciate istanze per il nodo. Se non sono state avviate, dovrebbe apparire un messaggio di errore chiaro che descrive in dettaglio l'errore di avvio.

  • Se l'istanza viene avviata, c'è qualche problema durante il processo di configurazione. Dovresti vedere l'indirizzo IP privato e l'ID dell'istanza corrispondenti dal ResumeProgram registro. Inoltre, puoi consultare i registri di configurazione corrispondenti per l'istanza specifica.

Nodi di calcolo supportati da istanze Spot:

  • Se è la prima volta che utilizzi le istanze Spot e il lavoro rimane in un PD (stato in sospeso), ricontrolla il file. /var/log/parallelcluster/slurm_resume.log Probabilmente troverai un errore come il seguente:

    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.

    Quando utilizzi le istanze Spot, nel tuo account deve esistere un ruolo AWSServiceRoleForEC2Spot collegato al servizio. Per creare questo ruolo nel tuo account utilizzando AWS CLI, esegui il seguente comando:

    $ aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

    Per ulteriori informazioni, consulta Utilizzo di Istanze spot la Guida per l' AWS ParallelCluster utente e il ruolo collegato ai servizi per le richieste di istanze Spot nella Amazon EC2 User Guide.

Risoluzione dei problemi di sostituzioni e terminazioni impreviste dei nodi

Questa sezione continua a esplorare come risolvere i problemi relativi ai nodi, in particolare quando un nodo viene sostituito o terminato in modo imprevisto.

  • Registri applicabili:

    • /var/log/parallelcluster/clustermgtd(nodo principale)

    • /var/log/slurmctld.log(nodo principale)

    • /var/log/parallelcluster/computemgtd(nodo di calcolo)

Nodi sostituiti o terminati in modo imprevisto

  • Controlla nel clustermgtd log (/var/log/parallelcluster/clustermgtd) per vedere se un nodo clustermgtd è stato sostituito o terminato. Nota che clustermgtd gestisce tutte le normali azioni di manutenzione del nodo.

  • Se il nodo clustermgtd viene sostituito o terminato, dovrebbe esserci un messaggio che spiega in dettaglio il motivo per cui è stata intrapresa questa azione sul nodo. Se il motivo è correlato allo scheduler (ad esempio, perché il nodo è attivoDOWN), controlla il slurmctld log in per ulteriori informazioni. Se il motivo è EC2 correlato ad Amazon, dovrebbe esserci un messaggio informativo che descriva in dettaglio il problema EC2 relativo ad Amazon che ha richiesto la sostituzione.

  • Se clustermgtd non hai terminato il nodo, controlla innanzitutto se si trattava di una terminazione prevista da parte di AmazonEC2, in particolare di una terminazione puntuale. computemgtd, in esecuzione su un nodo di elaborazione, può anche terminare un nodo se clustermgtd viene determinato come non integro. Controlla computemgtd log (/var/log/parallelcluster/computemgtd) per vedere se il nodo è computemgtd terminato.

Nodi falliti

  • Controlla slurmctld log (/var/log/slurmctld.log) per vedere perché un job o un nodo non sono riusciti. Tieni presente che i lavori vengono automaticamente messi in coda in caso di errore di un nodo.

  • Se slurm_resume segnala che il nodo è stato avviato e dopo alcuni minuti clustermgtd segnala che non esiste un'istanza corrispondente in Amazon EC2 per quel nodo, il nodo potrebbe fallire durante la configurazione. Per recuperare il log da un compute (/var/log/cloud-init-output.log), procedi nel seguente modo:

    • Invia un lavoro a let Slurm avvia un nuovo nodo.

    • Attendi l'avvio del nodo di calcolo.

    • Modifica il comportamento di chiusura avviato dall'istanza in modo che un nodo di calcolo guasto venga interrotto anziché terminato.

      $ aws ec2 modify-instance-attribute \ --instance-id i-1234567890abcdef0 \ --instance-initiated-shutdown-behavior "{\"Value\": \"stop\"}"
    • Abilita la protezione da cessazione.

      $ aws ec2 modify-instance-attribute \ --instance-id i-1234567890abcdef0 \ --disable-api-termination
    • Contrassegna il nodo in modo che sia facilmente identificabile.

      $ aws ec2 create-tags \ --resources i-1234567890abcdef0 \ --tags Key=Name,Value=QUARANTINED-Compute
    • Stacca il nodo dal cluster modificando il parallelcluster:cluster-name tag.

      $ aws ec2 create-tags \ --resources i-1234567890abcdef0 \ --tags Key=parallelcluster:clustername,Value=QUARANTINED-ClusterName
    • Recupera l'output della console dal nodo con questo comando.

      $ aws ec2 get-console-output --instance-id i-1234567890abcdef0 --output text

Sostituzione, interruzione o spegnimento di istanze e nodi problematici

  • Registri applicabili:

    • /var/log/parallelcluster/clustermgtd(nodo principale)

    • /var/log/parallelcluster/slurm_suspend.log(nodo principale)

  • Nella maggior parte dei casi, clustermgtd gestisce tutte le azioni di terminazione previste dell'istanza. Controlla il clustermgtd registro per vedere perché non è riuscito a sostituire o terminare un nodo.

  • Se i nodi dinamici non funzionano SlurmSettingsProprietà correttamente, controlla il SuspendProgram registro per vedere se SuspendProgram è stato chiamato usando slurmctld il nodo specifico come argomento. Nota che in realtà SuspendProgram non esegue alcuna azione. Piuttosto, registra solo quando viene chiamato. La terminazione e il NodeAddr ripristino di tutte le istanze vengono eseguiti da. clustermgtd Slurm riporta SuspendTimeout automaticamente i nodi in uno POWER_SAVING stato.

  • Se i nodi di calcolo falliscono continuamente a causa di errori di bootstrap, verifica se vengono avviati con enabled. Slurmmodalità protetta dal cluster Se la modalità protetta non è abilitata, modifica le impostazioni della modalità protetta per abilitare la modalità protetta. Risolvi i problemi e correggi lo script di bootstrap.

Stato della coda (partizione) Inactive

Se si esegue sinfo e l'output mostra code con AVAIL stato diinact, è possibile che il cluster sia Slurmmodalità protetta dal cluster abilitato e che la coda sia stata impostata sullo INACTIVE stato per un periodo di tempo predefinito.

Risoluzione di altri problemi noti relativi a nodi e processi

Un altro tipo di problema noto è che AWS ParallelCluster potrebbe non riuscire ad allocare i lavori o a prendere decisioni sulla scalabilità. Con questo tipo di problema, avvia, termina o gestisce le risorse AWS ParallelCluster solo in base a Slurm istruzioni. Per questi problemi, controlla il slurmctld registro per risolverli.