Créez un pipeline de streaming sans serveur avec Amazon MSK Serverless, Amazon MSK Connect et MongoDB Atlas

Créez un pipeline de streaming sans serveur avec Amazon MSK Serverless, Amazon MSK Connect et MongoDB Atlas

Nœud source: 1903134

Ce billet a été coécrit avec Babu Srinivasan et Robert Walters de MongoDB.

Amazon Managed Streaming pour Apache Kafka (Amazon MSK) est un service Apache Kafka entièrement géré et hautement disponible. Amazon MSK facilite l'ingestion et le traitement des données de streaming en temps réel et l'utilisation aisée de ces données au sein de l'écosystème AWS. Avec Amazon MSK sans serveur, vous pouvez provisionner et gérer automatiquement les ressources requises pour fournir une capacité de streaming et de stockage à la demande pour vos applications.

Amazon MSK prend également en charge l'intégration de sources de données telles que MongoDB Atlas via Connexion Amazon MSK. MSK Connect permet l'intégration sans serveur des données MongoDB avec Amazon MSK à l'aide du Connecteur MongoDB pour Apache Kafka.

MongoDB Atlas sans serveur fournit des services de base de données qui augmentent et diminuent dynamiquement avec la taille et le débit des données, et les coûts évoluent en conséquence. Il convient mieux aux applications avec des demandes variables à gérer avec une configuration minimale. Il offre des performances et une fiabilité élevées avec des fonctionnalités de mise à niveau, de chiffrement, de sécurité, de métriques et de sauvegarde automatisées intégrées à l'infrastructure MongoDB Atlas.

MSK Serverless est un type de cluster pour Amazon MSK. Tout comme MongoDB Atlas Serverless, MSK Serverless provisionne et dimensionne automatiquement les ressources de calcul et de stockage. Vous pouvez désormais créer des workflows sans serveur de bout en bout. Vous pouvez créer un pipeline de streaming sans serveur avec une ingestion sans serveur à l'aide de MSK Serverless et du stockage sans serveur à l'aide de MongoDB Atlas. De plus, MSK Connect prend désormais en charge noms d'hôtes DNS privés. Cela permet aux instances MSK sans serveur de se connecter aux clusters MongoDB sans serveur via Lien privé AWS, vous offrant une connectivité sécurisée entre les plates-formes.

Si vous souhaitez utiliser un cluster non sans serveur, reportez-vous à Intégration de MongoDB avec Amazon Managed Streaming pour Apache Kafka (MSK).

Cet article montre comment implémenter un pipeline de streaming sans serveur avec MSK Serverless, MSK Connect et MongoDB Atlas.

Vue d'ensemble de la solution

Le diagramme suivant illustre notre architecture de solution.

Flux de données entre AWS MSK et MongoDB Atlas

Le flux de données commence par un Cloud de calcul élastique Amazon (Amazon EC2) instance client qui écrit des enregistrements dans une rubrique MSK. Au fur et à mesure que les données arrivent, une instance du connecteur MongoDB pour Apache Kafka écrit les données dans une collection du cluster MongoDB Atlas Serverless. Pour une connectivité sécurisée entre les deux plates-formes, une connexion AWS PrivateLink est créée entre le cluster MongoDB Atlas et le VPC contenant l'instance MSK.

Cet article vous guide à travers les étapes suivantes:

  1. Créez le cluster MSK sans serveur.
  2. Créez le cluster MongoDB Atlas Serverless.
  3. Configurez le plug-in MSK.
  4. Créez le client EC2.
  5. Configurez une rubrique MSK.
  6. Configurez le connecteur MongoDB pour Apache Kafka en tant que récepteur.

Configurer le cluster MSK sans serveur

