Crea una pipeline di streaming serverless con Amazon MSK Serverless, Amazon MSK Connect e MongoDB Atlas

Crea una pipeline di streaming serverless con Amazon MSK Serverless, Amazon MSK Connect e MongoDB Atlas

Nodo di origine: 1903134

Questo post è stato scritto insieme a Babu Srinivasan e Robert Walters di MongoDB.

Streaming gestito da Amazon per Apache Kafka (Amazon MSK) è un servizio Apache Kafka completamente gestito e altamente disponibile. Amazon MSK semplifica l'acquisizione e l'elaborazione di flussi di dati in tempo reale e l'utilizzo semplice di tali dati all'interno dell'ecosistema AWS. Insieme a Amazon MSK senza server, puoi eseguire automaticamente il provisioning e gestire le risorse necessarie per fornire capacità di streaming on demand e storage per le tue applicazioni.

Amazon MSK supporta anche l'integrazione di origini dati come MongoDB Atlas tramite Amazon MSK Connect. MSK Connect consente l'integrazione serverless dei dati MongoDB con Amazon MSK utilizzando il Connettore MongoDB per Apache Kafka.

MongoDB Atlas senza server fornisce servizi di database che aumentano e diminuiscono dinamicamente in base alle dimensioni e alla velocità effettiva dei dati e il costo aumenta di conseguenza. È più adatto per applicazioni con esigenze variabili da gestire con una configurazione minima. Fornisce prestazioni e affidabilità elevate con funzionalità di aggiornamento automatico, crittografia, sicurezza, metriche e backup integrate nell'infrastruttura MongoDB Atlas.

MSK Serverless è un tipo di cluster per Amazon MSK. Proprio come MongoDB Atlas Serverless, MSK Serverless esegue automaticamente il provisioning e il ridimensionamento delle risorse di elaborazione e storage. Ora puoi creare flussi di lavoro serverless end-to-end. Puoi creare una pipeline di streaming serverless con acquisizione serverless utilizzando MSK Serverless e archiviazione serverless utilizzando MongoDB Atlas. Inoltre, MSK Connect ora supporta nomi host DNS privati. Ciò consente alle istanze Serverless MSK di connettersi ai cluster Serverless MongoDB tramite Collegamento privato AWS, fornendoti una connettività sicura tra le piattaforme.

Se sei interessato a utilizzare un cluster non serverless, fai riferimento a Integrazione di MongoDB con Amazon Managed Streaming per Apache Kafka (MSK).

Questo post mostra come implementare una pipeline di streaming serverless con MSK Serverless, MSK Connect e MongoDB Atlas.

Panoramica della soluzione

Il diagramma seguente illustra l'architettura della nostra soluzione.

Flusso di dati tra AWS MSK e MongoDB Atlas

Il flusso di dati inizia con un Cloud di calcolo elastico di Amazon (Amazon EC2) istanza client che scrive record in un argomento MSK. Quando i dati arrivano, un'istanza del connettore MongoDB per Apache Kafka scrive i dati in una raccolta nel cluster MongoDB Atlas Serverless. Per una connettività sicura tra le due piattaforme, viene creata una connessione AWS PrivateLink tra il cluster MongoDB Atlas e il VPC contenente l'istanza MSK.

Questo post ti guida attraverso i seguenti passaggi:

  1. Crea il cluster MSK senza server.
  2. Crea il cluster MongoDB Atlas Serverless.
  3. Configura il plug-in MSK.
  4. Crea il client EC2.
  5. Configura un argomento MSK.
  6. Configura il connettore MongoDB per Apache Kafka come sink.

Configura il cluster MSK senza server

Per creare un cluster MSK serverless, completare i seguenti passaggi:

  1. Sulla console Amazon MSK, scegli Cluster nel pannello di navigazione.
  2. Scegli Crea cluster.
  3. Nel Metodo di creazione, selezionare Creazione personalizzata.
  4. Nel Nome del cluster, accedere MongoDBMSKCluster.
  5. Nel Tipo di grappoloSelezionare serverless.
  6. Scegli Avanti.Interfaccia utente per la creazione di cluster MSK serverless
  7. Sulla Networking pagina, specifica il VPC, le zone di disponibilità e le sottoreti corrispondenti.
  8. Prendi nota delle zone di disponibilità e delle sottoreti da utilizzare in seguito.Impostazioni del cluster che mostrano VPC e sottoreti
  9. Scegli Avanti.
  10. Scegli Crea cluster.

Quando il cluster è disponibile, il suo stato diventa Active.

Cluster disponibile per l'uso

Crea il cluster MongoDB Atlas Serverless

Per creare un cluster MongoDB Atlas, segui il file Iniziare con Atlas tutorial. Si noti che per gli scopi di questo post, è necessario creare un'istanza senza server.

Finestra di dialogo Crea nuovo cluster

