Kafka-Daten in Managed Service for Apache Kafka replizieren

Wenn Sie Daten aus einem Open-Source-Apache Kafka-Thema in Managed Service for Apache Kafka verschieben müssen, können Sie dazu eine Dataflow-Vorlage verwenden. Sie können die Google Cloud Console, die REST API oder die Google Cloud CLI verwenden. Die Nachrichten im Kafka-Thema müssen mit AVRO- oder JSON-Schema und -Codierung veröffentlicht werden.

In diesem Dokument erfahren Sie, wie Sie die Dataflow-Vorlage „Kafka zu Kafka“ mit der Google Cloud -Konsole konfigurieren.

VerwendeteGoogle Cloud -Produkte

Für die Dataflow-Vorlage „Kafka zu Kafka“ werden die folgenden abrechenbaren Google Cloud Produkte verwendet. Mit dem Preisrechner können Sie eine Kostenschätzung für die voraussichtliche Nutzung erstellen.

  • Dataflow: Dataflow ist ein vollständig verwalteter Dienst zur Datenverarbeitung. Die Dataflow-Vorlage „Kafka zu Kafka“ verwendet Dataflow, um eine Pipeline zu erstellen, die Daten aus Ihrem externen Kafka-Thema liest und in ein Managed Service for Apache Kafka-Thema schreibt. Die Autoscaling- und Self-Healing-Funktionen von Dataflow sorgen dafür, dass Ihre Pipeline zuverlässig und effizient ausgeführt wird.
  • Cloud Storage: Cloud Storage bietet Objektspeicher. Sie wird nur verwendet, wenn Sie die TLS-Authentifizierung für Ihre externe Kafka-Quelle verwenden. Sie speichern Ihre Keystore- und Truststore-Dateien mit TLS-Zertifikaten in Cloud Storage und die Dataflow-Pipeline greift von Cloud Storage darauf zu.
  • Secret Manager: Secret Manager ist ein Dienst zur Verwaltung von Secrets und Anmeldedaten.Das Produkt wird nur verwendet, wenn Sie die TLS- oder SASL_PLAIN-Authentifizierung für Ihre externe Kafka-Quelle auswählen. Darin werden Ihre Anmeldedaten wie Nutzernamen, Passwörter und Zertifikate gespeichert. Diese Anmeldedaten werden verwendet, um eine sichere Verbindung zum externen Kafka-Cluster herzustellen.

Außerdem wird in der Lösung auch Managed Service for Apache Kafka verwendet.

  • Managed Service for Apache Kafka: Ein Google Cloud Dienst, der Sie bei der Ausführung von Apache Kafka unterstützt. In dieser Lösung wird Managed Service for Apache Kafka als Ziel für Ihre Daten verwendet. Sie streamen Daten aus einem externen Kafka-Thema in ein Thema in Ihrem Managed Service for Apache Kafka-Cluster. Weitere Informationen zu den Preisen für Managed Service for Apache Kafka finden Sie in der Preisübersicht.

Hinweis

Bevor Sie die Vorlage Kafka to Kafka Dataflow starten, müssen Sie Folgendes erledigt haben:

  1. Erstellen Sie einen Managed Service for Apache Kafka-Cluster und ein Thema.

    Eine Möglichkeit, einen Cluster und ein Thema zu erstellen, ist die Kurzanleitung für Managed Service for Apache Kafka.

    Wenn Ihr Thema Avro-Datensätze enthält, finden Sie weitere Ressourcenanforderungen unter Kafka-Nachrichtenformat konfigurieren.

  2. Aktivieren Sie die folgenden Google Cloud APIs:

    • Dataflow

    • Secret Manager (nur, wenn Sie die SASL_PLAIN- oder TLS-Authentifizierung für Ihre externe Kafka-Quelle verwenden)

    • Cloud Storage (nur, wenn Sie die TLS-Authentifizierung für Ihre externe Kafka-Quelle verwenden)

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

SASL_PLAIN-Authentifizierungsressourcen vorbereiten