Pour créer un cluster MSK sans serveur, procédez comme suit :

  1. Sur la console Amazon MSK, choisissez Clusters dans le volet de navigation.
  2. Selectionnez Créer un cluster.
  3. Pour Méthode de création, sélectionnez Création personnalisée.
  4. Pour Nom du cluster, Entrer MongoDBMSKCluster.
  5. Pour Type de grappesélectionner Sans serveur.
  6. Selectionnez Suivant.Interface utilisateur de création de cluster MSK sans serveur
  7. Sur le Réseautage , spécifiez votre VPC, les zones de disponibilité et les sous-réseaux correspondants.
  8. Notez les zones de disponibilité et les sous-réseaux à utiliser ultérieurement.Paramètres de cluster affichant le VPC et les sous-réseaux
  9. Selectionnez Suivant.
  10. Selectionnez Créer un cluster.

Lorsque le cluster est disponible, son statut devient Active.

Grappe disponible pour utilisation

Créer le cluster MongoDB Atlas Serverless

Pour créer un cluster MongoDB Atlas, suivez les Premiers pas avec Atlas Didacticiel. Notez que pour les besoins de cet article, vous devez créer une instance sans serveur.

Boîte de dialogue Créer un nouveau cluster

Une fois le cluster créé, configurez un point de terminaison privé AWS en procédant comme suit :

  1. Sur le Sécurité menu, choisissez L'accès au réseau.Emplacement d'accès au réseau dans le menu Sécurité
  2. Sur le Point de terminaison privé onglet, choisissez Instance sans serveur.
    Accès au réseau de l'instance sans serveur
  3. Selectionnez Créer un nouveau point de terminaison.
  4. Pour Instance sans serveur, choisissez l'instance que vous venez de créer.
  5. Selectionnez Confirmer.Créer une interface utilisateur de point de terminaison privé
  6. Fournissez la configuration de votre point de terminaison VPC et choisissez Suivant.Interface utilisateur de configuration du point de terminaison de VPC
  7. Lors de la création de la ressource AWS PrivateLink, assurez-vous de spécifier exactement le même VPC et les mêmes sous-réseaux que vous avez utilisés précédemment lors de la création de la configuration de mise en réseau pour l'instance MSK sans serveur.
  8. Selectionnez Suivant.Interface utilisateur de configuration du sous-réseau du point de terminaison VPC
  9. Suivez les instructions sur le Finaliser page, puis choisissez Confirmer après la création de votre point de terminaison VPC.

En cas de succès, le nouveau point de terminaison privé apparaîtra dans la liste, comme illustré dans la capture d'écran suivante.

Page de confirmation d'accès au réseau

Configurer le plugin MSK

Ensuite, nous créons un plug-in personnalisé dans Amazon MSK à l'aide du connecteur MongoDB pour Apache Kafka. Le connecteur doit être téléchargé sur un Service de stockage simple Amazon (Amazon S3) avant de pouvoir créer le plug-in. Pour télécharger le connecteur MongoDB pour Apache Kafka, reportez-vous à Télécharger un fichier JAR de connecteur.

  1. Sur la console Amazon MSK, choisissez Plugins personnalisés dans le volet de navigation.
  2. Selectionnez Créer un plug-in personnalisé.
  3. Pour URI S3, entrez l'emplacement S3 du connecteur téléchargé.
  4. Selectionnez Créer un plug-in personnalisé.

Détails du plug-in MSK

Configurer un client EC2

Ensuite, configurons une instance EC2. Nous utilisons cette instance pour créer le sujet et insérer des données dans le sujet. Pour les instructions, reportez-vous à la section Configurer un client EC2 dans la poste Intégration de MongoDB avec Amazon Managed Streaming pour Apache Kafka (MSK).

Créer un sujet sur le cluster MSK

Pour créer un sujet Kafka, nous devons d'abord installer la CLI Kafka.

  1. Sur l'instance EC2 cliente, installez d'abord Java :

sudo yum install java-1.8.0

  1. Ensuite, exécutez la commande suivante pour télécharger Apache Kafka :

wget https://archive.apache.org/dist/kafka/2.6.2/kafka_2.12-2.6.2.tgz

  1. Décompressez le fichier tar à l'aide de la commande suivante :

tar -xzf kafka_2.12-2.6.2.tgz

