Architecture des environnements Cloud Composer

Cloud Composer 1 | Cloud Composer 2

Cette page décrit l'architecture des environnements Cloud Composer 2.

Configurations d'architecture des environnements

Les environnements Cloud Composer 2 peuvent avoir les configurations d'architecture suivantes :

Chaque configuration modifie légèrement l'architecture des ressources de projet.

Projets clients et locataires

Lorsque vous créez un environnement, Cloud Composer répartit les ressources de celui-ci entre un projet locataire et un projet client.

Le projet client est un projet Google Cloud dans lequel vous créez vos environnements. Vous pouvez créer plusieurs environnements dans un même projet client.

Un projet locataire est un projet locataire géré par Google. Le projet locataire offre un contrôle d'accès unifié et une couche de sécurité des données supplémentaire pour votre environnement. Chaque environnement Cloud Composer possède son propre projet locataire.

Composants d'environnement

Un environnement Cloud Composer est constitué de composants d'environnement.

Un composant d'environnement est un élément d'une infrastructure Airflow gérée qui s'exécute sur Google Cloud dans votre environnement.

Les composants d'environnement s'exécutent dans le projet locataire ou dans le projet client de votre environnement.

Certains des composants de votre environnement sont basés sur des produits Google Cloud autonomes. Les quotas et limites pour ces produits s'appliquent également à vos environnements. Par exemple, les environnements Cloud Composer utilisent les appairages VPC. Les quotas sur le nombre maximal d'appairages VPC s'appliquent à votre projet client. Une fois que votre projet atteint ce nombre maximal d'appairages, vous ne pouvez plus créer d'environnements supplémentaires.

Cluster de l'environnement

Le cluster de l'environnement est un cluster Google Kubernetes Engine VPC natif en mode Autopilot :

  • Les nœuds d'environnement sont des VM dans le cluster de l'environnement.

  • Les pods du cluster de l'environnement exécutent des conteneurs avec d'autres composants de l'environnement, tels que les nœuds de calcul et les programmeurs Airflow. Les pods s'exécutent sur des nœuds d'environnement.

  • Les ressources de charge de travail du cluster de votre environnement gèrent des ensembles de pods dans le cluster de votre environnement. De nombreux composants de votre environnement sont implémentés sous la forme de différents types de ressources de charge de travail. Par exemple, les nœuds de calcul Airflow s'exécutent en tant que déploiements. En plus des déploiements, votre environnement dispose également de types de charges de travail StatefulSet, DaemonSets et Jobs.

Par défaut, Cloud Composer active les mises à niveau automatiques des nœuds et la réparation automatique des nœuds afin de protéger le cluster de votre environnement contre les failles de sécurité. Ces opérations se produisent pendant les intervalles de maintenance que vous spécifiez pour votre environnement.

Programmeurs, déclencheur, nœuds de calcul Airflow et file d'attente Redis

Les programmeurs Airflow contrôlent la planification des exécutions DAG et les tâches individuelles des DAG. Les programmeurs distribuent les tâches aux nœuds de calcul Airflow à l'aide d'une file d'attente Redis qui s'exécute en tant qu'application dans le cluster de votre environnement. Les programmeurs Airflow s'exécutent en tant que déploiements dans le cluster de votre environnement.

Les nœuds de calcul Airflow exécutent des tâches individuelles à partir des DAG en les extrayant de la file d'attente Redis. Les nœuds de calcul Airflow s'exécutent en tant que ressources personnalisées dans le cluster de votre environnement.

Le déclencheur Airflow surveille de manière asynchrone toutes les tâches différées de votre environnement. Vous pouvez configurer le nombre d'instances de déclencheur lorsque vous créez ou mettez à jour des environnements Cloud Composer. Cloud Composer accepte les configurations de déclencheur suivantes:

  • Nombre de déclencheurs:

    • Résilience standard: vous pouvez exécuter jusqu'à 10 déclencheurs
    • Résilience élevée: de 2 déclencheurs au maximum, jusqu'à 10

    Vous pouvez définir le nombre de déclencheurs sur zéro, mais vous aurez besoin d'au moins une instance de déclencheur dans votre environnement (ou au moins deux dans les environnements hautement résilients) pour pouvoir utiliser des opérateurs différables dans vos DAG. Si le nombre de déclencheurs est défini sur zéro, le cluster de votre environnement exécute toujours une charge de travail pour eux, mais avec aucun pod. Cela n'engendre aucun coût.

  • Allocation des ressources du déclencheur:

    • 1 vCPU maximum par déclencheur
    • Mémoire maximale égale au nombre de processeurs de déclencheur multiplié par 6.5

