Ce tutoriel explique comment répliquer des données entre des clusters Managed Service pour Apache Kafka à l'aide du connecteur source MirrorMaker 2.0.
Les clusters peuvent se trouver dans le même projet ou dans des projets différents, et dans la même région ou dans des régions différentes. Pour ce tutoriel, vous allez configurer la réplication entre régions, mais au sein du même projet. Toutefois, la procédure est la même pour les autres combinaisons.
Architecture
Dans ce scénario, il existe trois clusters :
Cluster Kafka dont les données sont répliquées. Ce cluster est appelé cluster source, car il est la source des données.
Cluster Kafka dans lequel les données répliquées sont écrites. Ce cluster est appelé cluster cible.
Un cluster Connect, qui vous permet de créer et de gérer le connecteur source MirrorMaker 2.0.
Le cluster Connect est associé au cluster cible. Pour minimiser la latence des opérations d'écriture, placez le cluster Connect dans la même région que le cluster cible.
Le schéma suivant montre ces composants :

La réplication des données est effectuée par le connecteur source MirrorMaker 2.0. Deux autres connecteurs MirrorMaker 2.0 sont facultatifs pour ce scénario :
Connecteur de point de contrôle MirrorMaker 2.0 : permet un basculement fluide en s'assurant que les consommateurs du cluster cible peuvent reprendre le traitement au même point que le cluster source.
Connecteur de pulsation MirrorMaker 2.0 : génère des messages de pulsation périodiques sur le cluster Kafka source, ce qui vous permet de surveiller l'état et le statut de la réplication des données.
Ce tutoriel n'utilise pas ces connecteurs facultatifs. Pour en savoir plus, consultez Quand utiliser MirrorMaker 2.0.
Avant de commencer
Console
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Managed Kafka API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Managed Kafka API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Assurez-vous de disposer du ou des rôles suivants dans le projet : Éditeur de cluster Kafka géré, Éditeur de cluster Kafka Connect géré, Éditeur de connecteur Kafka géré
Vérifier les rôles
-
Dans la console Google Cloud , accédez à la page IAM.
Accéder à IAM - Sélectionnez le projet.
-
Dans la colonne Compte principal, recherchez toutes les lignes qui vous identifient ou identifient un groupe dont vous faites partie. Pour savoir à quels groupes vous appartenez, contactez votre administrateur.
- Pour toutes les lignes qui vous spécifient ou vous incluent, consultez la colonne Rôle pour vous assurer que la liste inclut les rôles requis.
Attribuer les rôles
-
Dans la console Google Cloud , accédez à la page IAM.
Accéder à IAM - Sélectionnez le projet.
- Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez votre identifiant utilisateur. Il s'agit généralement de l'adresse e-mail d'un compte Google.
- Cliquez sur Sélectionner un rôle, puis recherchez le rôle.
- Pour attribuer des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez tous les rôles supplémentaires.
- Cliquez sur Enregistrer.
-
gcloud
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Activez l'API Managed Kafka, si ce n'est pas déjà fait :
Rôles requis pour activer les API
Pour activer les API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.gcloud services enable managedkafka.googleapis.com
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
Activez l'API Managed Kafka, si ce n'est pas déjà fait :
Rôles requis pour activer les API
Pour activer les API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.gcloud services enable managedkafka.googleapis.com
-
Attribuez des rôles à votre compte utilisateur. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
roles/managedkafka.clusterEditor, roles/managedkafka.connectClusterEditor, roles/managedkafka.connectorEditorgcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Remplacez les éléments suivants :
PROJECT_ID: ID du projet.USER_IDENTIFIER: identifiant de votre compte utilisateur . Par exemple,myemail@example.com.ROLE: rôle IAM que vous accordez à votre compte utilisateur.
Créer le cluster Kafka source
Lors de cette étape, vous allez créer un cluster Managed Service pour Apache Kafka. Ce cluster est le cluster source, qui contient les données à répliquer.
Console
Accédez à la page Managed Service pour Apache Kafka > Clusters.
Cliquez sur Créer.
Dans la zone Nom du cluster, saisissez le nom du cluster.
Dans la liste Région, sélectionnez un emplacement pour le cluster.
Pour Configuration réseau, configurez le sous-réseau où le cluster est accessible.
- Pour Project (Projet), sélectionnez votre projet.
- Pour Réseau, sélectionnez un réseau VPC dans votre projet.
- Pour Sous-réseau, sélectionnez un sous-réseau.
- Cliquez sur OK.
Cliquez sur Créer.
Pendant la création du cluster, son état est Creating. Une fois le cluster créé, l'état est Active.
gcloud
Pour créer le cluster Kafka source, exécutez la commande managed-kafka clusters create.
gcloud managed-kafka clusters create SOURCE_KAFKA_CLUSTER \
--location=SOURCE_REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/SOURCE_REGION/subnetworks/SOURCE_SUBNET \
--async
Remplacez les éléments suivants :
SOURCE_KAFKA_CLUSTER: nom du cluster KafkaSOURCE_REGION: emplacement du clusterPour en savoir plus sur les emplacements acceptés, consultez Emplacements Managed Service pour Apache Kafka.
PROJECT_ID: ID de votre projetSOURCE_SUBNET: sous-réseau dans lequel vous souhaitez déployer le cluster (par exemple,default)
La commande s'exécute de manière asynchrone et renvoie un ID d'opération :
Check operation [projects/PROJECT_ID/locations/SOURCE_SUBNET/operations/OPERATION_ID] for status.
Pour suivre la progression de l'opération de création, utilisez la commande gcloud managed-kafka operations describe :
gcloud managed-kafka operations describe OPERATION_ID \
--location=SOURCE_REGION
Pour en savoir plus, consultez Surveiller l'opération de création du cluster.
Créer un sujet Kafka
Lorsque le cluster source est prêt, créez un sujet comme suit :
Console
Accédez à la page Managed Service pour Apache Kafka > Clusters.
Cliquez sur le nom du cluster.
Sur la page d'informations du cluster, cliquez sur Créer un sujet.
Dans la zone Nom du thème, saisissez un nom pour le thème.
Cliquez sur Créer.
gcloud
Pour créer un sujet Kafka, exécutez la commande managed-kafka topics create.
gcloud managed-kafka topics create TOPIC_NAME \
--cluster=SOURCE_KAFKA_CLUSTER \
--location=SOURCE_REGION \
--partitions=10 \
--replication-factor=3
Remplacez les éléments suivants :
TOPIC_NAME: nom du sujet Kafka à créerSOURCE_KAFKA_CLUSTER: nom du cluster sourceSOURCE_REGION: région dans laquelle vous avez créé le cluster source.
Créer le cluster Kafka cible
Dans cette étape, vous allez créer un deuxième cluster Managed Service pour Apache Kafka. Ce cluster est le cluster cible vers lequel MirrorMaker 2.0 réplique les données.
Console
Accédez à la page Managed Service pour Apache Kafka > Clusters.
Cliquez sur Créer.
Dans la zone Nom du cluster, saisissez le nom du cluster.
Dans la liste Région, sélectionnez un emplacement pour le cluster. Choisissez une région différente de celle où se trouve le cluster source.
Pour Configuration réseau, configurez le sous-réseau où le cluster cible est accessible. Le sous-réseau doit se trouver dans le même réseau VPC que le sous-réseau du cluster source.
- Pour Project (Projet), sélectionnez votre projet.
- Pour Réseau, sélectionnez le même réseau VPC que le sous-réseau du cluster source.
- Pour Sous-réseau, sélectionnez le sous-réseau.
- Cliquez sur OK.
Cliquez sur Créer.
Pendant la création du cluster, son état est Creating. Une fois le cluster créé, l'état est Active.
gcloud
Pour créer le cluster Kafka cible, exécutez la commande managed-kafka clusters create.
gcloud managed-kafka clusters create TARGET_KAFKA_CLUSTER \
--location=TARGET_REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/TARGET_REGION/subnetworks/TARGET_SUBNET \
--async
Remplacez les éléments suivants :
TARGET_KAFKA_CLUSTER: nom du cluster KafkaTARGET_REGION: emplacement du cluster. Choisissez une région différente de celle où se trouve le cluster source.Pour en savoir plus sur les emplacements acceptés, consultez Emplacements Managed Service pour Apache Kafka.
PROJECT_ID: ID de votre projetTARGET_SUBNET: sous-réseau dans lequel vous souhaitez déployer le cluster (par exemple,default)Sélectionnez un sous-réseau dans le même VPC que le cluster source.
Créer un cluster Connect
Lors de cette étape, vous allez créer un cluster Connect. La création d'un cluster Connect prend généralement entre 20 et 30 minutes.
Avant de commencer cette étape, assurez-vous que le cluster Kafka cible de l'étape précédente est entièrement créé.
Console
Accédez à la page Managed Service pour Apache Kafka > Clusters de connexion.
Cliquez sur Créer.
Dans le champ Nom du cluster Connect, saisissez une chaîne. Exemple :
my-connect-clusterPour Cluster Kafka principal, sélectionnez le cluster Kafka cible que vous avez créé à l'étape précédente. (Ne sélectionnez pas votre cluster Kafka source.)
Pour Emplacement, Configuration réseau et Sous-réseau du nœud de calcul, vous pouvez utiliser les valeurs par défaut ou les personnaliser en fonction de vos besoins spécifiques.
Pour permettre au cluster Connect de résoudre le domaine DNS du cluster source, procédez comme suit :
Développez Domaines DNS pouvant être résolus.
Cliquez sur Ajouter un domaine DNS.
Dans la liste Cluster Kafka, sélectionnez le cluster Kafka source.
Cliquez sur Créer.
Pendant la création du cluster, son état est Creating. Une fois le cluster créé, l'état est Active.
gcloud
Pour créer un cluster Connect, exécutez la commande gcloud managed-kafka connect-clusters create.
gcloud managed-kafka connect-clusters create CONNECT_CLUSTER \
--location=TARGET_REGION \
--cpu=12 \
--memory=12GiB \
--primary-subnet=projects/PROJECT_ID/regions/TARGET_REGION/subnetworks/TARGET_SUBNET \
--kafka-cluster=TARGET_KAFKA_CLUSTER \
--dns-name=SOURCE_KAFKA_CLUSTER.SOURCE_REGION.managedkafka.PROJECT_ID.cloud.goog. \
--async
Remplacez les éléments suivants :
CONNECT_CLUSTER: nom du cluster ConnectTARGET_REGION: région dans laquelle vous avez créé le cluster Kafka ciblePROJECT_ID: ID de votre projetTARGET_SUBNET: sous-réseau dans lequel vous avez créé le cluster Kafka cible.TARGET_KAFKA_CLUSTER: nom du cluster Kafka cibleSOURCE_KAFKA_CLUSTER: nom du cluster Kafka sourceSOURCE_REGION: région dans laquelle vous avez créé le cluster Kafka source.
La commande s'exécute de manière asynchrone et renvoie un ID d'opération :
Check operation [projects/PROJECT_ID/locations/TARGET_REGION/operations/OPERATION_ID] for status.
Pour suivre la progression de l'opération de création, utilisez la commande gcloud managed-kafka operations describe :
gcloud managed-kafka operations describe OPERATION_ID \
--location=TARGET_REGION
Pour en savoir plus, consultez Surveiller l'opération de création du cluster.
Créer un connecteur source MirrorMaker 2.0
Au cours de cette étape, vous allez créer un connecteur source MirrorMaker 2.0. Ce connecteur réplique les messages du cluster Kafka source vers le cluster Kafka cible.
Console
Accédez à la page Managed Service pour Apache Kafka > Clusters de connexion.
Cliquez sur le nom du cluster Connect.
Cliquez sur Créer un connecteur.
Saisissez une chaîne pour le nom du connecteur. Exemple :
mm2-connector.Dans la liste Plug-in de connecteur, sélectionnez
MirrorMaker 2.0 Source.Pour Cluster source, sélectionnez Cluster Managed Service pour Apache Kafka.
Dans la liste Cluster Kafka, sélectionnez votre cluster source.
Dans la zone Noms de sujets ou expressions régulières de sujets (séparés par une virgule), saisissez le nom du ou des sujets Kafka que vous souhaitez répliquer.
Cliquez sur Créer.
gcloud
Exécutez la commande
gcloud managed-kafka clusters describepour obtenir l'adresse d'amorçage du cluster Kafka source.gcloud managed-kafka clusters describe SOURCE_KAFKA_CLUSTER \ --location=SOURCE_REGION \ --project=PROJECT_ID \ --format="value(bootstrapAddress)"Remplacez les éléments suivants :
SOURCE_KAFKA_CLUSTER: nom du cluster Kafka sourceSOURCE_REGION: région du cluster source.PROJECT_ID: ID de votre projet
Exécutez à nouveau la commande précédente pour obtenir l'adresse d'amorçage du cluster Kafka cible.
gcloud managed-kafka clusters describe TARGET_KAFKA_CLUSTER \ --location=TARGET_REGION \ --project=PROJECT_ID \ --format="value(bootstrapAddress)"Remplacez les éléments suivants :
TARGET_KAFKA_CLUSTER: nom du cluster Kafka cibleTARGET_REGION: région du cluster cible
Pour créer un connecteur source MirrorMaker 2.0, exécutez la commande
gcloud managed-kafka connectors create.gcloud managed-kafka connectors create CONNECTOR_NAME \ --location=TARGET_REGION \ --connect-cluster=CONNECT_CLUSTER \ --configs=connector.class=org.apache.kafka.connect.mirror.MirrorSourceConnector,\ source.cluster.alias=source,\ source.cluster.bootstrap.servers=SOURCE_CLUSTER_BOOTSTRAP_ADDRESS,\ target.cluster.alias=target,\ target.cluster.bootstrap.servers=TARGET_CLUSTER_BOOTSTRAP_ADDRESS,\ tasks.max=3,\ topics=TOPIC_NAMERemplacez les éléments suivants :
CONNECTOR_NAME: nom du connecteur, par exemplemm2-connectorCONNECT_CLUSTER: nom de votre cluster ConnectSOURCE_CLUSTER_BOOTSTRAP_ADDRESS: adresse d'amorçage du cluster source, à partir de l'étape 1.TARGET_CLUSTER_BOOTSTRAP_ADDRESS: adresse d'amorçage du cluster cible, à partir de l'étape 2.TOPIC_NAME: nom du thème à répliquer. Ce paramètre peut également spécifier une liste de noms de thèmes séparés par une virgule ou une expression régulière.
Le connecteur source MirrorMaker 2.0 crée un sujet dans le cluster cible nommé "source.TOPIC_NAME", où TOPIC_NAME est le nom du sujet dans le cluster source.
Afficher les résultats
Pour vérifier que les messages sont répliqués, vous pouvez utiliser les outils de ligne de commande Kafka. Pour savoir comment configurer la CLI Kafka, consultez Configurer une machine cliente dans le document Produire et consommer des messages avec la CLI.
Par exemple, pour envoyer un message au cluster source, saisissez ce qui suit sur la ligne de commande :
export BOOTSTRAP=$(gcloud managed-kafka clusters describe SOURCE_KAFKA_CLUSTER \
--location=SOURCE_REGION \
--project=PROJECT_ID \
--format="value(bootstrapAddress)"
)
for msg in {1..10}; do
echo "message $msg"
done | kafka-console-producer.sh --topic TOPIC_NAME \
--bootstrap-server $BOOTSTRAP --producer.config client.properties
Pour lire les messages dupliqués à partir du cluster cible, saisissez la commande suivante sur la ligne de commande :
export BOOTSTRAP=$(gcloud managed-kafka clusters describe TARGET_KAFKA_CLUSTER \
--location=TARGET_REGION \
--project=PROJECT_ID \
--format="value(bootstrapAddress)"
)
kafka-console-consumer.sh --topic source.TOPIC_NAME --from-beginning \
--bootstrap-server $BOOTSTRAP --consumer.config client.properties
La sortie ressemble à ceci :
message 1
message 2
message 3
message 4
[...]
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Console
Supprimez le cluster Connect.
Accédez à la page Managed Service pour Apache Kafka > Clusters de connexion.
Sélectionnez le cluster Connect, puis cliquez sur Supprimer.
Supprimez le cluster Kafka source.
Accédez à la page Managed Service pour Apache Kafka > Clusters.
Sélectionnez le cluster Kafka, puis cliquez sur Supprimer.
Répétez l'étape précédente pour supprimer le cluster Kafka cible.
gcloud
Pour supprimer le cluster Connect, utilisez la commande
gcloud managed-kafka connect-clusters delete.gcloud managed-kafka connect-clusters delete CONNECT_CLUSTER \ --location=TARGET_REGION --asyncPour supprimer le cluster Kafka source, utilisez la commande
gcloud managed-kafka clusters delete.gcloud managed-kafka clusters delete SOURCE_KAFKA_CLUSTER \ --location=SOURCE_REGION --asyncRépétez l'étape précédente pour supprimer le cluster Kafka cible.
gcloud managed-kafka clusters delete TARGET_KAFKA_CLUSTER \ --location=TARGET_REGION --async
Étapes suivantes
- Résoudre les problèmes liés à un connecteur MirrorMaker 2.0
- En savoir plus sur le connecteur MirrorMaker 2.0
- En savoir plus sur Kafka Connect