La distribution de Kafka inclut un dossier bin avec des outils qui peuvent être utilisés pour gérer les sujets.

  1. Allez à kafka_2.12-2.6.2 répertoire et émettez la commande suivante pour créer une rubrique Kafka sur le cluster MSK sans serveur :

bin/kafka-topics.sh --create --topic sandbox_sync2 --bootstrap-server <BOOTSTRAP SERVER> --command-config=bin/client.properties --partitions 2

Vous pouvez copier le point de terminaison du serveur d'amorçage sur le Afficher les informations sur les clients page de votre cluster MSK sans serveur.

Page de connexion au serveur d'amorçage

Vous pouvez configurer l'authentification IAM en suivant ces Des instructions.

Configurer le connecteur du récepteur

Maintenant, configurons un connecteur de récepteur pour envoyer les données à l'instance MongoDB Atlas Serverless.

  1. Sur la console Amazon MSK, choisissez Connecteurs RF dans le volet de navigation.
  2. Selectionnez Créer un connecteur.
  3. Sélectionnez le plugin que vous avez créé précédemment.
  4. Selectionnez Suivant.Interface utilisateur du connecteur du récepteur
  5. Sélectionnez l'instance MSK sans serveur que vous avez créée précédemment.
  6. Saisissez votre configuration de connexion sous la forme du code suivant :
connector.class=com.mongodb.kafka.connect.MongoSinkConnector
key.converter.schema.enable=false
value.converter.schema.enable=false
database=MongoDBMSKDemo
collection=Sink
tasks.max=1
topics=MongoDBMSKDemo.Source
connection.uri=(MongoDB Atlas Connection String Gos Here) value.converter=org.apache.kafka.connect.storage.StringConverter key.converter=org.apache.kafka.connect.storage.StringConverter

Assurez-vous que la connexion à l'instance MongoDB Atlas Serverless se fait via AWS PrivateLink. Pour plus d'informations, reportez-vous à Connexion sécurisée des applications à un plan de données MongoDB Atlas avec AWS PrivateLink.

  1. Dans le Autorisations d'accès section, créez une Gestion des identités et des accès AWS (IAM) rôle avec le stratégie de confiance requise.
  2. Selectionnez Suivant.Configuration du rôle IAM
  3. Spécifier Journaux Amazon CloudWatch comme option de livraison de journaux.
  4. Complétez votre connecteur.

Lorsque l'état du connecteur passe à Actif, le pipeline est prêt.

Page de confirmation du connecteur

Insérer des données dans le sujet MSK

Sur votre client EC2, insérez des données dans la rubrique MSK à l'aide de la kafka-console-producer comme suit:

bin/kafka-console-producer.sh --topic sandbox_sync2 --bootstrap-server <BOOTSTRAP SERVER> --producer.config=bin/client.properties

Pour vérifier que les données circulent correctement du sujet Kafka vers le cluster MongoDB sans serveur, nous utilisons l'interface utilisateur MongoDB Atlas.

Interface utilisateur de navigation dans les collections de MongoDB Atlas

Si vous rencontrez des problèmes, assurez-vous de vérifier les fichiers journaux. Dans cet exemple, nous avons utilisé CloudWatch pour lire les événements générés à partir d'Amazon MSK et du connecteur MongoDB pour Apache Kafka.

Interface utilisateur CloudWatch Logs

Nettoyer

Pour éviter des frais futurs, nettoyez les ressources que vous avez créées. Commencez par supprimer le cluster MSK, le connecteur et l'instance EC2 :

  1. Sur la console Amazon MSK, choisissez Clusters dans le volet de navigation.
  2. Sélectionnez votre cluster et sur le Actions menu, choisissez Supprimer.
  3. Selectionnez Connecteurs RF dans le volet de navigation.
  4. Sélectionnez votre connecteur et choisissez Supprimer.
  5. Selectionnez Plugins personnalisés dans le volet de navigation.
  6. Sélectionnez votre plugin et choisissez Supprimer.
  7. Sur la console Amazon EC2, choisissez Cas dans le volet de navigation.
  8. Choisissez l'instance que vous avez créée.
  9. Selectionnez État de l'instance, Puis choisissez Mettre fin à l'instance.
  10. Sur le VPC Amazon console, choisissez Endpoints dans le volet de navigation.
  11. Sélectionnez le point de terminaison que vous avez créé et sur le Actions menu, choisissez Supprimer les points de terminaison d'un VPC.

