Replica i dati Kafka in Managed Service per Apache Kafka

Se devi spostare i dati da un argomento Apache Kafka open source a Managed Service per Apache Kafka, puoi farlo con un modello Dataflow. Puoi utilizzare la console Google Cloud , l'API REST o Google Cloud CLI. I messaggi nell'argomento Kafka devono essere pubblicati utilizzando lo schema e la codifica AVRO o JSON.

Questo documento ti aiuta a configurare il modello Kafka to Kafka Dataflow utilizzando la console Google Cloud .

Google Cloud prodotti utilizzati

Il modello Dataflow Kafka to Kafka utilizza i seguenti prodotti Google Cloud fatturabili. Utilizza il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.

  • Dataflow: Dataflow è un servizio di elaborazione dei dati completamente gestito. Il modello Kafka to Kafka Dataflow utilizza Dataflow per creare una pipeline che legge i dati dall'argomento Kafka esterno e li scrive in un argomento Managed Service per Apache Kafka. Le funzionalità di scalabilità automatica e auto-ripristino di Dataflow garantiscono l'esecuzione affidabile ed efficiente della pipeline.
  • Cloud Storage: Cloud Storage fornisce l'archiviazione di oggetti. Viene utilizzato solo se utilizzi l'autenticazione TLS per l'origine Kafka esterna. Archivi i file Keystore e Truststore contenenti i certificati TLS in Cloud Storage e la pipeline Dataflow vi accede da Cloud Storage.
  • Secret Manager: Secret Manager è un servizio di gestione di secret e credenziali.Il prodotto viene utilizzato solo se scegli l'autenticazione TLS o SASL_PLAIN per l'origine Kafka esterna. Memorizza le tue credenziali di autenticazione, come nomi utente, password e certificati. Queste credenziali vengono utilizzate per connettersi in modo sicuro al cluster Kafka esterno.

Inoltre, la soluzione utilizza anche Managed Service per Apache Kafka.

  • Managed Service per Apache Kafka: un Google Cloud servizio che ti aiuta a eseguire Apache Kafka. In questa soluzione, Managed Service per Apache Kafka viene utilizzato come destinazione per i tuoi dati. Trasmetti i dati da un argomento Kafka esterno a un argomento all'interno del cluster Managed Service per Apache Kafka. Per ulteriori informazioni sui prezzi di Managed Service per Apache Kafka, consulta la guida ai prezzi.

Prima di iniziare

Prima di avviare il modello Dataflow da Kafka a Kafka, assicurati di aver completato quanto segue:

  1. Crea un cluster e un argomento Managed Service per Apache Kafka.

    Un modo per creare un cluster e un argomento è seguire la guida rapida di Managed Service per Apache Kafka.

    Se l'argomento contiene record Avro, per ulteriori requisiti di risorse, consulta Configurare il formato dei messaggi Kafka.

  2. Abilita le seguenti API Google Cloud :

    • Dataflow

    • Secret Manager (solo se utilizzi l'autenticazione SASL_PLAIN o TLS per l'origine Kafka esterna)

    • Cloud Storage (solo se utilizzi l'autenticazione TLS per l'origine Kafka esterna)

    gcloud services enable dataflow.googleapis.com \
    secretmanager.googleapis.com storage.googleapis.com
    

Prepara le risorse di autenticazione SASL_PLAIN

Segui le istruzioni in questa sezione se prevedi di utilizzare le credenziali di autenticazione SASL_PLAIN per l'origine Kafka esterna.

  1. Nella console Google Cloud , vai a Secret Manager.

    Vai a Secret Manager

  2. Crea due secret: uno per il nome utente Kafka e uno per la password Kafka.

    Per ogni secret, fornisci un nome descrittivo, ad esempio "kafka-username" e "kafka-password".

Per saperne di più su come creare un secret, inclusi i ruoli e le autorizzazioni richiesti, consulta Crea un secret.

Prepara le risorse di autenticazione TLS

