Collega il proxy Apache Cassandra a Spanner Omni per consentire alle 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 applicazioni client Cassandra.
Per connettere il proxy, segui questi passaggi di alto livello:
Converti le definizioni dello schema Cassandra nello schema Spanner Omni utilizzando lo script di conversione dello schema fornito, che supporta le modalità di sicurezza in testo normale, TLS e mTLS.
Configura l'adattatore proxy aggiornando il file di configurazione con l'endpoint e le impostazioni di sicurezza di Spanner Omni.
Crea ed esegui il proxy. Poi, connettiti utilizzando
cqlshper iniziare le operazioni.
Per saperne di più, consulta l' interfaccia Cassandra nella documentazione di Spanner.
Prima di iniziare
Prima di iniziare, completa i seguenti requisiti:
Configura un deployment di Spanner Omni e crea un database.
Abilita le sessioni multiplexate nel 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 le considerazioni sull'utilizzo.
Stabilisci la modalità di sicurezza (testo normale, 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 multiplexate impostando le variabili di ambiente richieste. Le sessioni multiplexate sono richieste per le connessioni Spanner Omni, ma sono disabilitate per impostazione predefinita nelle librerie client e nei driver di 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
Converti lo schema Cassandra
Crea in anticipo tutte le tabelle Cassandra. Lo script schema_converter/cql_to_spanner_schema_converter.go converte le query CREATE TABLE di Cassandra da un file CQL in query CREATE TABLE di Spanner.
--database DATABASE_ID: specifica il nome del database di destinazione in Spanner Omni. SostituisciDATABASE_IDcon il nome del 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 di Spanner Omni. SostituisciENDPOINTcon l'endpoint di Spanner Omni.go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINTIl convertitore di schema supporta tutte e tre le modalità di sicurezza di Spanner Omni: testo normale, TLS e mTLS. Ogni modalità di sicurezza richiede parametri aggiuntivi:
Per la modalità in 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 --usePlainTextPer la modalità TLS, utilizza il flag
--caCertificatecon 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_CRTPer la modalità mTLS, utilizza i flag
--caCertificate,--clientCertificatee--clientKeycon 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_KEYLo script crea anche una tabella
TableConfigurationsse non è già presente. Questa tabella tiene traccia dei metadati dello schema delle tabelle e delle colonne di 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 del convertitore di schema, configura l'adattatore per eseguire operazioni sulle tabelle. Per configurare l'adattatore:
Aggiorna il file config.yaml nella directory principale del repository con le opzioni di configurazione disponibili. Il file di configurazione dell'adattatore richiede di definire l'endpoint di 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, crea 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