Dopo aver creato il cluster, configura un endpoint privato AWS con i seguenti passaggi:

  1. Sulla Sicurezza menù, scegliere Accesso alla rete.Posizione di accesso alla rete nel menu Sicurezza
  2. Sulla Endpoint privato scheda, scegliere Istanza senza server.
    Accesso alla rete dell'istanza serverless
  3. Scegli Crea un nuovo endpoint.
  4. Nel Istanza senza server, scegli l'istanza appena creata.
  5. Scegli Confermare.Crea un'interfaccia utente dell'endpoint privato
  6. Fornisci la configurazione dell'endpoint VPC e scegli Avanti.Interfaccia utente di configurazione dell'endpoint VPC
  7. Quando crei la risorsa AWS PrivateLink, assicurati di specificare esattamente lo stesso VPC e le stesse sottoreti che hai utilizzato in precedenza durante la creazione della configurazione di rete per l'istanza MSK serverless.
  8. Scegli Avanti.Interfaccia utente di configurazione della sottorete dell'endpoint VPC
  9. Segui le istruzioni sul ultimare pagina, quindi scegli Confermare dopo la creazione dell'endpoint VPC.

In caso di successo, il nuovo endpoint privato verrà visualizzato nell'elenco, come mostrato nello screenshot seguente.

Pagina di conferma dell'accesso alla rete

Configura il plug-in MSK

Successivamente, creiamo un plug-in personalizzato in Amazon MSK utilizzando il connettore MongoDB per Apache Kafka. Il connettore deve essere caricato su un file Servizio di archiviazione semplice Amazon (Amazon S3) prima di poter creare il plug-in. Per scaricare il connettore MongoDB per Apache Kafka, fare riferimento a Scarica un file JAR del connettore.

  1. Sulla console Amazon MSK, scegli Plugin personalizzati nel pannello di navigazione.
  2. Scegli Crea plug-in personalizzato.
  3. Nel URI S3, immettere la posizione S3 del connettore scaricato.
  4. Scegli Crea plug-in personalizzato.

Dettagli del plug-in MSK

Configura un client EC2

Successivamente, configuriamo un'istanza EC2. Utilizziamo questa istanza per creare l'argomento e inserire i dati nell'argomento. Per le istruzioni, fare riferimento alla sezione Configura un client EC2 nella posta Integrazione di MongoDB con Amazon Managed Streaming per Apache Kafka (MSK).

Crea un argomento nel cluster MSK

Per creare un argomento Kafka, dobbiamo prima installare l'interfaccia a riga di comando di Kafka.

  1. Sull'istanza EC2 del client, installa prima Java:

sudo yum install java-1.8.0

  1. Quindi, esegui il seguente comando per scaricare Apache Kafka:

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

  1. Scompattare il file tar utilizzando il seguente comando:

tar -xzf kafka_2.12-2.6.2.tgz

La distribuzione di Kafka include una cartella bin con strumenti che possono essere utilizzati per gestire gli argomenti.

  1. Vai kafka_2.12-2.6.2 directory ed emettere il seguente comando per creare un argomento Kafka sul cluster MSK senza server:

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

È possibile copiare l'endpoint del server di bootstrap nel file Visualizza le informazioni sul cliente page per il tuo cluster MSK serverless.

Pagina di connessione al server Bootstrap

Puoi configurare l'autenticazione IAM seguendo queste istruzioni istruzioni.

Configurare il connettore sink

Ora, configuriamo un connettore sink per inviare i dati all'istanza MongoDB Atlas Serverless.

  1. Sulla console Amazon MSK, scegli Connettori RF nel pannello di navigazione.
  2. Scegli Crea connettore.
  3. Seleziona il plug-in che hai creato in precedenza.
  4. Scegli Avanti.Interfaccia utente del connettore sink
  5. Seleziona l'istanza MSK serverless che hai creato in precedenza.
  6. Inserisci la tua configurazione di connessione come il seguente codice:
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

Assicurati che la connessione all'istanza MongoDB Atlas Serverless avvenga tramite AWS PrivateLink. Per ulteriori informazioni, fare riferimento a Connessione sicura delle applicazioni a un piano dati MongoDB Atlas con AWS PrivateLink.

  1. Nel Autorizzazioni di accesso sezione, creare un file Gestione dell'identità e dell'accesso di AWS (IAM) ruolo con il politica di fiducia richiesta.
  2. Scegli Avanti.Configurazione del ruolo IAM
  3. Specificare Log di Amazon CloudWatch come opzione di consegna dei log.
  4. Completa il tuo connettore.

Quando lo stato del connettore passa ad Attivo, la pipeline è pronta.

Pagina di conferma del connettore

Inserisci i dati nell'argomento MSK

Sul tuo client EC2, inserisci i dati nell'argomento MSK utilizzando il file kafka-console-producer come segue:

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