Segui le istruzioni in questa sezione se prevedi di utilizzare le credenziali di autenticazione TLS per l'origine Kafka esterna.

  1. Nella console Google Cloud , vai a Secret Manager.

    Vai a Secret Manager

  2. Assicurati che il file dell'archivio chiavi (formato JKS) contenga il certificato TLS e la chiave privata necessari per autenticare il client con il cluster Kafka.

  3. Assicurati che il file Truststore (formato JKS) contenga i certificati attendibili necessari per verificare l'identità del broker Kafka.

  4. Carica i file Keystore e Truststore su Cloud Storage.

    Per ulteriori informazioni su come caricare file in Cloud Storage, consulta Carica oggetti da un file system.

  5. Crea tre secret per la configurazione TLS:

    • Password dell'archivio attendibilità: memorizza la password utilizzata per accedere al file dell'archivio attendibilità.

    • Password dell'archivio chiavi: memorizza la password utilizzata per accedere al file archivio chiavi.

    • Password della chiave privata: memorizza la password utilizzata per accedere alla chiave privata all'interno del file archivio chiavi.

    Per ogni secret, fornisci un nome descrittivo.

Per saperne di più su come creare un secret, inclusi i ruoli e le autorizzazioni richiesti, consulta Crea un secret.

Concedi il ruolo Managed Kafka Client al account di servizio worker Dataflow

Per connettere il job Dataflow a Managed Service per Apache Kafka, devi concedere autorizzazioni specifiche al account di servizio worker Dataflow. Questo account di servizio è l'identità utilizzata per tutte le VM worker nel job Dataflow e tutte le richieste effettuate da queste VM utilizzano questo account.

Per consentire l'accesso alle risorse Kafka, devi concedere il ruolo roles/managedkafka.client alaccount di serviziont worker Dataflow. Questo ruolo include l'autorizzazione managedkafka.clusters.connect necessaria per stabilire le connessioni.

Per ulteriori informazioni sul account di servizio worker, consulta Sicurezza e autorizzazioni per le pipeline su Google Cloud.

Per concedere il ruolo Managed Kafka Client al account di servizio Dataflow, segui questi passaggi:

Console

  1. Nella console Google Cloud vai alla pagina IAM.
    Vai a IAM
  2. Verifica che il progetto sia impostato sul progetto consumer a cui accederà il client Managed Service per Apache Kafka.
  3. Fai clic su Concedi l'accesso.
  4. Nella nuova pagina, in Aggiungi entità, inserisci l'indirizzo email del account di servizio worker Dataflow che stai utilizzando.
  5. In Assegna i ruoli, seleziona il ruolo Client Kafka gestito.
  6. Fai clic su Salva.

gcloud CLI

  1. Nella console Google Cloud , attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Esegui il comando gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
      --role roles/managedkafka.client

    Sostituisci quanto segue:

    • PROJECT_ID è l'ID progetto.

    • SERVICE_ACCOUNT_EMAIL è l'indirizzo email del account di serviziot worker Dataflow.

Avvia il modello Dataflow da Kafka a Kafka

Puoi avviare il modello Dataflow da Kafka a Kafka dalla pagina dei dettagli del cluster nella console.

  1. Nella console Google Cloud , vai alla pagina Cluster.

    Vai a Cluster

    Vengono elencati i cluster che hai creato in un progetto.

  2. Per visualizzare la pagina dei dettagli del cluster, fai clic sul nome di un cluster.
  3. Nella pagina dei dettagli del cluster, fai clic su Importa dati.

    Viene visualizzata la pagina Crea un job Dataflow utilizzando il modello "Kafka to Kafka".

Configura i campi nel modello in base alle informazioni incluse nelle sezioni seguenti.

Inserisci un nome per il job

Nel campo Nome job, inserisci un nome per il job Dataflow.

Il nome deve essere univoco tra tutti i job attualmente in esecuzione nel progetto.

Scegliere un endpoint regionale per la pipeline

Per il campo Endpoint regionale, imposta l'endpoint regionale sulla posizione del cluster Kafka per ridurre al minimo le tariffe per il trasferimento di dati tra regioni.