Folgen Sie der Anleitung in diesem Abschnitt, wenn Sie die SASL_PLAIN-Authentifizierungsanmeldedaten für Ihre externe Kafka-Quelle verwenden möchten.

  1. Rufen Sie in der Google Cloud Console Secret Manager auf.

    Zu Secret Manager

  2. Erstellen Sie zwei Secrets: eines für Ihren Kafka-Nutzernamen und eines für Ihr Kafka-Passwort.

    Geben Sie für jedes Secret einen aussagekräftigen Namen an, z. B. „kafka-username“ und „kafka-password“.

Weitere Informationen zum Erstellen eines Secrets, einschließlich der erforderlichen Rollen und Berechtigungen, finden Sie unter Secret erstellen.

TLS-Authentifizierungsressourcen vorbereiten

Folgen Sie der Anleitung in diesem Abschnitt, wenn Sie Ihre TLS-Authentifizierungsanmeldedaten für Ihre externe Kafka-Quelle verwenden möchten.

  1. Rufen Sie in der Google Cloud Console Secret Manager auf.

    Zu Secret Manager

  2. Prüfen Sie, ob Ihre Keystore-Datei (JKS-Format) das TLS-Zertifikat und den privaten Schlüssel enthält, die für die Authentifizierung Ihres Clients beim Kafka-Cluster erforderlich sind.

  3. Achten Sie darauf, dass Ihre Truststore-Datei (JKS-Format) die vertrauenswürdigen Zertifikate enthält, die zum Überprüfen der Identität des Kafka-Brokers erforderlich sind.

  4. Laden Sie Ihre Keystore- und Truststore-Dateien in Cloud Storage hoch.

    Weitere Informationen zum Hochladen von Dateien in Cloud Storage finden Sie unter Objekte aus einem Dateisystem hochladen.

  5. Erstellen Sie drei Secrets für Ihre TLS-Konfiguration:

    • Truststore-Passwort: Speichert das Passwort, das für den Zugriff auf Ihre Truststore-Datei verwendet wird.

    • Schlüsselspeicher-Passwort: Speichert das Passwort, das für den Zugriff auf Ihre Schlüsselspeicherdatei verwendet wird.

    • Passwort für privaten Schlüssel: Speichert das Passwort, das für den Zugriff auf den privaten Schlüssel in Ihrer Schlüsselspeicherdatei verwendet wird.

    Geben Sie für jedes Secret einen aussagekräftigen Namen an.

Weitere Informationen zum Erstellen eines Secrets, einschließlich der erforderlichen Rollen und Berechtigungen, finden Sie unter Secret erstellen.

Dem Dataflow-Worker-Dienstkonto die Rolle „Managed Kafka Client“ gewähren

Wenn Sie Ihren Dataflow-Job mit Managed Service for Apache Kafka verbinden möchten, müssen Sie dem Dataflow-Worker-Dienstkonto bestimmte Berechtigungen gewähren. Dieses Dienstkonto ist die Identität, die für alle Worker-VMs in Ihrem Dataflow-Job verwendet wird. Alle Anfragen, die von diesen VMs gesendet werden, verwenden dieses Konto.

Damit Sie auf Ihre Kafka-Ressourcen zugreifen können, müssen Sie dem Dataflow-Worker-Dienstkonto die Rolle roles/managedkafka.client zuweisen. Diese Rolle umfasst die erforderliche Berechtigung managedkafka.clusters.connect zum Herstellen von Verbindungen.

Weitere Informationen zum Worker-Dienstkonto finden Sie unter Sicherheit und Berechtigungen für Pipelines in Google Cloud.

So gewähren Sie dem Dataflow-Dienstkonto die Rolle „Managed Kafka Client“:

