View a markdown version of this page

Résolution des problèmes de dimensionnement - AWS ParallelCluster

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes de dimensionnement

Cette section concerne les clusters installés à l'aide de la AWS ParallelCluster version 3.0.0 et ultérieure avec le planificateur de Slurm tâches. Pour plus d'informations sur la configuration de plusieurs files d'attente, consultezConfiguration de plusieurs files d'attente.

Si l'un de vos clusters en cours d'exécution rencontre des problèmes, mettez-le dans un STOPPED état en exécutant la commande suivante avant de commencer à résoudre les problèmes. Cela permet d'éviter des coûts imprévus.

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

Vous pouvez répertorier les flux de journaux disponibles depuis les nœuds du cluster à l'aide de la pcluster list-cluster-log-streams commande et en filtrant à l'aide private-dns-name de celui de l'un des nœuds défaillants ou du nœud principal :

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

Ensuite, vous pouvez récupérer le contenu du flux de journaux pour l'analyser en utilisant la pcluster get-cluster-log-events commande et en transmettant le contenu --log-stream-name correspondant à l'un des journaux clés mentionnés dans la section suivante :

$ 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 crée des flux de CloudWatch journaux de cluster dans des groupes de journaux. Vous pouvez consulter ces journaux dans les tableaux de bord personnalisés ou les groupes de journaux de la CloudWatch console. Pour plus d’informations, consultez Intégration à Amazon CloudWatch Logs et Tableau de CloudWatch bord Amazon.

Journaux clés pour le débogage

Le tableau suivant fournit une vue d'ensemble des journaux de clés pour le nœud principal :

  • /var/log/cfn-init.log- C'est le journal CloudFormation d'initialisation. Il contient toutes les commandes qui ont été exécutées lors de la configuration d'une instance. Utilisez-le pour résoudre les problèmes d'initialisation.

  • /var/log/chef-client.log- Il s'agit du journal du client Chef. Il contient toutes les commandes qui ont été exécutées Chef/CINC. Utilisez-le pour résoudre les problèmes d'initialisation.

  • /var/log/parallelcluster/slurm_resume.log- C'est un ResumeProgram journal. Il lance des instances pour les nœuds dynamiques. Utilisez-le pour résoudre les problèmes de lancement de nœuds dynamiques.

  • /var/log/parallelcluster/slurm_suspend.log- Voici le SuspendProgram journal. Il est appelé lorsque les instances sont terminées pour les nœuds dynamiques. Utilisez-le pour résoudre les problèmes de terminaison des nœuds dynamiques. Lorsque vous consultez ce journal, vous devez également consulter le clustermgtd journal.

  • /var/log/parallelcluster/clustermgtd- Voici le clustermgtd journal. Il s'exécute en tant que démon centralisé qui gère la plupart des actions opérationnelles du cluster. Utilisez-le pour résoudre tout problème de lancement, de terminaison ou de fonctionnement du cluster.

  • /var/log/slurmctld.log- Il s'agit du journal du démon de Slurm contrôle. AWS ParallelCluster ne prend pas de décisions de dimensionnement. Au contraire, il tente uniquement de lancer des ressources pour répondre aux Slurm exigences. Il est utile pour les problèmes de dimensionnement et d'allocation, les problèmes liés aux tâches et tout problème de lancement et de résiliation lié au planificateur.

  • /var/log/parallelcluster/compute_console_output- Ce journal enregistre la sortie de console d'un sous-ensemble d'exemples de nœuds de calcul statiques qui se sont arrêtés de manière inattendue. Utilisez ce journal si les nœuds de calcul statiques se terminent et que les journaux des nœuds de calcul ne sont pas disponibles dans CloudWatch. Le compute_console_output log contenu que vous recevez est le même lorsque vous utilisez la console Amazon EC2 ou AWS CLI pour récupérer la sortie de la console d'instance.

