Problèmes connus

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Cette page répertorie les problèmes connus liés à Cloud Composer. Pour en savoir plus sur les corrections de bugs, consultez les notes de version.

La première exécution du DAG pour un fichier de DAG importé comporte plusieurs tâches ayant échoué

Lorsque vous importez un fichier de DAG, il se peut que les premières tâches de la première exécution de DAG associée à ce fichier échouent avec l'erreur Unable to read remote log.... Ce problème est dû au fait que le fichier de DAG est synchronisé entre le bucket de votre environnement, les nœuds de calcul Airflow et les programmeurs Airflow de votre environnement. Si le planificateur obtient le fichier de DAG et planifie son exécution par un nœud de calcul alors que ce nœud de calcul ne dispose pas encore du fichier de DAG, l'exécution de la tâche échoue.

Pour atténuer ce problème, les environnements avec Airflow 2 sont configurés pour effectuer par défaut deux tentatives pour chaque tâche ayant échoué. Si une tâche échoue, elle est relancée deux fois avec un intervalle de cinq minutes.

Cloud Composer ne devrait pas être affecté par la faille Apache Log4j 2 (CVE-2021-44228)

En réponse à la faille Apache Log4j 2 (CVE-2021-44228), Cloud Composer a mené une enquête détaillée et nous pensons que Cloud Composer n'est pas vulnérable à cet exploit.

L'interface utilisateur d'Airflow peut parfois ne pas recharger un plug-in une fois qu'il a été modifié.

Si un plug-in se compose de nombreux fichiers qui importent d'autres modules, l'interface utilisateur d'Airflow risque de ne pas pouvoir reconnaître qu'un plug-in doit être réactivé. Dans ce cas, redémarrez le serveur Web Airflow de votre environnement.

Erreur 504 lors de l'accès à l'interface utilisateur d'Airflow

L'erreur 504 Gateway Timeout peut s'afficher lorsque vous accédez à l'interface utilisateur d'Airflow. Cette erreur peut avoir plusieurs causes:

  • Problème de communication temporaire. Dans ce cas, essayez d'accéder à l'interface utilisateur d'Airflow plus tard. Vous pouvez également redémarrer le serveur Web Airflow.

  • (Cloud Composer 3 uniquement) Problème de connectivité. Si l'interface utilisateur d'Airflow est définitivement indisponible et que des erreurs de délai avant expiration ou 504 sont générées, assurez-vous que votre environnement peut accéder à *.composer.googleusercontent.com.

  • (Cloud Composer 2 uniquement) Problème de connectivité. Si l'interface utilisateur d'Airflow est définitivement indisponible et que des erreurs de délai avant expiration ou 504 sont générées, assurez-vous que votre environnement peut accéder à *.composer.cloud.google.com. Si vous utilisez l'accès Google privé et que vous envoyez du trafic via des adresses IP virtuelles private.googleapis.com, ou si vous utilisez VPC Service Controls et que vous envoyez du trafic via des adresses IP virtuelles restricted.googleapis.com, assurez-vous que votre Cloud DNS est également configuré pour les noms de domaine *.composer.cloud.google.com.

  • Le serveur Web Airflow ne répond pas. Si l'erreur 504 persiste, mais que vous pouvez toujours accéder à l'interface utilisateur d'Airflow à certains moments, le serveur Web Airflow peut ne pas répondre, car il est surchargé. Essayez d'augmenter les paramètres de scaling et de performances du serveur Web.

Erreur 502 lors de l'accès à l'interface utilisateur d'Airflow