Console

  1. Rufen Sie in der Google Cloud Console die Seite IAM auf.
    IAM aufrufen
  2. Prüfen Sie, ob das Projekt auf das Nutzerprojekt festgelegt ist, auf das der Managed Service for Apache Kafka-Client zugreifen würde.
  3. Klicken Sie auf Zugriff erlauben.
  4. Geben Sie auf der neuen Seite unter Hauptkonten hinzufügen die E-Mail-Adresse des Dataflow-Worker-Dienstkontos ein, das Sie verwenden.
  5. Wählen Sie unter Rollen zuweisen die Rolle Managed Kafka-Client aus.
  6. Klicken Sie auf Speichern.

gcloud-CLI

  1. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

    Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.

  2. Führen Sie den Befehl gcloud projects add-iam-policy-binding aus:

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

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID.

    • SERVICE_ACCOUNT_EMAIL ist die E-Mail-Adresse des Dataflow-Worker-Dienstkontos.

Dataflow-Vorlage „Kafka zu Kafka“ starten

Sie können die Vorlage Kafka to Kafka Dataflow über die Detailseite des Clusters in der Console starten.

  1. Rufen Sie in der Google Cloud Console die Seite Cluster auf.

    Zu den Clustern

    Die Cluster, die Sie in einem Projekt erstellt haben, werden aufgeführt.

  2. Klicken Sie auf einen Clusternamen, um die Cluster-Detailseite aufzurufen.
  3. Klicken Sie auf der Seite mit den Clusterdetails auf Daten importieren.

    Die Seite Dataflow-Job mit der Vorlage „Kafka zu Kafka“ erstellen wird geöffnet.

Konfigurieren Sie die Felder in der Vorlage gemäß den Informationen in den folgenden Abschnitten.

Geben Sie einen Jobnamen ein.

Geben Sie im Feld Jobname einen Namen für Ihren Dataflow-Job ein.

Der Name muss unter allen aktuell laufenden Jobs im Projekt eindeutig sein.

Regionalen Endpunkt für Ihre Pipeline auswählen

Legen Sie im Feld Regionaler Endpunkt den regionalen Endpunkt auf den Standort Ihres Kafka-Clusters fest, um gebietsübergreifende Datenübertragungsgebühren zu minimieren.

Die Dataflow-Worker können unabhängig von der Region Ihres Kafka-Clusters ausgeführt werden. Wenn Sie Worker außerhalb der Region Ihres Kafka-Clusters starten, fallen jedoch Kosten für ausgehenden Traffic zwischen Regionen an.

Wenn Sie den Standort des Clusters aufrufen möchten, folgen Sie der Anleitung unter Managed Service for Apache Kafka-Cluster auflisten.

Quelle konfigurieren

  1. Wählen Sie für Quelle die Option Selbstverwaltetes oder externes Kafka aus.

  2. Geben Sie für Kafka-Bootstrap-Server die Adresse des externen Kafka-Cluster-Bootstrap-Servers ein.

  3. Geben Sie für Source Kafka Bootstrap server and topic (Kafka-Bootstrap-Server und ‑Thema der Quelle) die externe Kafka-Bootstrap-Server- und ‑Thema-Adresse ein.

  4. Wählen Sie unter Kafka source authentication mode (Modus der Kafka-Quellauthentifizierung) den gewünschten Authentifizierungsmodus aus den verfügbaren Optionen aus. Für externes Kafka haben Sie drei Optionen:

    • SASL_PLAIN

    • TLS

    • Keine

Für die SASL_PLAIN-Authentifizierung der Kafka-Quelle

Bevor Sie mit diesem Abschnitt fortfahren, lesen Sie den Abschnitt SASL_PLAIN-Authentifizierungsressourcen vorbereiten.

Wenn Sie SASL_PLAIN als Kafka-Quellauthentifizierung auswählen, füllen Sie die folgenden zusätzlichen Felder aus.

  1. Geben Sie für Secret version ID for Kafka SASL/PLAIN username (Secret-Versions-ID für den Kafka-SASL/PLAIN-Nutzernamen) die Versions-ID für den Nutzernamen ein.

  2. Geben Sie für Secret version ID for Kafka SASL/PLAIN password (Secret-Versions-ID für das Kafka-SASL/PLAIN-Passwort) die Versions-ID für das Passwort ein.

