Résoudre les problèmes liés au serveur Web Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Cette page fournit des étapes de dépannage et des informations sur les problèmes courants liés au serveur Web Airflow.

Le serveur Web Airflow est un composant Airflow qui fournit une interface utilisateur permettant de gérer les DAG et les tâches Airflow. Cette page décrit la procédure de dépannage pour divers problèmes d'accès au serveur Web Airflow de votre environnement ou pour les avertissements liés au serveur Web visibles dans les journaux Airflow.

Impossible d'accéder à l'interface utilisateur d'Airflow lorsque les contrôles des accès réseau sont activés

Symptôme: Une fois les contrôles d'accès au serveur Web configurés, il n'est pas possible d'accéder à l'interface utilisateur d'Airflow. En général, le code d'erreur affiché dans cette situation est 403.

Informations sur le problème: Cloud Composer est compatible avec les contrôles d'accès au réseau du serveur Web, qui vous permettent de spécifier les plages d'adresses IP autorisées à se connecter au serveur Web.

Les problèmes d'accès à l'interface utilisateur d'Airflow entraînent généralement l'erreur 403. Pour vérifier si l'erreur est liée aux contrôles d'accès réseau du serveur Web, procédez comme suit:

  1. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.
  2. Accédez à l'onglet Configuration de l'environnement.
  3. Vérifiez si l'élément Contrôle de l'accès au serveur Web est défini sur Toutes les adresses IP ont accès (valeur par défaut).
  4. Si une valeur différente de Toutes les adresses IP ont accès (par défaut) est configurée, le contrôle des accès réseau est activé et la visibilité de l'interface utilisateur d'Airflow est limitée aux plages d'adresses IPv4 et IPv6 fournies. Dans ce cas, le problème peut être lié aux contrôles des accès réseau au serveur Web.

Dans la plupart des cas, le problème est dû à une incompatibilité entre l'adresse IP prévue que vous avez spécifiée et l'adresse IP qui est réellement résolue pour se connecter à l'interface utilisateur d'Airflow. Pour résoudre le problème, procédez comme suit:

  1. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.

  2. Accédez à l'onglet Configuration de l'environnement.

  3. Recherchez l'élément Contrôle de l'accès au serveur Web, puis cliquez sur Modifier.

  4. Dans la boîte de dialogue Contrôle de l'accès réseau au serveur Web, sélectionnez Autoriser l'accès à partir de toutes les adresses IP.

  5. Accédez à l'interface utilisateur d'Airflow plusieurs fois et vérifiez qu'elle fonctionne sans problème:

    • Si le problème ne se produit pas, passez à l'étape suivante.

    • Si vous rencontrez un problème à ce stade, cela signifie qu'il est peut-être lié à la configuration de vos autorisations IAM. Pour en savoir plus sur les autorisations IAM pour Cloud Composer, consultez la section Contrôle des accès.

  6. Dans la boîte de dialogue Contrôle de l'accès réseau au serveur Web, sélectionnez Autoriser l'accès uniquement depuis des adresses IP spécifiques.

  7. Ajoutez la plage d'adresses IP 0.0.0.0/0, puis accédez à l'interface utilisateur d'Airflow plusieurs fois et vérifiez qu'elle fonctionne sans problème:

    • Si vous ne rencontrez aucun problème, l'adresse IP à laquelle vous vous connectez est une adresse IPv4.

    • Si vous rencontrez un problème à ce stade, cela signifie que l'adresse IP à laquelle vous vous connectez est une adresse IPv6.

  8. Supprimez la plage d'adresses IP 0.0.0.0/0, puis ajoutez la plage d'adresses IP ::/0.

    • Si vous ne rencontrez aucun problème, l'adresse IP à laquelle vous vous connectez est une adresse IPv6.

    • Si vous rencontrez un problème à ce stade, cela signifie que l'adresse IP à laquelle vous vous connectez est une adresse IPv4.

  9. Vous avez maintenant déterminé si votre adresse résolue est IPv4 ou IPv6.

  10. En fonction du type d'adresse, affinez les plages ::/0 ou 0.0.0.0/0 pour obtenir des plages plus spécifiques, afin de vérifier la plage la plus large lorsque l'accès ne fonctionne plus:

    • Vous pouvez commencer par le masque de sous-réseau large (par exemple, 192.0.2.0/8) qui inclut l'adresse que vous supposez être votre adresse IP.

    • Pour déterminer votre adresse IP, vous pouvez utiliser un service tiers qui fournit votre adresse IP externe lorsque vous consultez sa page. Vous pouvez rechercher ces services à l'aide de la requête de recherche "Quelle est mon adresse IP ?".