L'erreur 502 Internal server exception indique que l'interface utilisateur d'Airflow ne peut pas traiter les requêtes entrantes. Cette erreur peut avoir plusieurs causes:

  • Problème de communication temporaire. Essayez d'accéder à l'interface utilisateur d'Airflow plus tard.

  • Échec du démarrage du serveur Web. Pour démarrer, le serveur Web doit d'abord synchroniser les fichiers de configuration. Recherchez dans les journaux du serveur Web des entrées qui ressemblent à: GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/airflow.cfg /home/airflow/gcs/airflow.cfg.tmp ou GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/env_var.json.cfg /home/airflow/gcs/env_var.json.tmp. Si ces erreurs s'affichent, vérifiez si les fichiers mentionnés dans les messages d'erreur sont toujours présents dans le bucket de l'environnement.

    En cas de suppression accidentelle (par exemple, en raison de la configuration d'une règle de conservation), vous pouvez les restaurer:

    1. Définissez une nouvelle variable d'environnement dans votre environnement. Vous pouvez utiliser n'importe quel nom et valeur de variable.

    2. Remplacez une option de configuration Airflow. Vous pouvez utiliser une option de configuration Airflow inexistante.

Pointer sur une instance de tâche dans la vue Arborescence génère une erreur TypeError non détectée

Dans Airflow 2, l'affichage en arborescence de l'interface utilisateur d'Airflow peut parfois ne pas fonctionner correctement lorsqu'un fuseau horaire autre que celui par défaut est utilisé. Pour contourner ce problème, configurez explicitement le fuseau horaire dans l'interface utilisateur d'Airflow.

Dossiers vides dans le programmeur et les nœuds de calcul

Cloud Composer ne supprime pas activement les dossiers vides des nœuds de calcul et des planificateurs Airflow. Ces entités peuvent être créées à la suite du processus de synchronisation du bucket d'environnement lorsque ces dossiers existaient dans le bucket et ont finalement été supprimés.

Recommandation: Ajustez vos DAG afin qu'ils soient prêts à ignorer ces dossiers vides.

Ces entités sont finalement supprimées des espaces de stockage locaux des planificateurs et des nœuds de calcul Airflow lorsque ces composants sont redémarrés (par exemple, en raison d'une réduction de l'échelle ou d'opérations de maintenance dans le cluster de votre environnement).

Compatibilité avec Kerberos

Cloud Composer n'est pas compatible avec la configuration Kerberos d'Airflow.

Prise en charge des classes de calcul dans Cloud Composer 2 et Cloud Composer 3

Cloud Composer 3 et Cloud Composer 2 ne sont compatibles qu'avec la classe de calcul à usage général. Cela signifie qu'il n'est pas possible d'exécuter des pods qui demandent d'autres classes de calcul (telles que Équilibré ou Évolutif).

La classe à usage général permet d'exécuter des pods demandant jusqu'à 110 Go de mémoire et jusqu'à 30 processeurs (comme décrit dans la section Demandes maximales de la classe de calcul).

Si vous souhaitez utiliser une architecture ARM ou si vous avez besoin de plus de processeurs et de mémoire, vous devez utiliser une classe de calcul différente, qui n'est pas compatible avec les clusters Cloud Composer 3 et Cloud Composer 2.

Recommandation: Utilisez GKEStartPodOperator pour exécuter des pods Kubernetes sur un autre cluster compatible avec la classe de calcul sélectionnée. Si vous exécutez des pods personnalisés nécessitant une classe de calcul différente, ils doivent également s'exécuter sur un cluster autre que Cloud Composer.

Il est impossible de réduire l'espace de stockage Cloud SQL

Cloud Composer utilise Cloud SQL pour exécuter la base de données Airflow. Au fil du temps, l'espace de stockage sur disque de l'instance Cloud SQL peut augmenter, car le disque est mis à l'échelle pour s'adapter aux données stockées par les opérations Cloud SQL lorsque la base de données Airflow augmente.

Vous ne pouvez pas réduire la taille du disque Cloud SQL.

Pour contourner ce problème, si vous souhaitez utiliser la plus petite taille de disque Cloud SQL, vous pouvez recréer des environnements Cloud Composer à l'aide de instantanés.

La métrique d'utilisation de l'espace disque de la base de données ne diminue pas après la suppression d'enregistrements de Cloud SQL

Les bases de données relationnelles, telles que Postgres ou MySQL, ne suppriment pas physiquement les lignes lorsqu'elles sont supprimées ou mises à jour. Au lieu de cela, il les marque comme "tuples morts" pour assurer la cohérence des données et éviter de bloquer les transactions simultanées.

MySQL et Postgres implémentent des mécanismes de récupération d'espace après la suppression d'enregistrements.

Bien qu'il soit possible de forcer la base de données à récupérer l'espace disque inutilisé, il s'agit d'une opération gourmande en ressources qui verrouille également la base de données, ce qui rend Cloud Composer indisponible. Il est donc recommandé de s'appuyer sur les mécanismes de compilation pour récupérer l'espace inutilisé.

Accès bloqué : erreur d'autorisation

Si ce problème affecte un utilisateur, la boîte de dialogue Accès bloqué: erreur d'autorisation contient le message Error 400: admin_policy_enforced.

Si l'option Contrôles des API > Applications tierces non configurées > Ne pas autoriser les utilisateurs à accéder aux applications tierces est activée dans Google Workspace et que l'application Apache Airflow dans Cloud Composer n'est pas explicitement autorisée, les utilisateurs ne peuvent pas accéder à l'interface utilisateur d'Airflow, sauf s'ils autorisent explicitement l'application.

Pour autoriser l'accès, suivez les étapes décrites dans la section Autoriser l'accès à l'UI Airflow dans Google Workspace.

Boucle de connexion lors de l'accès à l'interface utilisateur d'Airflow

Ce problème peut être dû aux raisons suivantes:

Les composants Airflow rencontrent des problèmes lors de la communication avec d'autres parties de la configuration Cloud Composer

Dans de très rares cas, la lenteur de la communication avec le serveur de métadonnées Compute Engine peut entraîner un fonctionnement non optimal des composants Airflow. Par exemple, le planificateur Airflow peut être redémarré, les tâches Airflow peuvent devoir être réessayées ou le temps de démarrage des tâches peut être plus long.

Symptômes :

Les erreurs suivantes s'affichent dans les journaux des composants Airflow (tels que les planificateurs Airflow, les nœuds de calcul ou le serveur Web):

Authentication failed using Compute Engine authentication due to unavailable metadata server

Compute Engine Metadata server unavailable on attempt 1 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 2 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 3 of 3. Reason: timed out

Solution :

Définissez la variable d'environnement suivante: GCE_METADATA_TIMEOUT=30.

Le dossier /data n'est pas disponible dans le serveur Web Airflow

Dans Cloud Composer 2 et Cloud Composer 3, le serveur Web Airflow est censé être un composant principalement en lecture seule, et Cloud Composer ne synchronise pas le dossier data/ avec ce composant.

Vous pouvez parfois souhaiter partager des fichiers communs entre tous les composants Airflow, y compris le serveur Web Airflow.

Solution :

  • Encapsulez les fichiers à partager avec le serveur Web dans un module PYPI et installez-le en tant que package PYPI standard. Une fois le module PYPI installé dans l'environnement, les fichiers sont ajoutés aux images des composants Airflow et sont disponibles pour eux.

  • Ajoutez des fichiers au dossier plugins/. Ce dossier est synchronisé avec le serveur Web Airflow.

Diagrammes de durées d'analyse des DAG non continues et de taille des sacs de DAG dans la surveillance

Les temps d'analyse des DAG non continus et les diagrammes de taille de la poche DAG dans le tableau de bord de surveillance indiquent des problèmes liés à de longs temps d'analyse des DAG (plus de cinq minutes).

Graphiques des temps d&#39;analyse des DAG Airflow et de la taille des sacs DAG montrant une série d&#39;intervalles non continus
Figure 1 Graphiques de durée d'analyse des DAG non continue et de taille de sac des DAG (cliquez pour agrandir)

Solution:Nous vous recommandons de limiter la durée d'analyse totale du DAG à cinq minutes. Pour réduire le temps d'analyse des DAG, suivez les consignes d'écriture des DAG.

Les journaux des tâches s'affichent avec des retards

Symptôme :

  • Dans Cloud Composer 3, les journaux des tâches Airflow n'apparaissent pas immédiatement et sont retardés de quelques minutes.

Cause :

Si votre environnement exécute un grand nombre de tâches en même temps, les journaux de tâches peuvent être retardés, car la taille de l'infrastructure de l'environnement n'est pas suffisante pour traiter tous les journaux assez rapidement.

Solutions :

  • Envisagez d'augmenter la taille de l'infrastructure de l'environnement pour améliorer les performances.
  • Distribuez les exécutions de DAG au fil du temps afin que les tâches ne soient pas exécutées en même temps.

Amélioration des temps de démarrage de KubernetesPodOperator et KubernetesExecutor

Les pods créés avec KubernetesPodOperator et les tâches exécutées avec KubernetesExecutor voient leurs temps de démarrage augmenter. L'équipe Cloud Composer travaille sur une solution et vous informera lorsque le problème sera résolu.

Solutions :

  • Lancez des pods avec plus de CPU.
  • Si possible, optimisez les images (moins de calques, taille plus petite).

L'environnement est à l'état "ERROR" (ERREUR) après la suppression ou la désactivation du compte de facturation du projet, ou la désactivation de l'API Cloud Composer

Les environnements Cloud Composer concernés par ces problèmes ne sont pas récupérables:

  • Après la suppression ou la désactivation du compte de facturation du projet, même si un autre compte a été associé par la suite.
  • Après que l'API Cloud Composer a été désactivée dans le projet, même si elle a été activée par la suite.

Pour résoudre le problème, procédez comme suit:

  • Vous pouvez toujours accéder aux données stockées dans les buckets de votre environnement, mais ceux-ci ne sont plus utilisables. Vous pouvez créer un environnement Cloud Composer, puis transférer vos DAG et vos données.

  • Si vous souhaitez effectuer l'une des opérations qui rendent vos environnements non récupérables, veillez à sauvegarder vos données, par exemple en créant un instantané d'un environnement. Vous pouvez ainsi créer un autre environnement et transférer ses données en chargeant cet instantané.

Étape suivante