Voici les journaux de clés pour les nœuds de calcul :

  • /var/log/cloud-init-output.log- Il s'agit du journal d'initialisation du cloud. Il contient toutes les commandes qui ont été exécutées lors de la configuration d'une instance. Utilisez-le pour résoudre les problèmes d'initialisation.

  • /var/log/parallelcluster/computemgtd- Voici le computemgtd journal. Il s'exécute sur chaque nœud de calcul pour surveiller le nœud dans le cas rare où le clustermgtd démon du nœud principal serait hors ligne. Utilisez-le pour résoudre les problèmes de résiliation imprévus.

  • /var/log/slurmd.log- Il s'agit du journal du démon de Slurm calcul. Utilisez-le pour résoudre les problèmes d'initialisation et de panne de calcul.

Affichage d'InsufficientInstanceCapacityune erreur dans slurm_resume.log lorsque je ne parviens pas à gérer un travail, ou dans clustermgtd.log quand je ne parviens pas à créer un cluster

Si le cluster utilise un Slurm planificateur, cela signifie que vous rencontrez un problème de capacité insuffisante. S'il n'y a pas assez d'instances disponibles lorsqu'une demande de lancement d'instance est effectuée, une InsufficientInstanceCapacity erreur est renvoyée.

Pour ce qui est de la capacité d'instance statique, vous pouvez trouver l'erreur dans le clustermgtd journal à l'adresse/var/log/parallelcluster/clustermgtd.

Pour ce qui est de la capacité dynamique des instances, vous pouvez trouver l'erreur dans le ResumeProgram journal à l'adresse/var/log/parallelcluster/slurm_resume.log.

Le message ressemble à l'exemple suivant :

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

Selon votre cas d'utilisation, envisagez d'utiliser l'une des méthodes suivantes pour éviter de recevoir ce type de messages d'erreur :

Résolution des problèmes d'initialisation des nœuds

Cette section explique comment résoudre les problèmes d'initialisation des nœuds. Cela inclut les problèmes où le nœud ne parvient pas à démarrer, à démarrer ou à rejoindre un cluster.

Nœud principal

Journaux applicables :

  • /var/log/cfn-init.log

  • /var/log/chef-client.log

  • /var/log/parallelcluster/clustermgtd

  • /var/log/parallelcluster/slurm_resume.log

  • /var/log/slurmctld.log

Vérifiez les /var/log/chef-client.log journaux /var/log/cfn-init.log et ou les flux de journaux correspondants. Ces journaux contiennent toutes les actions qui ont été exécutées lors de la configuration du nœud principal. La plupart des erreurs qui se produisent lors de l'installation doivent comporter des messages d'erreur dans le /var/log/chef-client.log journal. Si OnNodeStart des OnNodeConfigured scripts sont spécifiés dans la configuration du cluster, vérifiez que le script s'exécute correctement via les messages du journal.

Lorsqu'un cluster est créé, le nœud principal doit attendre que les nœuds de calcul rejoignent le cluster avant de pouvoir rejoindre le cluster. De ce fait, si les nœuds de calcul ne parviennent pas à rejoindre le cluster, le nœud principal échoue également. Vous pouvez suivre l'un des ensembles de procédures suivants, en fonction du type de notes de calcul que vous utilisez, pour résoudre ce type de problème :

Nœuds de calcul

  • Journaux applicables :

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

    • /var/log/slurmd.log

  • Si un nœud de calcul est lancé, vérifiez d'abord/var/log/cloud-init-output.log, qui doit contenir des journaux de configuration similaires à ceux du nœud principal. /var/log/chef-client.log La plupart des erreurs qui se produisent lors de l'installation doivent comporter des messages d'erreur dans le /var/log/cloud-init-output.log journal. Si des scripts de pré-installation ou de post-installation sont spécifiés dans la configuration du cluster, vérifiez qu'ils se sont correctement exécutés.

  • Si vous utilisez une AMI personnalisée dont la Slurm configuration est modifiée, il se peut qu'une Slurm erreur associée empêche le nœud de calcul de rejoindre le cluster. Pour les erreurs liées au planificateur, consultez le journal. /var/log/slurmd.log