Vous pouvez maintenant supprimer le cluster Atlas et AWS PrivateLink :

  1. Connectez-vous à la console du cluster Atlas.
  2. Accédez au cluster sans serveur à supprimer.
  3. Dans le menu déroulant des options, choisissez Mettre fin.
  4. Accédez à la L'accès au réseau .
  5. Choisissez le point de terminaison privé.
  6. Sélectionnez l'instance sans serveur.
  7. Dans le menu déroulant des options, choisissez Mettre fin.Interface utilisateur de terminaison de point de terminaison

Résumé

Dans cet article, nous vous avons montré comment créer un pipeline d'ingestion de streaming sans serveur à l'aide de MSK Serverless et de MongoDB Atlas Serverless. Avec MSK Serverless, vous pouvez provisionner et gérer automatiquement les ressources requises en fonction des besoins. Nous avons utilisé un connecteur MongoDB déployé sur MSK Connect pour intégrer de manière transparente les deux services, et utilisé un client EC2 pour envoyer des exemples de données au sujet MSK. MSK Connect prend désormais en charge Noms d'hôte DNS privés, vous permettant d'utiliser des noms de domaine privés entre les services. Dans cet article, le connecteur a utilisé les serveurs DNS par défaut du VPC pour résoudre le nom DNS privé spécifique à la zone de disponibilité. Cette configuration AWS PrivateLink a permis une connectivité sécurisée et privée entre l'instance MSK Serverless et l'instance MongoDB Atlas Serverless.

Pour continuer votre apprentissage, consultez les ressources suivantes :


À propos des auteurs

Igor Alekseev est Senior Partner Solution Architect chez AWS dans le domaine Data and Analytics. Dans son rôle, Igor travaille avec des partenaires stratégiques pour les aider à créer des architectures complexes optimisées pour AWS. Avant de rejoindre AWS, en tant qu'architecte de données/solutions, il a mis en œuvre de nombreux projets dans le domaine du Big Data, y compris plusieurs lacs de données dans l'écosystème Hadoop. En tant qu'ingénieur de données, il a été impliqué dans l'application de l'IA/ML à la détection des fraudes et à la bureautique.

Kiran Matty est chef de produit principal chez Amazon Web Services (AWS) et travaille avec l'équipe Amazon Managed Streaming for Apache Kafka (Amazon MSK) basée à Palo Alto, en Californie. Il est passionné par la création de services de streaming et d'analyse performants qui aident les entreprises à réaliser leurs cas d'utilisation critiques.

 Babu Srinivasan est un architecte de solutions partenaire principal chez MongoDB. Dans son rôle actuel, il travaille avec AWS pour construire les intégrations techniques et les architectures de référence pour les solutions AWS et MongoDB. Il a plus de deux décennies d'expérience dans les technologies de bases de données et de cloud. Il est passionné par la fourniture de solutions techniques aux clients travaillant avec plusieurs intégrateurs de systèmes mondiaux (GSI) dans plusieurs zones géographiques.

Robert Walters est actuellement chef de produit senior chez MongoDB. Avant MongoDB, Rob a passé 17 ans chez Microsoft à occuper divers postes, notamment la gestion de programme au sein de l'équipe SQL Server, le conseil et l'avant-vente technique. Rob est co-auteur de trois brevets pour des technologies utilisées dans SQL Server et a été l'auteur principal de plusieurs livres techniques sur SQL Server. Rob est actuellement un blogueur actif sur les blogs MongoDB.

Horodatage:

Plus de Big Data AWS