Les valeurs de configuration ne s'affichent pas sur la page de configuration

Certains paramètres de configuration d'Airflow sont masqués sur la page de configuration pour empêcher l'accès à des informations potentiellement sensibles. Par exemple, les identifiants permettant d'accéder à la base de données Airflow ne sont pas affichés.

Pour afficher les champs masqués, remplacez l'option de configuration Airflow suivante. Nous vous recommandons de revenir à l'état initial après avoir obtenu les valeurs requises.

Section Clé Valeur Remarques
webserver expose_config True La valeur par défaut est non-sensitive-only. Définissez cette valeur sur False pour masquer tous les paramètres de configuration.

Le DAG bloque le serveur Web Airflow ou lui fait renvoyer une erreur "502 gateway timeout"

Des défaillances du serveur Web peuvent survenir pour plusieurs raisons. Consultez les journaux airflow-webserver dans Cloud Logging pour déterminer la cause de l'erreur 502 gateway timeout.

Calculs lourds

Cette section ne s'applique qu'à Cloud Composer 1.

Contrairement aux nœuds de calcul et de planificateur, dont les types de machine peuvent être personnalisés pour augmenter la capacité du processeur et de la mémoire, le serveur Web utilise un type de machine fixe, ce qui peut entraîner des échecs d'analyse du DAG si les calculs réalisés au moment de l'analyse sont trop lourds.

Veuillez prendre en compte que le serveur Web dispose de deux processeurs virtuels et de 2 Go de mémoire. La valeur par défaut pour core-dagbag_import_timeout est de 30 secondes. La valeur du délai avant expiration définit la limite supérieure de la durée pendant laquelle Airflow charge un module Python dans le dossier /dags.

Autorisations incorrectes

Cette section ne s'applique qu'à Cloud Composer 1.

Le serveur Web ne s'exécute pas sous le même compte de service que les nœuds de calcul et le planificateur. En tant que tels, les nœuds de calcul et le planificateur peuvent être en mesure d'accéder à des ressources gérées par l'utilisateur auxquelles le serveur Web n'a pas accès.

Nous vous recommandons d'éviter l'accès à des ressources non publiques lors de l'analyse du DAG. Parfois, c'est inévitable et vous devrez accorder des autorisations au compte de service du serveur Web. Le nom du compte de service est dérivé du domaine de serveur Web. Par exemple, si le domaine est example-tp.appspot.com, le compte de service est example-tp@appspot.gserviceaccount.com.

Erreurs du DAG

Cette section ne s'applique qu'à Cloud Composer 1.

Le serveur Web s'exécute sur App Engine et est distinct du cluster GKE de votre environnement. Le serveur Web analyse les fichiers de définition du DAG, et une erreur 502 gateway timeout peut se produire en cas d'erreurs dans le DAG. Airflow fonctionne normalement sans serveur Web fonctionnel si le DAG problématique n'interrompt aucun processus en cours d'exécution dans GKE. Dans ce cas, vous pouvez utiliser gcloud composer environments run pour récupérer des détails de votre environnement ou comme solution de contournement en cas d'indisponibilité du serveur Web.

Dans d'autres cas, vous pouvez exécuter l'analyse du DAG dans GKE et rechercher les DAG générant des exceptions fatales Python ou ce délai d'expiration (30 secondes par défaut). Pour résoudre ce problème, connectez-vous à une interface système distante dans un conteneur de nœud de calcul Airflow et testez les erreurs de syntaxe. Pour en savoir plus, reportez-vous à la section Tester les DAG.

Étapes suivantes