I worker Dataflow possono essere eseguiti indipendentemente dalla regione del cluster Kafka. Tuttavia, se avvii i worker al di fuori della regione del cluster Kafka, devi sostenere i costi del traffico in uscita tra regioni.

Per visualizzare la posizione del cluster, segui i passaggi descritti in Elenca i cluster Managed Service per Apache Kafka.

Configura origine

  1. Per Origine, seleziona Kafka autogestito o esterno.

  2. In Server bootstrap Kafka, inserisci l'indirizzo del server bootstrap del cluster Kafka esterno.

  3. Per Server bootstrap e argomento Kafka di origine, inserisci l'indirizzo del server bootstrap e dell'argomento Kafka esterni.

  4. Per Modalità di autenticazione dell'origine Kafka, seleziona la modalità di autenticazione tra le opzioni fornite. Per Kafka esterno, hai tre opzioni:

    • SASL_PLAIN

    • TLS

    • Nessuna

Per l'autenticazione dell'origine Kafka SASL_PLAIN

Prima di procedere con questa sezione, consulta Prepara le risorse di autenticazione SASL_PLAIN.

Se selezioni SASL_PLAIN come autenticazione dell'origine Kafka, compila i seguenti campi aggiuntivi.

  1. Per Secret version ID for Kafka SASL/PLAIN username (ID versione del secret per il nome utente SASL/PLAIN di Kafka), inserisci l'ID versione per il nome utente.

  2. In ID versione secret per password SASL/PLAIN di Kafka, inserisci l'ID versione per la password.

Per l'autenticazione dell'origine Kafka TLS

Prima di procedere con questa sezione, consulta Prepara le risorse di autenticazione TLS.

Se selezioni TLS come autenticazione dell'origine Kafka, compila i seguenti campi aggiuntivi.

  1. In Posizione dell'archivio chiavi, inserisci il percorso Cloud Storage del file Java KeyStore (JKS). Questo file contiene il certificato TLS e la chiave privata necessari per autenticare la pipeline con il cluster Kafka. Ad esempio: gs://your-bucket/keystore.jks

  2. Nel campo Percorso file Truststore, inserisci il percorso Cloud Storage del file Java Truststore (JKS). Questo file contiene i certificati attendibili utilizzati per verificare l'identità del broker Kafka.

  3. Per ID versione secret per la password dell'archivio attendibilità, fornisci l'ID secret di Secret Manager che memorizza la password per accedere al file JKS dell'archivio attendibilità.

  4. Per ID versione secret della password dell'archivio chiavi, fornisci l'ID secret di Secret Manager che memorizza la password per accedere al file JKS.

  5. Per il campo ID versione secret della password della chiave privata, se la tua chiave privata all'interno dell'archivio chiavi ha una password separata, inserisci l'ID secret di Secret Manager contenente la password.

Esegui il commit degli offset in Kafka

Questa impostazione controlla il modo in cui la pipeline tiene traccia dei messaggi della sorgente Kafka esterna che vengono elaborati. L'attivazione di questa impostazione contribuisce a garantire che la pipeline elabori i messaggi in modo affidabile ed eviti errori durante il riavvio.

Kafka tiene traccia dei messaggi utilizzando gli offset. Considerali come segnalibri, che ricordano la posizione della pipeline in ogni flusso di messaggi. Quando abiliti l'impostazione, la pipeline salva regolarmente i segnalibri in Kafka. Se la pipeline viene riavviata a causa di un errore, di un aggiornamento o di una manutenzione pianificata, può utilizzare i segnalibri salvati per riprendere da dove aveva interrotto l'elaborazione. In questo modo, non perde messaggi o non elabora accidentalmente lo stesso messaggio due volte.

  1. Attiva Esegui il commit degli offset in Kafka.

  2. Fornisci un ID gruppo di consumer. Si tratta di un nome che identifica la pipeline in Kafka.

  3. Per Offset di avvio Kafka predefinito, scegli una delle seguenti opzioni:

    • Earliest: elabora i messaggi dall'inizio dell'argomento Kafka.

    • Più recente: elabora i messaggi a partire dal più recente.

