Pub/Sub-Nachrichten in Kafka replizieren

In dieser Anleitung wird gezeigt, wie Sie Nachrichten aus Pub/Sub mit Kafka Connect in Ihren Managed Service for Apache Kafka-Cluster aufnehmen.

Kafka Connect verwaltet die Datenübertragung zwischen Ihrem Kafka-Cluster und anderen Systemen. In dieser Anleitung erstellen Sie einen Connect-Cluster und einen Pub/Sub-Quell-Connector. Der Pub/Sub-Quell-Connector liest Nachrichten aus Ihrem Pub/Sub-Thema und schreibt sie in ein Kafka-Thema.

Hinweis

Console

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Managed Kafka API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Managed Kafka API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Sie benötigen die folgenden Rollen für das Projekt: Managed Kafka Cluster Editor, Managed Kafka Connect Cluster Editor, Managed Kafka Connector Editor, Managed Kafka Topic Editor, Pub/Sub Editor

    Rollen prüfen

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

      IAM aufrufen
    2. Wählen Sie das Projekt aus.
    3. Suchen Sie in der Spalte Hauptkonto nach allen Zeilen, in denen Sie oder eine Gruppe, zu der Sie gehören, angegeben sind. Fragen Sie Ihren Administrator, zu welchen Gruppen Sie gehören.

    4. Prüfen Sie in allen Zeilen, in denen Sie angegeben oder enthalten sind, die Spalte Rolle, um zu sehen, ob die Liste der Rollen die erforderlichen Rollen enthält.

    Rollen zuweisen

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

      IAM aufrufen
    2. Wählen Sie das Projekt aus.
    3. Klicken Sie auf Zugriffsrechte erteilen.
    4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Das ist in der Regel die E‑Mail-Adresse eines Google-Kontos.

    5. Klicken Sie auf Rolle auswählen und suchen Sie nach der Rolle.
    6. Klicken Sie auf Weitere Rolle hinzufügen, wenn Sie weitere Rollen zuweisen möchten.
    7. Klicken Sie auf Speichern.

gcloud

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Weitere Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud -Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud -Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Projekts in Google Cloud .

  6. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  7. Aktivieren Sie die Managed Kafka API:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

    gcloud services enable managedkafka.googleapis.com
  8. Installieren Sie die Google Cloud CLI.

  9. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  10. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  11. Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.

    Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Weitere Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud -Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud -Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Projekts in Google Cloud .

  12. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  13. Aktivieren Sie die Managed Kafka API:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

    gcloud services enable managedkafka.googleapis.com
  14. Weisen Sie Ihrem Nutzerkonto Rollen zu. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus: roles/managedkafka.clusterEditor, roles/managedkafka.connectClusterEditor, roles/managedkafka.connectorEditor, roles/managedkafka.topicEditor, roles/pubsub.editor

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • USER_IDENTIFIER: Die Kennung für Ihr Nutzerkonto . Beispiel: myemail@example.com
    • ROLE: Die IAM-Rolle, die Sie Ihrem Nutzerkonto zuweisen.

Pub/Sub-Thema und -Abo erstellen

In diesem Schritt erstellen Sie ein Pub/Sub-Thema mit einem Abo.

Console

  1. Rufen Sie die Seite Pub/Sub > Themen auf.

    Themen aufrufen

  2. Klicken Sie auf  Thema erstellen.

  3. Geben Sie im Feld Themen-ID einen Namen für das Thema ein.

  4. Achten Sie darauf, dass das Kästchen Standardabo hinzufügen aktiviert ist.

  5. Klicken Sie auf Erstellen.

gcloud

  1. Führen Sie den Befehl gcloud pubsub topics create aus, um ein Pub/Sub-Thema zu erstellen.

    gcloud pubsub topics create TOPIC_ID
    

    Ersetzen Sie TOPIC_ID durch einen Namen für Ihr Pub/Sub-Thema.

  2. Führen Sie den Befehl gcloud pubsub subscriptions create aus, um ein Abo für Ihr Thema zu erstellen:

    gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_ID
    

    Ersetzen Sie SUBSCRIPTION_ID durch einen Namen für Ihr Pub/Sub-Abo.

Informationen zum Benennen von Pub/Sub-Themen und ‑Abos finden Sie unter Richtlinien für die Benennung eines Themas oder Abos.

