Utilizza Debezium per connetterti a Spanner Omni

Debezium è una piattaforma distribuita open source per Change Data Capture (CDC). Il connettore Debezium per Spanner acquisce le modifiche a livello di riga dagli stream di modifiche in tempo reale di Spanner e le trasmette agli argomenti Apache Kafka.

Il connettore Debezium funziona con Spanner Omni nello stesso modo in cui funziona con Spanner. Questo documento mostra come configurare il connettore Debezium per connettersi a Spanner Omni.

Le connessioni Spanner Omni Debezium supportano tre configurazioni di sicurezza: testo non crittografato, TLS e mutual TLS (mTLS).

Prima di iniziare

Per utilizzare il connettore Debezium con Spanner Omni, assicurati di soddisfare i seguenti prerequisiti:

Configura il connettore Debezium

Per connettere il connettore Debezium a Spanner Omni, specifica le seguenti proprietà nella configurazione del connettore Kafka Connect:

  • connector.class: impostato su io.debezium.connector.spanner.SpannerConnector.
  • spanner.type: impostato su OMNI. Se impostato su OMNI, gcp.spanner.project.id e gcp.spanner.instance.id vengono impostati automaticamente su default e non sono richiesti nella configurazione.
  • gcp.spanner.host: l'endpoint Spanner Omni, ad esempio, http://localhost:15000 per testo normale o https://localhost:15000 per TLS e mTLS.
  • gcp.spanner.database.id: l'ID del database Spanner Omni.
  • gcp.spanner.change-stream.name: il nome dello stream di modifiche da acquisire.
  • spanner.omni.use.plaintext: (Facoltativo) Imposta su true per stabilire una connessione in testo normale.
  • spanner.omni.client.cert.path: (Facoltativo) Il percorso del file del certificato client per le connessioni mTLS.
  • spanner.omni.client.key.path: (Facoltativo) Il percorso del file della chiave privata del client in formato PKCS#8 per le connessioni mTLS.

Stabilire una connessione

Gli esempi seguenti mostrano come configurare il connettore Debezium per ogni configurazione di sicurezza supportata:

Testo normale

Per stabilire una connessione di testo normale, imposta spanner.type su OMNI, specifica l'endpoint con http:// e imposta spanner.omni.use.plaintext su true:

{
  "name": "CONNECTOR_NAME",
  "config": {
    "connector.class": "io.debezium.connector.spanner.SpannerConnector",
    "tasks.max": "1",
    "spanner.type": "OMNI",
    "gcp.spanner.host": "http://ENDPOINT",
    "gcp.spanner.database.id": "DATABASE_ID",
    "gcp.spanner.change-stream.name": "CHANGE_STREAM_NAME",
    "spanner.omni.use.plaintext": "true"
  }
}

Sostituisci quanto segue:

  • CONNECTOR_NAME: il nome dell'istanza del connettore Debezium, ad esempio spanner-omni-connector.

  • ENDPOINT: l'endpoint dell'istanza Spanner Omni, ad esempio localhost:15000.

  • DATABASE_ID: l'ID del tuo database Spanner Omni, ad esempio test-db.

  • CHANGE_STREAM_NAME: il nome dello stream di modifiche nel tuo database, ad esempio my_change_stream.

TLS

Per stabilire una connessione TLS, aggiungi il certificato CA Spanner Omni al truststore Java come descritto in Configurare il truststore Java. Imposta spanner.type su OMNI e specifica l'endpoint utilizzando https://:

{
  "name": "CONNECTOR_NAME",
  "config": {
    "connector.class": "io.debezium.connector.spanner.SpannerConnector",
    "tasks.max": "1",
    "spanner.type": "OMNI",
    "gcp.spanner.host": "https://ENDPOINT",
    "gcp.spanner.database.id": "DATABASE_ID",
    "gcp.spanner.change-stream.name": "CHANGE_STREAM_NAME"
  }
}

Sostituisci quanto segue:

  • CONNECTOR_NAME: il nome dell'istanza del connettore Debezium, ad esempio spanner-omni-connector.

  • ENDPOINT: l'endpoint dell'istanza Spanner Omni, ad esempio localhost:15000.

  • DATABASE_ID: l'ID del tuo database Spanner Omni, ad esempio test-db.

  • CHANGE_STREAM_NAME: il nome dello stream di modifiche nel tuo database, ad esempio my_change_stream.

mTLS

Per stabilire una connessione mTLS, aggiungi il certificato CA Spanner Omni all'archivio attendibilità Java come descritto in Configurare l'archivio attendibilità Java. Imposta spanner.type su OMNI, specifica l'endpoint utilizzando https:// e specifica i percorsi del certificato client e della chiave privata del client. La chiave privata del client deve essere in un formato PKCS#8 compatibile con Java, come descritto nelle istruzioni mTLS dell'SDK Java:

{
  "name": "CONNECTOR_NAME",
  "config": {
    "connector.class": "io.debezium.connector.spanner.SpannerConnector",
    "tasks.max": "1",
    "spanner.type": "OMNI",
    "gcp.spanner.host": "https://ENDPOINT",
    "gcp.spanner.database.id": "DATABASE_ID",
    "gcp.spanner.change-stream.name": "CHANGE_STREAM_NAME",
    "spanner.omni.client.cert.path": "PATH_TO_CLIENT_CERT",
    "spanner.omni.client.key.path": "PATH_TO_CLIENT_KEY"
  }
}

Sostituisci quanto segue:

  • CONNECTOR_NAME: il nome dell'istanza del connettore Debezium, ad esempio spanner-omni-connector.

  • ENDPOINT: l'endpoint dell'istanza Spanner Omni, ad esempio localhost:15000.

  • DATABASE_ID: l'ID del tuo database Spanner Omni, ad esempio test-db.

  • CHANGE_STREAM_NAME: il nome dello stream di modifiche nel tuo database, ad esempio my_change_stream.

  • PATH_TO_CLIENT_CERT: il percorso del file del certificato client.

  • PATH_TO_CLIENT_KEY: il percorso del file della chiave privata del client in formato PKCS#8.

Passaggi successivi