La file d'attente Redis contient une file d'attente de tâches individuelles provenant de vos DAG. Les programmeurs Airflow remplissent la file d'attente, laquelle est utilisée par les nœuds de calcul Airflow pour effectuer leurs tâches. La file d'attente Redis s'exécute en tant qu'application StatefulSet dans le cluster de votre environnement, de sorte que les messages persistent après le redémarrage du conteneur.

Serveur Web Airflow

Le serveur Web Airflow exécute l'interface utilisateur Airflow de votre environnement.

Dans Cloud Composer 2, le serveur Web Airflow s'exécute en tant que déploiement dans le cluster de votre environnement.

Cloud Composer 2 permet d'accéder à l'interface en fonction des identités utilisateur et des liaisons de stratégie IAM définies pour les utilisateurs. Par rapport à Cloud Composer 1, Cloud Composer 2 utilise un mécanisme différent qui ne repose pas sur Identity-Aware Proxy.

Base de données Airflow

La base de données Airflow est une instance Cloud SQL qui s'exécute dans le projet locataire de votre environnement. Elle héberge la base de données de métadonnées Airflow.

Pour protéger les informations sensibles de connexion et de workflows, Cloud Composer n'autorise l'accès à la base de données qu'au compte de service de votre environnement.

Bucket de l'environnement

Le bucket de l'environnement est un bucket Cloud Storage qui stocke les DAG, les plug-ins, les dépendances de données et les journaux Airflow. Le bucket de l'environnement réside dans le projet client.

Lorsque vous importez vos fichiers DAG dans le dossier /dags du bucket de votre environnement, Cloud Composer synchronise les DAG avec les nœuds de calcul, les programmeurs et le serveur Web de votre environnement. Vous pouvez stocker vos artefacts de workflow dans les dossiers data/ et logs/ sans vous soucier des limites de taille. Vous conservez également un contrôle total des accès à vos données.

Autres composants de l'environnement

Un environnement Cloud Composer comporte plusieurs composants d'environnement supplémentaires :

  • Cloud SQL Storage : stocke les sauvegardes de bases de données Airflow. Cloud Composer sauvegarde les métadonnées d'Airflow de manière quotidienne afin de minimiser les risques de perte de données.

    Cloud SQL Storage s'exécute dans le projet locataire de votre environnement. Vous ne pouvez pas accéder au contenu Cloud SQL Storage.

  • Proxy Cloud SQL : connecte d'autres composants de votre environnement à la base de données Airflow.

    Votre environnement IP public peut comporter une ou plusieurs instances du proxy Cloud SQL, en fonction du volume de trafic vers la base de données Airflow.

    Dans le cas d'un environnement IP public, un proxy Cloud SQL s'exécute en tant que déploiement dans le cluster de votre environnement.

    Lorsqu'il est déployé dans le cluster de votre environnement, le proxy Cloud SQL autorise également l'accès à votre instance Cloud SQL depuis une application, un client ou un autre service Google Cloud.

  • Surveillance Airflow : consigne les métriques d'environnement dans Cloud Monitoring et déclenche le DAG airflow_monitoring. Le DAG airflow_monitoring signale les données d'état de l'environnement, qui seront utilisées ultérieurement, par exemple, dans le tableau de bord de surveillance de votre environnement. Airflow s'exécute en tant que déploiement dans le cluster de votre environnement.

  • Agent Composer effectue des opérations sur les environnements, telles que la création, la mise à jour, la mise à niveau et la suppression d'environnements. En général, ce composant est chargé d'introduire des modifications dans votre environnement. S'exécute en tant que tâche dans le cluster de votre environnement.

  • Airflow InitDB crée une instance Cloud SQL et un schéma de base de données initial. Airflow InitDB s'exécute en tant que tâche dans le cluster de votre environnement.

  • FluentD. Collecte les journaux de tous les composants de l'environnement et les importe dans Cloud Logging. S'exécute en tant que DaemonSet dans le cluster de votre environnement.

  • Abonnements Pub/Sub. Votre environnement communique avec son agent de service GKE via des abonnements Pub/Sub. Il s'appuie sur le comportement par défaut de Pub/Sub pour la gestion des messages. Ne supprimez pas les sujets Pub/Sub .*-composer-.*. Pub/Sub accepte au maximum 10 000 sujets par projet.

  • Le point de terminaison PSC connecte les programmeurs et les nœuds de calcul Airflow à la base de données Airflow dans l'architecture Adresse IP privée avec PSC.

  • Adaptateur de métriques client Stackdriver : génère des rapports sur les métriques de votre environnement pour l'autoscaling. Ce composant s'exécute en tant que déploiement dans le cluster de votre environnement.

  • Contrôleur d'ensemble de nœuds de calcul Airflow : effectue un scaling automatique de votre environnement en fonction des métriques de l'adaptateur de métriques client Stackdriver. Ce composant s'exécute en tant que déploiement dans le cluster de votre environnement.

  • Cloud Storage FUSE : installe le bucket de votre environnement en tant que système de fichiers sur les nœuds de calcul, les programmeurs et le serveur Web Airflow, afin que ces composants puissent accéder aux données du bucket. Ce composant s'exécute en tant que DaemonSet dans le cluster de votre environnement.