Managed Service for Apache Kafka-Ressourcen erstellen

In diesem Abschnitt erstellen Sie die folgenden Managed Service for Apache Kafka-Ressourcen:

  • Ein Kafka-Cluster mit einem Thema.
  • Ein Connect-Cluster mit einem Pub/Sub-Connector.

Kafka-Cluster erstellen

In diesem Schritt erstellen Sie einen Managed Service for Apache Kafka-Cluster. Das Erstellen eines Clusters kann bis zu 30 Minuten dauern.

Console

  1. Rufen Sie die Seite Managed Service for Apache Kafka > Cluster auf.

    Zu den Clustern

  2. Klicken Sie auf Erstellen.
  3. Geben Sie in das Feld Clustername einen Namen für den Cluster ein.
  4. Wählen Sie in der Liste Region einen Standort für den Cluster aus.
  5. Konfigurieren Sie unter Netzwerkkonfiguration das Subnetz, in dem der Cluster zugänglich ist:
    1. Wählen Sie unter Projekt Ihr Projekt aus.
    2. Wählen Sie unter Netzwerk das VPC-Netzwerk aus.
    3. Wählen Sie das Subnetz für Subnetz aus.
    4. Klicken Sie auf Fertig.
  6. Klicken Sie auf Erstellen.

Nachdem Sie auf Erstellen geklickt haben, ist der Clusterstatus Creating. Wenn der Cluster bereit ist, lautet der Status Active.

gcloud

Führen Sie den Befehl managed-kafka clusters create aus, um einen Kafka-Cluster zu erstellen.

gcloud managed-kafka clusters create KAFKA_CLUSTER \
--location=REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
--async

Ersetzen Sie Folgendes:

  • KAFKA_CLUSTER: ein Name für den Kafka-Cluster
  • REGION: Der Standort des Clusters
  • PROJECT_ID: Ihre Projekt-ID.
  • SUBNET_NAME: Das Subnetz, in dem Sie den Cluster erstellen möchten, z. B. default

Informationen zu unterstützten Standorten finden Sie unter Managed Service for Apache Kafka-Standorte.

Der Befehl wird asynchron ausgeführt und gibt eine Vorgangs-ID zurück:

Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.

Verwenden Sie den Befehl gcloud managed-kafka operations describe, um den Fortschritt des Erstellungsvorgangs zu verfolgen:

gcloud managed-kafka operations describe OPERATION_ID \
  --location=REGION

Wenn der Cluster bereit ist, enthält die Ausgabe dieses Befehls den Eintrag state: ACTIVE. Weitere Informationen finden Sie unter Vorgang zum Erstellen von Clustern überwachen.

Kafka-Thema erstellen

Nachdem der Managed Service for Apache Kafka-Cluster erstellt wurde, erstellen Sie ein Kafka-Thema.

Console

  1. Rufen Sie die Seite Managed Service for Apache Kafka > Cluster auf.

    Zu den Clustern

  2. Klicken Sie auf den Namen des Clusters.

  3. Klicken Sie auf der Cluster-Detailseite auf Thema erstellen.

  4. Geben Sie im Feld Themenname einen Namen für das Thema ein.

  5. Klicken Sie auf Erstellen.

gcloud

Führen Sie den Befehl managed-kafka topics create aus, um ein Kafka-Thema zu erstellen.

gcloud managed-kafka topics create KAFKA_TOPIC_NAME \
--cluster=KAFKA_CLUSTER \
--location=REGION \
--partitions=10 \
--replication-factor=3

Ersetzen Sie Folgendes:

  • KAFKA_TOPIC_NAME: Der Name des Kafka-Themas, das erstellt werden soll.
  • KAFKA_CLUSTER: Der Name des Kafka-Clusters
  • REGION: Die Region, in der Sie den Kafka-Cluster erstellt haben

Connect-Cluster erstellen

In diesem Schritt erstellen Sie einen Connect-Cluster. Das Erstellen eines Connect-Clusters kann bis zu 30 Minuten dauern.

Bevor Sie mit diesem Schritt beginnen, muss der Managed Service for Apache Kafka-Cluster vollständig erstellt sein.

