Je souhaite résoudre les problèmes courants liés à mon planificateur dans Amazon Managed Workflows for Apache Airflow (Amazon MWAA).
Brève description
Le planificateur s'exécute en boucle infinie, surveille toutes les tâches et les DAG, et appelle les instances de tâches lorsque leurs dépendances sont terminées. Pour vérifier l'état du planificateur, Apache Airflow vérifie l’état du point de terminaison du planificateur. S'il n'existe aucune pulsation pour scheduler_health_check_threshold, cela signifie que le planificateur est dans un état non sain. La valeur par défaut de scheduler_health_check_threshold est de 30 secondes. La valeur peut être modifiée lorsque vous configurez votre environnement Amazon MWAA.
Si vous rencontrez un problème avec le planificateur, le message d'erreur suivant ou message similaire peut s'afficher :
« The scheduler does not appear to be running. Last heartbeat was received (example time period) ago. The DAGs list may not update and new tasks will not be scheduled. »
Cette erreur se produit souvent pour les raisons suivantes :
- Problèmes de mise en réseau
- Modules incompatibles
- Planificateur surchargé
- DAG rompus
Résolution
Problèmes de mise en réseau
Pour résoudre les problèmes de planification qui peuvent être dus à des problèmes de réseau, vérifiez les points suivants :
- Vérifier les groupes de sécurité Vérifiez que l'un des groupes de sécurité utilise une règle d’auto-référencement sur le port 443 et le port 5432. L'un de ces ports doit utiliser cette règle pour que les groupes de sécurité puissent autoriser le trafic sur celui-ci. Si vous ne disposez pas de la règle d'auto-référencement sur l'un de ces ports, créez une nouvelle règle entrante pour votre groupe de sécurité Amazon MWAA. Créez ensuite une règle d'auto-référencement pour les ports requis. Vérifiez également que vos listes de contrôle d'accès réseau (ACL réseau) ne bloquent pas le trafic vers les ports 443 et 5432.
- Vérifiez les points de terminaison Amazon MWAA. Lorsque vous créez un environnement Amazon MWAA, des points de terminaison d'interface Amazon Virtual Private Cloud (Amazon VPC) sont créés. Les points de terminaison d'interface sont créés pour votre serveur Web Apache Airflow et votre base de données de métadonnées Amazon Aurora PostgreSQL Edition compatible. Si l'un de ces points de terminaison est supprimé, l'environnement Amazon MWAA est interrompu et votre planificateur reçoit un message d'erreur. Pour résoudre ce problème, créez un nouvel environnement Amazon MWAA car ces points de terminaison ne peuvent pas être recréés. Pour plus d'informations, consultez la section Gestion de vos propres points de terminaison Amazon VPC sur Amazon MWAA.
Modules incompatibles
Si vous nécessitez des modules Python supplémentaires qui ne sont pas encore installés dans votre environnement Amazon MWAA, ajoutez un fichier de contraintes contenant les modules Python à votre fichier requirements.txt. Vous pouvez ensuite installer les modules lorsque les composants Amazon MWAA sont provisionnés. Si vous installez une version incompatible d'un module Python pour une version spécifiée d'Apache Airflow, l'environnement peut s'interrompre et provoquer une erreur de planification.
Pour vérifier la présence de modules et de versions incompatibles dans votre environnement Amazon MWAA, consultez les journaux requirements_install pour les environnements de travail et les planificateurs. Vérifiez si les erreurs suivantes ou similaires apparaissent :
« ERROR: You need to upgrade the database. Please run "airflow db upgrade". »
« ERROR: Cannot install (example-package-name and example-version) because these package versions have conflicting dependencies.
The conflict is caused by:
The user requested (example-package-name and example-version).
The user requested (constraint-example-package-name and constraint-example-version). »
Pour résoudre les erreurs précédentes, effectuez les actions suivantes :
- Si vous recevez un message d'erreur indiquant de mettre à niveau la base de données, cela signifie que votre base de métadonnées est endommagée. Vous devez créer un nouvel environnement avec les versions de module appropriées.
- Si vous recevez un message d'erreur indiquant que les versions de vos packages présentent des dépendances conflictuelles, mettez à jour l'environnement avec les versions de module appropriées.
Remarque : Depuis la version 2.7.2 d'Apache Airflow, le fichier de contraintes doit être inclus dans le fichier requirements.txt. Il est recommandé d'utiliser aws-mwaa-local-runner et la bonne version d'Apache Airflow pour tester vos exigences. Pour plus d'informations, consultez la page aws-mwaa-local-runner sur le site Web de GitHub.
Planificateur surchargé
Pour vous assurer que votre planificateur n'est pas surchargé, vérifiez que l’utilisation du processeur et de la mémoire ne dépasse pas 90 %. Il est recommandé de placer le fichier .airflowignore ainsi que tous les dossiers et fichiers qui ne créent pas d'objets DAG dans votre dossier DAG. Cela permet au planificateur de ne pas analyser ces fichiers et dossiers. Pour plus d'informations, consultez la page .airflowignore sur le site Web d'Apache Airflow. Assurez-vous également que les configurations de votre planificateur ne dépassent pas les valeurs maximales. Par exemple, si vous définissez AIRFLOW_SCHEDULER_PARSING_PROCESSES au nombre maximal de cœurs vCPU, cela signifie que les performances du planificateur ont diminué ou que ce dernier est interrompu.
DAG rompus
Si l’un de vos DAG est rompu, le planificateur s'interrompt. Pour résoudre ce problème, supprimez tous les DAG nouveaux ou récemment ajoutés. Puis, ajoutez-les à nouveau un par un jusqu'à ce que vous identifiiez le DAG défectueux. Pour tester vos DAG, utilisez aws-mwaa-local runner. Pour plus d'informations, consultez la page aws-mwaa-local-runner sur le site Web de GitHub.
Informations connexes
Groupes de sécurité VPC