Configura destinazione

  1. Per la destinazione, scegli Managed Service per Apache Kafka.

  2. Per Cluster Kafka, scegli un cluster che hai già creato.

  3. Puoi scegliere un argomento esistente o crearne uno nuovo.

  4. Per Metodo di autenticazione della destinazione Kafka, seleziona Credenziali predefinite dell'applicazione.

Configura la crittografia

Per impostazione predefinita, tutti i dati a riposo e in transito sono criptati da un Google-owned and Google-managed encryption key. Se hai chiavi di crittografia gestite dal cliente (CMEK), puoi selezionare le tue chiavi. Per saperne di più su come configurare una chiave CMEK, consulta Configurare la crittografia dei messaggi.

Configura il networking

Devi specificare la rete e la subnet del cluster nel modello Dataflow. La sezione Parametri facoltativi del modello consente di definire la rete per i worker Dataflow.

Il modello Dataflow da Kafka a Kafka esegue il provisioning dei worker Dataflow nella rete predefinita del progetto per impostazione predefinita. Per consentire al cluster Kafka esterno di inviare dati a Managed Service per Apache Kafka tramite Dataflow, assicurati che i worker Dataflow possano accedere alla rete del cluster.

Se il cluster Kafka non è connesso a una subnet nella rete predefinita del progetto, ti consigliamo di utilizzare la rete predefinita del progetto per il cluster Kafka.

Per saperne di più sulla configurazione del networking con la pipeline Dataflow, consulta quanto segue:

Se riscontri difficoltà nella configurazione della rete Dataflow, consulta la guida alla risoluzione dei problemi di rete Dataflow.

Configura i parametri Dataflow facoltativi

Configura i parametri Dataflow facoltativi solo se conosci l'impatto della configurazione sui worker Dataflow. Impostazioni errate possono influire sulle prestazioni o sui costi. Per spiegazioni dettagliate di ogni opzione, vedi Parametri facoltativi.

Monitoraggio

Il modello Dataflow per Kafka a Managed Service per Apache Kafka offre un'esperienza di monitoraggio che ti consente di esplorare log, metriche ed errori all'interno della console. Questa suite di strumenti di monitoraggio è disponibile nell'interfaccia utente di Dataflow.

La scheda Metriche job consente di creare dashboard personalizzate. Per il modello da Kafka a Managed Service per Apache Kafka, ti consigliamo di configurare un dashboard delle metriche dei job che monitori quanto segue:

  • Throughput: il volume di dati elaborati in un determinato momento. Ciò è utile per monitorare il flusso di dati nel job e identificare potenziali problemi di prestazioni.

    Per saperne di più, consulta Monitoraggio della velocità effettiva di Dataflow.

  • Aggiornamento dei dati: la differenza in secondi tra il timestamp dell'elemento di dati e l'ora in cui l'evento viene elaborato nella pipeline. Ciò è utile per identificare i colli di bottiglia delle prestazioni e delle origini dati o i tentativi frequenti.

    Per saperne di più, consulta quanto segue: Monitoraggio dell'aggiornamento dei dati di Dataflow.

  • Backlog: la quantità di byte in attesa di elaborazione. Queste informazioni vengono utilizzate per prendere decisioni relative alla scalabilità automatica.

Per saperne di più sul monitoraggio di Dataflow, consulta la documentazione sul monitoraggio di Dataflow.

Risoluzione dei problemi

Se riscontri problemi di prestazioni con la tua pipeline Dataflow, Dataflow fornisce un set completo di strumenti di risoluzione dei problemi e diagnostica.

Di seguito sono riportati due scenari comuni e le rispettive guide alla risoluzione dei problemi:

Per una panoramica generale del debug delle pipeline Dataflow, consulta Risolvere i problemi ed eseguire il debug delle pipeline Dataflow.

Passaggi successivi