Console

  1. Rufen Sie die Seite Managed Service for Apache Kafka > Connect-Cluster auf.

    Zu „Cluster verbinden“

  2. Klicken Sie auf Erstellen.

  3. Geben Sie für Name des Connect-Clusters einen String ein. Beispiel: my-connect-cluster.

  4. Wählen Sie unter Primärer Kafka-Cluster den zuvor erstellten Kafka-Cluster aus.

  5. Klicken Sie auf Erstellen.

Während der Cluster erstellt wird, ist der Clusterstatus Creating. Wenn der Cluster erstellt wurde, lautet der Status Active.

gcloud

Führen Sie den Befehl gcloud managed-kafka connect-clusters create aus, um einen Connect-Cluster zu erstellen.

gcloud managed-kafka connect-clusters create CONNECT_CLUSTER \
  --location=REGION \
  --cpu=12 \
  --memory=12GiB \
  --primary-subnet=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
  --kafka-cluster=KAFKA_CLUSTER \
  --async

Ersetzen Sie Folgendes:

  • CONNECT_CLUSTER: ein Name für den Connect-Cluster
  • REGION: Die Region, in der Sie den Kafka-Cluster erstellt haben
  • PROJECT_ID: Ihre Projekt-ID.
  • SUBNET_NAME: Das Subnetz, in dem Sie den Kafka-Cluster erstellt haben.
  • KAFKA_CLUSTER: der Name Ihres Kafka-Clusters

Der Befehl wird asynchron ausgeführt und gibt eine Vorgangs-ID zurück:

Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.

Verwenden Sie den Befehl gcloud managed-kafka operations describe, um den Fortschritt des Erstellungsvorgangs zu verfolgen:

gcloud managed-kafka operations describe OPERATION_ID \
  --location=REGION

Weitere Informationen finden Sie unter Vorgang zum Erstellen von Clustern überwachen.

IAM-Rollen zuweisen

Weisen Sie dem Managed Kafka-Dienstkonto die folgenden IAM-Rollen (Identity and Access Management) zu:

  • Pub/Sub-Abonnent
  • Pub/Sub-Betrachter

Mit diesen Rollen können Connectors Nachrichten aus Pub/Sub lesen.

Console

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

    IAM aufrufen

  2. Wählen Sie Von Google bereitgestellte Rollenzuweisungen einschließen aus.

  3. Suchen Sie die Zeile für Managed Kafka Service Account (Verwaltetes Kafka-Dienstkonto) und klicken Sie auf Edit principal (Hauptkonto bearbeiten).

  4. Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie die Rolle Pub/Sub-Abonnent aus. Wiederholen Sie diesen Schritt für die Rolle Pub/Sub Viewer.

  5. Klicken Sie auf Speichern.

Weitere Informationen zum Zuweisen von Rollen finden Sie unter IAM-Rolle über die Console zuweisen.

gcloud

Führen Sie den Befehl gcloud projects add-iam-policy-binding aus, um dem Dienstkonto IAM-Rollen zuzuweisen.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
    --role=roles/pubsub.subscriber

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
    --role=roles/pubsub.viewer

Ersetzen Sie Folgendes:

  • PROJECT_ID: Ihre Projekt-ID.
  • PROJECT_NUMBER: Ihre Projektnummer

Ihre Projektnummer finden Sie mit dem Befehl gcloud projects describe.

Pub/Sub-Quell-Connector erstellen

In diesem Schritt erstellen Sie einen Pub/Sub-Quell-Connector. Dieser Connector liest Nachrichten aus Pub/Sub und schreibt sie in ein Kafka-Thema.

Console

  1. Rufen Sie die Seite Managed Service for Apache Kafka > Connect-Cluster auf.

    Zu „Cluster verbinden“

  2. Klicken Sie auf den Namen des Connect-Clusters.

  3. Klicken Sie auf  Connector erstellen.

  4. Geben Sie für Connector-Name einen String ein. Beispiel: pubsub-source.

  5. Wählen Sie in der Liste Connector-Plug-in die Option Pub/Sub Source aus.

  6. Wählen Sie für Cloud Pub/Sub-Abo das Standard-Pub/Sub aus, das beim Erstellen des Pub/Sub-Themas erstellt wurde.

  7. Wählen Sie für Kafka-Thema das Kafka-Thema aus, das Sie zuvor erstellt haben.

  8. Klicken Sie auf Erstellen.

gcloud

Führen Sie den Befehl gcloud managed-kafka connectors create aus, um einen Pub/Sub-Quell-Connector zu erstellen.