Für die TLS-Kafka-Quellauthentifizierung

Bevor Sie mit diesem Abschnitt fortfahren, lesen Sie den Abschnitt TLS-Authentifizierungsressourcen vorbereiten.

Wenn Sie TLS als Kafka-Quellauthentifizierung auswählen, füllen Sie die folgenden zusätzlichen Felder aus.

  1. Geben Sie unter Speicherort des Keystore den Cloud Storage-Pfad zu Ihrer Java Keystore-Datei (JKS) ein. Diese Datei enthält das TLS-Zertifikat und den privaten Schlüssel, die für die Authentifizierung Ihrer Pipeline beim Kafka-Cluster erforderlich sind. Beispiel: gs://Ihr-Bucket/keystore.jks

  2. Geben Sie im Feld Speicherort der Truststore-Datei den Cloud Storage-Pfad zu Ihrer Java Truststore-Datei (JKS) ein. Diese Datei enthält die vertrauenswürdigen Zertifikate, mit denen die Identität des Kafka-Brokers geprüft wird.

  3. Geben Sie für Secret Version ID for Truststore password (Secret-Versions-ID für Truststore-Passwort) die Secret Manager-Secret-ID an, in der das Passwort für den Zugriff auf die Truststore-JKS-Datei gespeichert ist.

  4. Geben Sie für Secret-Versions-ID des Keystore-Passworts die Secret-ID des Secret Manager an, in der das Passwort für den Zugriff auf Ihre JKS-Datei gespeichert ist.

  5. Wenn Ihr privater Schlüssel im Schlüsselspeicher ein separates Passwort hat, geben Sie im Feld Secret-Versions-ID des Passworts für den privaten Schlüssel die Secret Manager-Secret-ID ein, die dieses Passwort enthält.

Offsets an Kafka übertragen

Mit dieser Einstellung wird gesteuert, wie die Pipeline nachverfolgt, welche Nachrichten aus der externen Kafka-Quelle verarbeitet werden. Wenn Sie diese Einstellung aktivieren, werden Nachrichten in Ihrer Pipeline zuverlässig verarbeitet und Fehler beim Neustart vermieden.

Kafka verfolgt Nachrichten mithilfe von Offsets. Sie können sich das als Lesezeichen vorstellen, das die Position der Pipeline in jedem Nachrichtenstream speichert. Wenn Sie die Einstellung aktivieren, speichert die Pipeline ihre Lesezeichen regelmäßig in Kafka. Wenn die Pipeline aufgrund eines Fehlers, einer Aktualisierung oder einer geplanten Wartung neu gestartet wird, kann sie die gespeicherten Lesezeichen verwenden, um genau dort fortzufahren, wo sie unterbrochen wurde. So werden Nachrichten nicht übersehen und dieselbe Nachricht wird nicht versehentlich zweimal verarbeitet.

  1. Aktivieren Sie Commit-Offsets für Kafka.

  2. Geben Sie eine Nutzergruppen-ID an. Dies ist ein Name, der Ihre Pipeline für Kafka identifiziert.

  3. Wählen Sie für Default Kafka start offset (Standard-Kafka-Start-Offset) eine der folgenden Optionen aus:

    • Earliest: Verarbeitet Nachrichten vom Anfang des Kafka-Themas.

    • Neueste: Nachrichten werden ab der neuesten Nachricht verarbeitet.

Ziel konfigurieren

  1. Wählen Sie als Ziel Managed Service for Apache Kafka aus.

  2. Wählen Sie unter Kafka-Cluster einen Cluster aus, den Sie bereits erstellt haben.

  3. Sie können ein vorhandenes Thema auswählen oder ein neues erstellen.

  4. Wählen Sie für Kafka destination authentication method (Authentifizierungsmethode für Kafka-Ziel) Application Default Credentials (Standardanmeldedaten für Anwendungen) aus.

Verschlüsselung konfigurieren

