Si vous devez transférer des données d'un sujet Apache Kafka Open Source vers Managed Service pour Apache Kafka, vous pouvez le faire à l'aide d'un modèle Dataflow. Vous pouvez utiliser la console Google Cloud , l'API REST ou la Google Cloud CLI. Les messages du sujet Kafka doivent être publiés à l'aide du schéma et de l'encodage AVRO ou JSON.
Ce document vous aide à configurer le modèle Kafka vers Kafka Dataflow à l'aide de la console Google Cloud .
Google Cloud produits utilisés
Le modèle Dataflow Kafka vers Kafka utilise les produits Google Cloud facturables suivants. Utilisez le simulateur de coût pour générer une estimation des coûts en fonction de votre utilisation prévue.
- Dataflow : Dataflow est un service de traitement de données entièrement géré. Le modèle Kafka vers Kafka Dataflow utilise Dataflow pour créer un pipeline qui lit les données de votre sujet Kafka externe et les écrit dans un sujet Managed Service pour Apache Kafka. Les fonctionnalités d'autoscaling et d'autoréparation de Dataflow garantissent l'exécution fiable et efficace de votre pipeline.
- Cloud Storage : Cloud Storage fournit un stockage d'objets. Il n'est utilisé que si vous utilisez l'authentification TLS pour votre source Kafka externe. Vous stockez vos fichiers Keystore et Truststore contenant des certificats TLS dans Cloud Storage, et le pipeline Dataflow y accède depuis Cloud Storage.
- Secret Manager : Secret Manager est un service de gestion des secrets et des identifiants.Il n'est utilisé que si vous choisissez l'authentification TLS ou SASL_PLAIN pour votre source Kafka externe. Il stocke vos identifiants d'authentification, tels que les noms d'utilisateur, les mots de passe et les certificats. Ces identifiants permettent de se connecter de manière sécurisée au cluster Kafka externe.
La solution utilise également Managed Service pour Apache Kafka.
- Managed Service pour Apache Kafka : service Google Cloud qui vous aide à exécuter Apache Kafka. Dans cette solution, Managed Service pour Apache Kafka est utilisé comme destination pour vos données. Vous diffusez des données depuis un sujet Kafka externe vers un sujet de votre cluster Managed Service pour Apache Kafka. Pour en savoir plus sur les tarifs de Managed Service pour Apache Kafka, consultez la grille tarifaire.
Avant de commencer
Avant de lancer votre modèle Kafka vers Kafka Dataflow, assurez-vous d'avoir effectué les opérations suivantes :
Créez un cluster et un sujet Managed Service pour Apache Kafka.
Pour créer un cluster et un sujet, vous pouvez suivre le démarrage rapide de Managed Service pour Apache Kafka.
Si votre sujet contient des enregistrements Avro, consultez Configurer le format des messages Kafka pour connaître les exigences supplémentaires en termes de ressources.
Activez les API Google Cloud suivantes :
Dataflow
Secret Manager (uniquement si vous utilisez l'authentification SASL_PLAIN ou TLS pour votre source Kafka externe)
Cloud Storage (uniquement si vous utilisez l'authentification TLS pour votre source Kafka externe)
gcloud services enable dataflow.googleapis.com \ secretmanager.googleapis.com storage.googleapis.com
Préparer les ressources d'authentification SASL_PLAIN
Suivez les instructions de cette section si vous prévoyez d'utiliser vos identifiants d'authentification SASL_PLAIN pour votre source Kafka externe.
Dans la console Google Cloud , accédez à Secret Manager.
Créez deux secrets : un pour votre nom d'utilisateur Kafka et un pour votre mot de passe Kafka.
Pour chaque secret, fournissez un nom descriptif tel que "kafka-username" et "kafka-password".
Pour savoir comment créer un secret, y compris les rôles et autorisations requis, consultez Créer un secret.
Préparer les ressources d'authentification TLS
Suivez les instructions de cette section si vous prévoyez d'utiliser vos identifiants d'authentification TLS pour votre source Kafka externe.
Dans la console Google Cloud , accédez à Secret Manager.
Assurez-vous que votre fichier Keystore (au format JKS) contient le certificat TLS et la clé privée requis pour authentifier votre client auprès du cluster Kafka.
Assurez-vous que votre fichier Truststore (au format JKS) contient les certificats de confiance requis pour vérifier l'identité du courtier Kafka.
Importez vos fichiers Keystore et Truststore dans Cloud Storage.
Pour en savoir plus sur l'importation de fichiers dans Cloud Storage, consultez Importer des objets à partir d'un système de fichiers.
Créez trois secrets pour votre configuration TLS :
Mot de passe du truststore : stocke le mot de passe utilisé pour accéder à votre fichier Truststore.
Mot de passe du keystore : stocke le mot de passe utilisé pour accéder à votre fichier keystore.
Mot de passe de la clé privée : stocke le mot de passe utilisé pour accéder à la clé privée dans votre fichier Keystore.
Attribuez un nom descriptif à chaque secret.
Pour savoir comment créer un secret, y compris les rôles et autorisations requis, consultez Créer un secret.
Attribuer le rôle "Client Managed Kafka" au compte de service de nœud de calcul Dataflow
Pour associer votre job Dataflow à Managed Service pour Apache Kafka, vous devez accorder des autorisations spécifiques au compte de service de nœud de calcul Dataflow. Ce compte de service est l'identité utilisée pour toutes les VM de nœud de calcul de votre job Dataflow. Toutes les requêtes effectuées à partir de ces VM utilisent ce compte.
Pour autoriser l'accès à vos ressources Kafka, vous devez attribuer le rôle roles/managedkafka.client au compte de service de nœud de calcul Dataflow. Ce rôle inclut l'autorisation managedkafka.clusters.connect nécessaire pour établir des connexions.
Pour en savoir plus sur le compte de service du nœud de calcul, consultez Sécurité et autorisations pour les pipelines sur Google Cloud.
Pour attribuer le rôle "Client Managed Kafka" au compte de service Dataflow, procédez comme suit :
Console
- Dans la console Google Cloud , accédez à la page IAM.
Accéder à IAM - Vérifiez que le projet est défini sur le projet consommateur auquel le client Managed Service pour Apache Kafka accéderait.
- Cliquez sur Accorder l'accès.
- Sur la nouvelle page, dans Ajouter des comptes principaux, saisissez l'adresse e-mail du compte de service de nœud de calcul Dataflow que vous utilisez.
- Pour Attribuer des rôles, sélectionnez le rôle Client Kafka géré.
- Cliquez sur Enregistrer.
gcloud CLI
-
Dans la console Google Cloud , activez Cloud Shell.
En bas de la console Google Cloud , une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.
-
Exécutez la commande
gcloud projects add-iam-policy-binding:gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL \ --role roles/managedkafka.client
Remplacez les éléments suivants :
-
PROJECT_ID est l'ID du projet.
-
SERVICE_ACCOUNT_EMAIL correspond à l'adresse e-mail du compte de service de nœud de calcul Dataflow.
-
Lancer le modèle Dataflow Kafka vers Kafka
Vous pouvez lancer le modèle Kafka vers Kafka Dataflow depuis la page d'informations du cluster dans la console.
-
Dans la console Google Cloud , accédez à la page Cluster.
Les clusters que vous avez créés dans un projet sont listés.
- Pour afficher la page d'informations sur un cluster, cliquez sur son nom.
- Sur la page d'informations du cluster, cliquez sur Importer des données.
La page Créer un job Dataflow à partir du modèle "Kafka vers Kafka" s'ouvre.
Configurez les champs du modèle en fonction des informations incluses dans les sections suivantes.
Saisissez un nom de job
Dans le champ Nom du job, saisissez un nom pour votre job Dataflow.
Le nom doit être unique parmi tous les jobs en cours d'exécution dans le projet.
Choisir un point de terminaison régional pour votre pipeline
Dans le champ Point de terminaison régional, définissez le point de terminaison régional sur l'emplacement de votre cluster Kafka pour minimiser les frais de transfert de données interrégionaux.
Les nœuds de calcul Dataflow peuvent s'exécuter indépendamment de la région de votre cluster Kafka. Toutefois, vous devrez payer des frais de sortie interrégionaux si vous lancez des nœuds de calcul en dehors de la région de votre cluster Kafka.
Pour afficher l'emplacement du cluster, suivez les étapes décrites dans Lister vos clusters Managed Service pour Apache Kafka.
Configurer la source
Pour Source, sélectionnez Kafka autogéré ou externe.
Pour Serveur d'amorçage Kafka, saisissez l'adresse du serveur d'amorçage du cluster Kafka externe.
Pour Serveur d'amorçage et sujet Kafka source, saisissez l'adresse du serveur d'amorçage et du sujet Kafka externes.
Pour Mode d'authentification de la source Kafka, sélectionnez votre mode d'authentification parmi les options proposées. Pour Kafka externe, vous avez trois options :
SASL_PLAIN
TLS
None
Pour l'authentification de la source Kafka SASL_PLAIN
Avant de passer à cette section, consultez Préparer les ressources d'authentification SASL_PLAIN.
Si vous sélectionnez SASL_PLAIN comme authentification de la source Kafka, renseignez les champs supplémentaires suivants.
Pour ID de version du secret pour le nom d'utilisateur Kafka SASL/PLAIN, saisissez l'ID de version du nom d'utilisateur.
Dans le champ ID de version du secret pour le mot de passe Kafka SASL/PLAIN, saisissez l'ID de version du mot de passe.
Pour l'authentification de la source Kafka TLS
Avant de passer à cette section, consultez Préparer les ressources d'authentification TLS.
Si vous sélectionnez TLS comme mode d'authentification de la source Kafka, renseignez les champs supplémentaires suivants.
Pour Emplacement du keystore, saisissez le chemin d'accès Cloud Storage à votre fichier Java KeyStore (JKS). Ce fichier contient le certificat TLS et la clé privée nécessaires pour authentifier votre pipeline auprès du cluster Kafka. Par exemple : gs://your-bucket/keystore.jks
Dans le champ Emplacement du fichier Truststore, saisissez le chemin d'accès Cloud Storage à votre fichier Java Truststore (JKS). Ce fichier contient les certificats de confiance utilisés pour vérifier l'identité du courtier Kafka.
Pour ID de version du secret pour le mot de passe Truststore, indiquez l'ID de secret Secret Manager qui stocke le mot de passe permettant d'accéder à votre fichier Truststore JKS.
Pour ID de version du secret du mot de passe du keystore, indiquez l'ID de secret Secret Manager qui stocke le mot de passe permettant d'accéder à votre fichier JKS.
Dans le champ ID de version secrète du mot de passe de la clé privée, si votre clé privée dans le Keystore possède un mot de passe distinct, saisissez l'ID de secret Secret Manager contenant ce mot de passe.
Enregistrer les décalages dans Kafka
Ce paramètre contrôle la façon dont le pipeline suit les messages traités à partir de la source Kafka externe. L'activation de ce paramètre permet de s'assurer que votre pipeline traite les messages de manière fiable et évite les erreurs lors du redémarrage.
Kafka effectue le suivi des messages à l'aide de décalages. Considérez-les comme des signets qui mémorisent la position du pipeline dans chaque flux de messages. Lorsque vous activez ce paramètre, le pipeline enregistre régulièrement ses signets dans Kafka. Si le pipeline redémarre en raison d'une erreur, d'une mise à jour ou d'une maintenance planifiée, il peut utiliser les signets enregistrés pour reprendre là où il s'était arrêté. Cela l'empêche de manquer des messages ou de traiter accidentellement le même message deux fois.
Activez l'option Enregistrer les décalages dans Kafka.
Indiquez un ID de groupe de consommateurs. Il s'agit d'un nom qui identifie votre pipeline auprès de Kafka.
Pour Décalage de début Kafka par défaut, choisissez l'une des options suivantes :
Earliest (Le plus ancien) : traite les messages depuis le début du sujet Kafka.
Derniers : traite les messages en commençant par le plus récent.
Configurer la destination
Pour la destination, sélectionnez Managed Service pour Apache Kafka.
Pour Cluster Kafka, choisissez un cluster que vous avez déjà créé.
Vous pouvez choisir un sujet existant ou en créer un.
Pour Méthode d'authentification de la destination Kafka, sélectionnez Identifiants par défaut de l'application.
Configurer le chiffrement
Par défaut, toutes les données au repos et en transit sont chiffrées par unGoogle-owned and Google-managed encryption key. Si vous disposez de clés de chiffrement gérées par le client (CMEK), vous pouvez sélectionner vos propres clés. Pour savoir comment configurer une CMEK, consultez Configurer le chiffrement des messages.
Configurer la mise en réseau
Vous devez spécifier le réseau et le sous-réseau du cluster dans le modèle Dataflow. La section Paramètres facultatifs du modèle vous permet de définir le réseau de vos nœuds de calcul Dataflow.
Par défaut, le modèle Kafka vers Kafka Dataflow provisionne des nœuds de calcul Dataflow dans le réseau par défaut de votre projet. Pour permettre à votre cluster Kafka externe d'envoyer des données à Managed Service pour Apache Kafka via Dataflow, assurez-vous que vos nœuds de calcul Dataflow peuvent accéder au réseau de votre cluster.
Nous vous recommandons d'utiliser le réseau par défaut de votre projet pour votre cluster Kafka si celui-ci n'est pas connecté à un sous-réseau du réseau par défaut du projet.
Pour en savoir plus sur la configuration de la mise en réseau avec votre pipeline Dataflow, consultez les pages suivantes :
Si vous rencontrez des difficultés pour configurer la mise en réseau Dataflow, consultez le guide de dépannage de la mise en réseau Dataflow.
Configurer les paramètres Dataflow facultatifs
Ne configurez les paramètres Dataflow facultatifs que si vous connaissez l'impact de la configuration sur les nœuds de calcul Dataflow. Des paramètres incorrects peuvent affecter les performances ou les coûts. Pour obtenir des explications détaillées sur chaque option, consultez Paramètres facultatifs.
Surveillance
Le modèle Dataflow pour Kafka vers Managed Service pour Apache Kafka offre une expérience de surveillance qui vous permet d'explorer les journaux, les métriques et les erreurs dans la console. Cette suite d'outils de surveillance est disponible dans l'interface utilisateur de Dataflow.
L'onglet Métriques du job vous permet de créer des tableaux de bord personnalisés. Pour le modèle Kafka vers Managed Service pour Apache Kafka, nous vous recommandons de configurer un tableau de bord "Métriques du job" qui surveille les éléments suivants :
Débit : volume de données traitées à tout moment. Cela est utile pour surveiller le flux de données dans votre job et identifier les problèmes de performances potentiels.
Pour en savoir plus, consultez Surveillance du débit Dataflow.
Fraîcheur des données : différence en secondes entre le code temporel de l'élément de données et le moment où l'événement est traité dans votre pipeline. Cela permet d'identifier les goulots d'étranglement des performances et des sources de données, ou les fréquentes tentatives.
Pour en savoir plus, consultez les ressources suivantes : Surveillance de la fraîcheur des données Dataflow
Backlog : quantité d'octets en attente de traitement. Ces informations éclairent les décisions d'autoscaling.
Pour en savoir plus sur la surveillance Dataflow, consultez la documentation sur la surveillance Dataflow.
Dépannage
Si vous rencontrez des problèmes de performances avec votre pipeline Dataflow, Dataflow fournit un ensemble complet d'outils de dépannage et de diagnostic.
Voici deux scénarios courants et les guides de dépannage correspondants :
Résolvez les problèmes liés aux pipelines de traitement en flux continu lents ou bloqués.
Résoudre les problèmes liés aux retardataires dans les pipelines
Pour obtenir une présentation générale du débogage des pipelines Dataflow, consultez Dépanner et déboguer les pipelines Dataflow.