Nœuds de calcul dynamiques :

  • Recherchez le nom de votre nœud de calcul dans le ResumeProgram journal (/var/log/parallelcluster/slurm_resume.log) pour voir s'il ResumeProgram a déjà été appelé avec ce nœud. (Si vous ResumeProgram n'avez jamais été appelé, vous pouvez consulter le slurmctld journal (/var/log/slurmctld.log) pour déterminer si vous avez Slurm déjà essayé d'appeler ResumeProgram avec le nœud).

  • Notez que des autorisations incorrectes ResumeProgram peuvent ResumeProgram entraîner un échec silencieux. Si vous utilisez une AMI personnalisée dont la ResumeProgram configuration a été modifiée, vérifiez qu'elle ResumeProgram appartient à l'slurmutilisateur et qu'elle possède l'autorisation 744 (rwxr--r--).

  • S'ResumeProgramil est appelé, vérifiez si une instance est lancée pour le nœud. Si aucune instance n'a été lancée, vous pouvez voir un message d'erreur décrivant l'échec du lancement.

  • Si l'instance est lancée, il se peut qu'un problème soit survenu lors du processus de configuration. L'adresse IP privée et l'ID d'instance correspondants devraient apparaître dans le ResumeProgram journal. De plus, vous pouvez consulter les journaux de configuration correspondants pour l'instance spécifique. Pour plus d'informations sur la résolution d'une erreur de configuration avec un nœud de calcul, consultez la section suivante.

Nœuds de calcul statiques :

  • Consultez le journal clustermgtd (/var/log/parallelcluster/clustermgtd) pour voir si des instances ont été lancées pour le nœud. S'ils n'ont pas été lancés, un message d'erreur clair détaillant l'échec du lancement devrait apparaître.

  • Si l'instance est lancée, un problème survient lors du processus de configuration. L'adresse IP privée et l'ID d'instance correspondants devraient apparaître dans le ResumeProgram journal. De plus, vous pouvez consulter les journaux de configuration correspondants pour l'instance spécifique.

Nœuds de calcul soutenus par des instances Spot :

  • Si c'est la première fois que vous utilisez Spot Instances et que la tâche reste dans un PDF (état en attente), vérifiez le /var/log/parallelcluster/slurm_resume.log fichier. Vous trouverez probablement une erreur comme celle-ci :

    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.

    Lorsque vous utilisez des instances Spot, un rôle AWSServiceRoleForEC2Spot lié à un service doit exister dans votre compte. Pour créer ce rôle dans votre compte à l'aide de AWS CLI, exécutez la commande suivante :

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

    Pour plus d'informations, consultez Utilisation de instances Spot le Guide de l' AWS ParallelCluster utilisateur et le Service-linked rôle des demandes d'instance Spot dans le Guide de l'utilisateur Amazon EC2.

Résolution des problèmes de remplacement et de terminaison inattendus de nœuds

Cette section continue à explorer la manière dont vous pouvez résoudre les problèmes liés aux nœuds, en particulier lorsqu'un nœud est remplacé ou arrêté de manière inattendue.

  • Journaux applicables :

    • /var/log/parallelcluster/clustermgtd(nœud principal)

    • /var/log/slurmctld.log(nœud principal)

    • /var/log/parallelcluster/computemgtd(nœud de calcul)

Nœuds remplacés ou arrêtés de façon inattendue

  • Consultez le clustermgtd journal (/var/log/parallelcluster/clustermgtd) pour voir si un nœud a été clustermgtd remplacé ou supprimé. Notez qu'il clustermgtd gère toutes les actions de maintenance normales des nœuds.

  • En cas de clustermgtd remplacement ou d'arrêt du nœud, un message doit apparaître pour expliquer pourquoi cette action a été effectuée sur le nœud. Si la raison est liée au planificateur (par exemple, parce que le nœud est activéDOWN), consultez le slurmctld journal pour plus d'informations. Si la raison est liée à Amazon EC2, un message d'information détaillant le problème lié à Amazon EC2 nécessitant le remplacement devrait apparaître.

  • Si vous clustermgtd n'avez pas résilié le nœud, vérifiez d'abord s'il s'agissait d'une résiliation prévue par Amazon EC2, plus précisément d'une résiliation ponctuelle. computemgtd, qui s'exécute sur un nœud de calcul, peut également mettre fin à un nœud s'il clustermgtd est déterminé comme étant défectueux. Vérifiez computemgtd log (/var/log/parallelcluster/computemgtd) pour voir si le computemgtd nœud a été arrêté.

