Utilizzare il proxy Cassandra per connettersi a Spanner Omni

Connetti il proxy Apache Cassandra a Spanner Omni per consentire alle tue applicazioni Cassandra esistenti di interagire con Spanner Omni utilizzando Cassandra Query Language (CQL). Questa integrazione ti consente di utilizzare le funzionalità di Spanner Omni mantenendo la compatibilità con le tue applicazioni client Cassandra.

Per connettere il proxy, segui questi passaggi di alto livello:

  1. Clona il repository del proxy Cassandra-to-Spanner.

  2. Converti le definizioni dello schema Cassandra nello schema Spanner Omni utilizzando lo script di conversione dello schema fornito, che supporta le modalità di sicurezza TLS, mTLS e di testo normale.

  3. Configura l'adattatore proxy aggiornando il relativo file di configurazione con l'endpoint Spanner Omni e le impostazioni di sicurezza.

  4. Crea ed esegui il proxy. Quindi, connettiti utilizzando cqlsh per iniziare le operazioni.

Per saperne di più, consulta Interfaccia Cassandra nella documentazione di Spanner.

Prima di iniziare

Prima di iniziare, completa i seguenti requisiti:

  • Configura un deployment Spanner Omni e crea un database.

  • Attiva le sessioni multiplexate all'interno del tuo ambiente impostando le variabili di ambiente richieste.

  • Assicurati che Go sia installato sulla tua macchina locale.

  • Leggi le limitazioni del proxy da Cassandra a Spanner per considerazioni sull'utilizzo.

  • Stabilisci la modalità di sicurezza (testo non crittografato, TLS o mTLS) che vuoi utilizzare per la comunicazione tra il proxy e Spanner Omni.

Imposta le variabili di ambiente

Per utilizzare il proxy Cassandra, devi abilitare le sessioni multiplex impostando le variabili di ambiente richieste. Le sessioni multiplex sono necessarie per le connessioni Spanner Omni, ma sono disattivate per impostazione predefinita nei driver e nelle librerie client Spanner.

Imposta le seguenti variabili di ambiente:

GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS=true

Clona il repository

Clona il repository che supporta il proxy e assicurati che Go sia installato sulla tua macchina:

git clone https://github.com/cloudspannerecosystem/cassandra-to-spanner-proxy.git

// Ensure all Go modules are installed
go mod tidy

Convertire lo schema Cassandra

Crea in anticipo tutte le tabelle Cassandra. Lo script schema_converter/cql_to_spanner_schema_converter.go converte le query Cassandra CREATE TABLE da un file CQL in query Spanner CREATE TABLE.

  • --database DATABASE_ID: specifica il nome del database di destinazione in Spanner Omni. Sostituisci DATABASE_ID con il nome del tuo database.

  • --cql PATH_TO_CQL_FILE: specifica il percorso del file CQL che contiene la definizione dello schema Cassandra.

  • --endpoint ENDPOINT: specifica l'indirizzo dell'endpoint Spanner Omni. Sostituisci ENDPOINT con l'endpoint Spanner Omni.

    go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINT
    

    Il convertitore di schema supporta tutte e tre le modalità di sicurezza Spanner Omni: testo non crittografato, TLS e mTLS. Ogni modalità di sicurezza richiede parametri aggiuntivi:

  • Per la modalità di testo normale, utilizza il flag --usePlainText:

    go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINT --usePlainText
    
  • Per la modalità TLS, utilizza il flag --caCertificate con il percorso del file del certificato CA:

    go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINT --caCertificate PATH_TO_CA_CRT
    
  • Per la modalità mTLS, utilizza i flag --caCertificate, --clientCertificate e --clientKey con i percorsi corrispondenti:

    go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINT --caCertificate PATH_TO_CA_CRT --clientCertificate PATH_TO_CLIENT_CERT --clientKey PATH_TO_CLIENT_KEY
    

    Lo script crea anche una tabella TableConfigurations se non è già presente. Questa tabella monitora i metadati dello schema delle tabelle e delle colonne Cassandra:

    CREATE TABLE IF NOT EXISTS TableConfigurations (
        `KeySpaceName` STRING(MAX),
        `TableName` STRING(MAX),
        `ColumnName` STRING(MAX),
        `ColumnType` STRING(MAX),
        `IsPrimaryKey` BOOL,
        `PK_Precedence` INT64,
    ) PRIMARY KEY (TableName, ColumnName, KeySpaceName);
    

Configura l'adattatore proxy

Dopo aver creato le tabelle Cassandra utilizzando lo script di conversione dello schema, configura l'adattatore per eseguire operazioni sulle tabelle. Per configurare l'adattatore:

Aggiorna il file config.yaml nella directory radice del repository con le opzioni di configurazione disponibili. Il file di configurazione dell'adattatore richiede di definire l'endpoint Spanner Omni, insieme alle opzioni della modalità di sicurezza pertinenti.

# [Optional] endpoint configuration for spanner
endpoint: ENDPOINT

# [Optional] If set to True, will connect to endpoint over plain text
usePlainText: False

# [Optional] CA certificate path for TLS and mTLS configuration
caCertificate: PATH_TO_CA_CRT

# [Optional] client certificate path for mTLS configuration
clientCertificate: PATH_TO_CLIENT_CERT

# [Optional] client key path for mTLS configuration
clientKey: PATH_TO_CLIENT_KEY

La seguente configurazione fornisce la configurazione minima per eseguire l'adattatore:

cassandra_to_spanner_configs:
  # [Optional] endpoint configuration for spanner
  endpoint: ENDPOINT

  # Uncomment the options as required by the security mode of the Spanner Omni deployment
  # [Optional] If set to True, will connect to endpoint over plain text
  # usePlainText: False
  # [Optional] CA certificate path for TLS and mTLS configuration
  # caCertificate: /tmp/ca.crt
  # [Optional] client certificate path for mTLS configuration
  # clientCertificate: /tmp/client.crt
  # [Optional] client key path for mTLS configuration
  # clientKey: /tmp/client.key

listeners:
  - name: CLUSTER_NAME
    port: 9042
    spanner:
      databaseId: DATABASE_ID

Crea ed esegui il proxy

Dopo aver configurato l'adattatore proxy, compila ed esegui il proxy utilizzando i seguenti comandi:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o cassandra-to-spanner-proxy .
./cassandra-to-spanner-proxy

Connettiti al proxy utilizzando la shell con il seguente comando:

./cqlsh localhost 9042