Architecture d'environnement IP public

Ressources de l'environnement IP public Cloud Composer dans le projet locataire et le projet client
Figure 1. Architecture d'environnement IP public (cliquez pour agrandir)

Une architecture d'environnement IP public pour Cloud Composer 2 présente les caractéristiques suivantes :

  • Le projet locataire héberge une instance Cloud SQL et un espace de stockage Cloud SQL.
  • Le projet client héberge tous les autres composants de l'environnement.
  • Les programmeurs et les nœuds de calcul Airflow du projet client communiquent avec la base de données Airflow via une instance de proxy Cloud SQL située dans le projet client.

Architecture de l'environnement IP privé

Adresse IP privée avec des ressources d'environnement Cloud Composer PSC dans le projet locataire et le projet client (cliquez pour agrandir)
Figure 2. Ressources de l'environnement Cloud Composer avec adresses IP privées dans le projet locataire et le projet client (cliquez pour agrandir)

Par défaut, Cloud Composer 2 utilise Private Service Connect, de sorte que vos environnements IP privés communiquent en interne sans passer par l'appairage de VPC. Il est également possible d'utiliser des appairages VPC au lieu de Private Service Connect dans votre environnement. Il s'agit d'une option autre que celle par défaut.

Dans l'architecture de l'environnement IP privé:

  • Le projet locataire héberge une instance Cloud SQL et un espace de stockage Cloud SQL.
  • Le projet client héberge tous les autres composants de l'environnement.
  • Les programmeurs et les nœuds de calcul Airflow se connectent à la base de données Airflow via le point de terminaison PSC configuré.

Architecture d'adresse IP privée hautement résiliente

Ressources d'environnement IP privé hautement résilientes dans le projet locataire et le projet client (cliquez pour agrandir)
Figure 3. Ressources d'environnement Cloud Composer à adresse IP privée hautement résilientes dans le projet locataire et le projet client (cliquez pour agrandir)

Les environnements Cloud Composer hautement résilients sont des environnements Cloud Composer 2 qui utilisent des mécanismes intégrés de redondance et de basculement qui réduisent la vulnérabilité de l'environnement aux défaillances de zone et aux pannes au point de défaillance unique.

Dans ce type d'environnement d'adresse IP privée:

  • Une instance Cloud SQL de votre environnement est configurée pour la haute disponibilité (il s'agit d'une instance régionale). Dans une instance régionale, la configuration se compose d'une instance principale et d'une instance de secours.
  • Votre environnement exécute deux programmeurs Airflow, deux serveurs Web et, si des déclencheurs sont utilisés, entre deux et dix déclencheurs au total. Ces paires de composants s'exécutent dans deux zones distinctes.
  • Le nombre minimal de nœuds de calcul est défini sur deux, et le cluster de votre environnement répartit les instances de nœuds de calcul entre les zones. En cas de panne de zone, les instances de nœuds de calcul concernées sont reprogrammées dans une autre zone.

Intégration à Cloud Logging et Cloud Monitoring

Cloud Composer s'intègre à Cloud Logging et à Cloud Monitoring de votre projet Google Cloud afin de centraliser l'affichage du service Airflow et des journaux de workflow.

Cloud Monitoring collecte et ingère des métriques, des événements et des métadonnées à partir de Cloud Composer pour générer des insights via des tableaux de bord et des graphiques.

Comme Cloud Logging fonctionne en flux continu, vous pouvez afficher immédiatement les journaux émis par le programmeur et les nœuds de calcul Airflow au lieu d'attendre que les journaux Airflow apparaissent dans le bucket Cloud Storage de votre environnement. Les journaux Cloud Logging pour Cloud Composer étant basés sur google-fluentd, vous avez accès à tous les journaux produits par les programmeurs et les nœuds de calcul Airflow.

Pour limiter le nombre de journaux dans votre projet Google Cloud, vous pouvez arrêter l'ingestion de tous les journaux. Ne désactivez pas Logging.

Étapes suivantes