Les nœuds ont échoué

  • Consultez slurmctld log (/var/log/slurmctld.log) pour savoir pourquoi une tâche ou un nœud a échoué. Notez que les tâches sont automatiquement mises en file d'attente en cas de défaillance d'un nœud.

  • Si slurm_resume le nœud est lancé et qu'il clustermgtd indique au bout de quelques minutes qu'il n'existe aucune instance correspondante dans Amazon EC2 pour ce nœud, il est possible que le nœud échoue lors de la configuration. Pour récupérer le journal à partir d'un compute (/var/log/cloud-init-output.log), procédez comme suit :

    • Soumettez une tâche pour Slurm faire démarrer un nouveau nœud.

    • Attendez que le nœud de calcul démarre.

    • Modifiez le comportement d'arrêt initié par l'instance afin qu'un nœud de calcul défaillant soit arrêté plutôt que fermé.

      $ aws ec2 modify-instance-attribute \ --instance-id i-1234567890abcdef0 \ --instance-initiated-shutdown-behavior "{\"Value\": \"stop\"}"
    • Activer la protection de la résiliation.

      $ aws ec2 modify-instance-attribute \ --instance-id i-1234567890abcdef0 \ --disable-api-termination
    • Marquez le nœud pour qu'il soit facilement identifiable.

      $ aws ec2 create-tags \ --resources i-1234567890abcdef0 \ --tags Key=Name,Value=QUARANTINED-Compute
    • Détachez le nœud du cluster en modifiant la parallelcluster:cluster-name balise.

      $ aws ec2 create-tags \ --resources i-1234567890abcdef0 \ --tags Key=parallelcluster:clustername,Value=QUARANTINED-ClusterName
    • Récupérez la sortie de console depuis le nœud à l'aide de cette commande.

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

Remplacement, arrêt ou mise hors tension des instances et des nœuds problématiques

  • Journaux applicables :

    • /var/log/parallelcluster/clustermgtd(nœud principal)

    • /var/log/parallelcluster/slurm_suspend.log(nœud principal)

  • Dans la plupart des cas, clustermgtd gère toutes les actions de terminaison d'instance attendues. Consultez le clustermgtd journal pour savoir pourquoi il n'a pas réussi à remplacer ou à mettre fin à un nœud.

  • En cas de défaillance d'un nœud dynamiqueSlurmSettingsPropriétés, consultez le SuspendProgram journal pour voir s'il SuspendProgram a été appelé par slurmctld avec le nœud en question comme argument. Notez qu'SuspendProgramil n'effectue aucune action. Au contraire, il ne se connecte que lorsqu'il est appelé. L'arrêt et la NodeAddr réinitialisation de toutes les instances sont effectués parclustermgtd. Slurmremet SuspendTimeout automatiquement les nœuds dans leur POWER_SAVING état d'origine.

  • Si les nœuds de calcul échouent continuellement en raison d'échecs d'amorçage, vérifiez s'ils sont lancés avec Slurm mode protégé par cluster activé. Si le mode protégé n'est pas activé, modifiez les paramètres du mode protégé pour activer le mode protégé. Résolvez et corrigez le script d'amorçage.

État inactif de la file d'attente (partition)

Si vous exécutez sinfo et que la sortie affiche des files d'attente AVAIL dont l'état est égal àinact, votre cluster a peut-être été Slurm mode protégé par cluster activé et la file d'attente a été réglée sur INACTIVE cet état pendant une période prédéfinie.

Résolution d'autres problèmes connus liés aux nœuds et aux tâches

Un autre type de problème connu est l'impossibilité AWS ParallelCluster d'attribuer les tâches ou de prendre des décisions de dimensionnement. Dans ce type de problème, les ressources AWS ParallelCluster ne sont lancées, interrompues ou gérées que conformément aux Slurm instructions. Pour ces problèmes, consultez le slurmctld journal pour les résoudre.