gcloud managed-kafka connectors create PUBSUB_CONNECTOR_NAME \
  --connect-cluster=CONNECT_CLUSTER \
  --location=REGION \
  --configs=connector.class=com.google.pubsub.kafka.source.CloudPubSubSourceConnector,\
cps.project=PROJECT_ID,\
cps.streamingPull.enabled=true,\
cps.subscription=SUBSCRIPTION_ID,\
kafka.topic=KAFKA_TOPIC_NAME,\
key.converter=org.apache.kafka.connect.storage.StringConverter,\
tasks.max=3,\
value.converter=org.apache.kafka.connect.converters.ByteArrayConverter

Ersetzen Sie Folgendes:

  • PUBSUB_CONNECTOR_NAME: ein Name für den Connector, z. B. pubsub-source-connector
  • CONNECT_CLUSTER: der Name Ihres Connect-Clusters
  • REGION: die Region, in der Sie den Connect-Cluster erstellt haben
  • PROJECT_ID: Ihre Projekt-ID.
  • KAFKA_TOPIC_NAME: Der Name Ihres Kafka-Themas
  • SUBSCRIPTION_ID: der Name Ihres Pub/Sub-Abos

Ergebnisse ansehen

Um die Ergebnisse zu sehen, veröffentlichen Sie einige Nachrichten in Pub/Sub.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Pub/Sub > Themen auf.

    Themen aufrufen

  2. Klicken Sie in der Themenliste auf den Namen Ihres Pub/Sub-Themas.

  3. Klicken Sie auf Nachrichten.

  4. Klicken Sie auf Mitteilungen veröffentlichen.

  5. Geben Sie für Anzahl der Nachrichten den Wert 10 ein.

  6. Geben Sie als Inhalt der Nachricht {"name": "Alice", "customer_id": 1} ein.

  7. Klicken Sie auf Veröffentlichen.

gcloud

Verwenden Sie den Befehl gcloud pubsub topics publish, um Nachrichten in Ihrem Pub/Sub-Thema zu veröffentlichen.

for run in {1..10}; do
  gcloud pubsub topics publish TOPIC_ID --message='{"name": "Alice", "customer_id": 1}'
done

Ersetzen Sie TOPIC_ID durch den Namen Ihres Pub/Sub-Themas.

Sie können die Nachrichten jetzt aus dem Kafka-Thema abrufen. Weitere Informationen finden Sie unter Nachrichten mit der CLI erstellen und nutzen.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Console

  1. Löschen Sie das Pub/Sub-Thema.

    1. Rufen Sie die Seite Pub/Sub > Themen auf.

      Themen aufrufen

    2. Wählen Sie das Thema aus und klicken Sie auf Löschen.

  2. Löschen Sie das Pub/Sub-Abo.

    1. Rufen Sie die Seite Pub/Sub > Abos auf.

      Zu den Abos

    2. Wählen Sie das mit Ihrem Thema erstellte Abo aus und klicken Sie auf Löschen.

  3. Löschen Sie den Connect-Cluster.

    1. Rufen Sie die Seite Managed Service for Apache Kafka > Connect-Cluster auf.

      Zu „Cluster verbinden“

    2. Wählen Sie den Connect-Cluster aus und klicken Sie auf Löschen.

  4. Löschen Sie den Kafka-Cluster.

    1. Rufen Sie die Seite Managed Service for Apache Kafka > Cluster auf.

      Zu den Clustern

    2. Wählen Sie den Kafka-Cluster aus und klicken Sie auf Löschen.

gcloud

  1. Verwenden Sie die Befehle gcloud pubsub subscriptions delete und gcloud pubsub topics delete, um das Pub/Sub-Abo und -Thema zu löschen.

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    gcloud pubsub topics delete TOPIC_ID
    
  2. Verwenden Sie den Befehl gcloud managed-kafka connect-clusters delete, um den Connect-Cluster zu löschen.

    gcloud managed-kafka connect-clusters delete CONNECT_CLUSTER \
      --location=REGION --async
    
  3. Verwenden Sie den Befehl gcloud managed-kafka clusters delete, um den Kafka-Cluster zu löschen.

    gcloud managed-kafka clusters delete KAFKA_CLUSTER \
      --location=REGION --async
    

Nächste Schritte