Standardmäßig werden alle Daten im Ruhezustand und während der Übertragung durch eineGoogle-owned and Google-managed encryption keyverschlüsselt. Wenn Sie kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) haben, können Sie Ihre eigenen Schlüssel auswählen. Weitere Informationen zum Konfigurieren eines CMEK finden Sie unter Nachrichtenverschlüsselung konfigurieren.

Netzwerk konfigurieren

Sie müssen das Netzwerk und das Subnetzwerk des Clusters in der Dataflow-Vorlage angeben. Im Abschnitt Optionale Parameter der Vorlage können Sie das Netzwerk für Ihre Dataflow-Worker definieren.

Mit der Vorlage Kafka to Kafka Dataflow werden standardmäßig Dataflow-Worker im Standardnetzwerk Ihres Projekts bereitgestellt. Damit Ihr externer Kafka-Cluster Daten über Dataflow an Managed Service for Apache Kafka senden kann, müssen Ihre Dataflow-Worker auf das Netzwerk Ihres Clusters zugreifen können.

Wenn Ihr Kafka-Cluster nicht mit einem Subnetz im Standardnetzwerk des Projekts verbunden ist, empfehlen wir, das Standardnetzwerk des Projekts für Ihren Kafka-Cluster zu verwenden.

Weitere Informationen zum Einrichten des Netzwerks für Ihre Dataflow-Pipeline finden Sie unter:

Wenn Sie Probleme bei der Konfiguration des Dataflow-Netzwerks haben, lesen Sie die Anleitung zur Fehlerbehebung bei Dataflow-Netzwerken.

Optionale Dataflow-Parameter konfigurieren

Konfigurieren Sie die optionalen Dataflow-Parameter nur, wenn Sie wissen, welche Auswirkungen die Konfiguration auf die Dataflow-Worker hat. Falsche Einstellungen können sich auf die Leistung oder die Kosten auswirken. Ausführliche Erläuterungen zu den einzelnen Optionen finden Sie unter Optionale Parameter.

Monitoring

Die Dataflow-Vorlage für Kafka zu Managed Service for Apache Kafka bietet eine Monitoring-Funktion, mit der Sie Logs, Messwerte und Fehler in der Konsole untersuchen können. Diese Monitoring-Tools sind Teil der Dataflow-Benutzeroberfläche.

Auf dem Tab Jobmesswerte können Sie benutzerdefinierte Dashboards erstellen. Für die Vorlage „Kafka zu Managed Service for Apache Kafka“ empfehlen wir, ein Dashboard für Jobmesswerte einzurichten, das Folgendes überwacht:

  • Durchsatz: Das Datenvolumen, das zu einem bestimmten Zeitpunkt verarbeitet wird. Das ist nützlich, um den Datenfluss durch Ihren Job zu überwachen und potenzielle Leistungsprobleme zu erkennen.

    Weitere Informationen finden Sie unter Dataflow-Durchsatzmonitoring.

  • Datenaktualität: Die Differenz in Sekunden zwischen dem Zeitstempel des Datenelements und dem Zeitpunkt, zu dem das Ereignis in Ihrer Pipeline verarbeitet wird. So lassen sich Leistungs- und Datenquellenengpässe oder häufige Wiederholungsversuche erkennen.

    Weitere Informationen finden Sie unter Dataflow-Aktualität überwachen.

  • Rückstand: Die Menge der Bytes, die auf die Verarbeitung warten. Diese Informationen fließen in Autoscaling-Entscheidungen ein.

Weitere Informationen zum Dataflow-Monitoring finden Sie in der Dataflow-Monitoring-Dokumentation.

Fehlerbehebung

Wenn bei Ihrer Dataflow-Pipeline Leistungsprobleme auftreten, bietet Dataflow eine umfassende Reihe von Tools zur Fehlerbehebung und Diagnose.

Hier sind zwei häufige Szenarien und die entsprechenden Anleitungen zur Fehlerbehebung:

Eine allgemeine Übersicht zum Debuggen von Dataflow-Pipelines finden Sie unter Fehlerbehebung und Debugging von Dataflow-Pipelines.

Nächste Schritte