Per verificare che i dati fluiscano correttamente dall'argomento Kafka al cluster MongoDB senza server, utilizziamo l'interfaccia utente di MongoDB Atlas.

MongoDB Atlas Sfoglia l'interfaccia utente delle raccolte

In caso di problemi, assicurati di controllare i file di registro. In questo esempio, abbiamo utilizzato CloudWatch per leggere gli eventi generati da Amazon MSK e dal connettore MongoDB per Apache Kafka.

Interfaccia utente di CloudWatch Logs

ripulire

Per evitare di incorrere in addebiti futuri, ripulisci le risorse che hai creato. Innanzitutto, elimina il cluster MSK, il connettore e l'istanza EC2:

  1. Sulla console Amazon MSK, scegli Cluster nel pannello di navigazione.
  2. Seleziona il tuo cluster e sul Azioni menù, scegliere Elimina.
  3. Scegli Connettori RF nel pannello di navigazione.
  4. Seleziona il tuo connettore e scegli Elimina.
  5. Scegli Plugin personalizzati nel pannello di navigazione.
  6. Seleziona il tuo plug-in e scegli Elimina.
  7. Sulla console Amazon EC2, scegli Istanze nel pannello di navigazione.
  8. Scegli l'istanza che hai creato.
  9. Scegli Stato dell'istanza, Quindi scegliere Termina istanza.
  10. Sulla VPC Amazon console, scegli endpoint nel pannello di navigazione.
  11. Seleziona l'endpoint che hai creato e sul file Azioni menù, scegliere Elimina gli endpoint VPC.

Ora puoi eliminare il cluster Atlas e AWS PrivateLink:

  1. Accedi alla console del cluster Atlas.
  2. Passare al cluster serverless da eliminare.
  3. Nel menu a discesa delle opzioni, scegli Terminare.
  4. Passare alla Accesso alla rete .
  5. Scegli l'endpoint privato.
  6. Seleziona l'istanza senza server.
  7. Nel menu a discesa delle opzioni, scegli Terminare.Interfaccia utente di terminazione dell'endpoint

Sommario

In questo post, ti abbiamo mostrato come creare una pipeline di ingestione di streaming serverless utilizzando MSK Serverless e MongoDB Atlas Serverless. Con MSK Serverless, puoi eseguire automaticamente il provisioning e gestire le risorse richieste in base alle necessità. Abbiamo utilizzato un connettore MongoDB distribuito su MSK Connect per integrare perfettamente i due servizi e abbiamo utilizzato un client EC2 per inviare dati di esempio all'argomento MSK. MSK Connect ora supporta Nomi host DNS privati, consentendoti di utilizzare nomi di dominio privati ​​tra i servizi. In questo post, il connettore ha utilizzato i server DNS predefiniti del VPC per risolvere il nome DNS privato specifico della zona di disponibilità. Questa configurazione AWS PrivateLink ha consentito una connettività sicura e privata tra l'istanza MSK Serverless e l'istanza MongoDB Atlas Serverless.

Per continuare il tuo apprendimento, controlla le seguenti risorse:


Informazioni sugli autori

Igor Alekseev è Senior Partner Solution Architect presso AWS nel dominio Dati e analisi. Nel suo ruolo Igor sta lavorando con partner strategici aiutandoli a costruire complesse architetture ottimizzate per AWS. Prima di entrare in AWS, come Data/Solution Architect ha implementato molti progetti nel dominio dei Big Data, inclusi diversi data lake nell'ecosistema Hadoop. In qualità di Data Engineer, è stato coinvolto nell'applicazione di AI/ML al rilevamento delle frodi e all'automazione dell'ufficio.

Kiran Matty è un Principal Product Manager con Amazon Web Services (AWS) e lavora con il team Amazon Managed Streaming per Apache Kafka (Amazon MSK) con sede a Palo Alto, in California. È appassionato di creare streaming performanti e servizi analitici che aiutino le aziende a realizzare i loro casi d'uso critici.

 Babu Srivasan è Senior Partner Solutions Architect presso MongoDB. Nel suo ruolo attuale, sta lavorando con AWS per creare le integrazioni tecniche e le architetture di riferimento per le soluzioni AWS e MongoDB. Ha più di due decenni di esperienza nelle tecnologie Database e Cloud. È appassionato di fornire soluzioni tecniche ai clienti che lavorano con più Global System Integrator (GSI) in più aree geografiche.

Robert Walters è attualmente Senior Product Manager presso MongoDB. Prima di MongoDB, Rob ha trascorso 17 anni in Microsoft ricoprendo vari ruoli, tra cui la gestione dei programmi nel team di SQL Server, la consulenza e la prevendita tecnica. Rob è coautore di tre brevetti per le tecnologie utilizzate all'interno di SQL Server ed è stato l'autore principale di diversi libri tecnici su SQL Server. Rob è attualmente un blogger attivo sui blog MongoDB.

Timestamp:

Di più da Big Data di AWS