Conecte o proxy do Apache Cassandra ao Spanner Omni para permitir que seus aplicativos Cassandra interajam com o Spanner Omni usando a linguagem de consulta do Cassandra (CQL). Essa integração permite usar os recursos do Spanner Omni, mantendo a compatibilidade com os aplicativos cliente do Cassandra.
Para conectar o proxy, siga estas etapas gerais:
Converta as definições de esquema do Cassandra para o esquema do Spanner Omni usando o script de conversor de esquema fornecido, que oferece suporte aos modos de segurança de texto simples, TLS e mTLS.
Configure o adaptador de proxy atualizando o arquivo de configuração com o endpoint e as configurações de segurança do Spanner Omni.
Crie e execute o proxy. Em seguida, conecte-se a ele usando
cqlshpara iniciar as operações.
Para mais informações, consulte a interface do Cassandra na documentação do Spanner.
Antes de começar
Antes de começar, atenda aos seguintes requisitos:
Configure uma implantação do Spanner Omni e crie um banco de dados.
Ative sessões multiplexadas no seu ambiente definindo as variáveis de ambiente necessárias .
Verifique se o Go está instalado na sua máquina local.
Leia as limitações do proxy do Cassandra para o Spanner para considerações de uso.
Estabeleça o modo de segurança (texto simples, TLS ou mTLS) que você quer usar para a comunicação entre o proxy e o Spanner Omni.
Defina as variáveis de ambiente
Para usar o proxy do Cassandra, é necessário ativar sessões multiplexadas definindo as variáveis de ambiente necessárias. As sessões multiplexadas são necessárias para conexões do Spanner Omni, mas ficam desativadas por padrão nas bibliotecas de cliente e nos drivers do Spanner.
Configure as variáveis de ambiente a seguir:
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS=true
Clonar o repositório
Clone o repositório que oferece suporte ao proxy e verifique se o Go está instalado na sua máquina:
git clone https://github.com/cloudspannerecosystem/cassandra-to-spanner-proxy.git
// Ensure all Go modules are installed
go mod tidy
Converter o esquema do Cassandra
Crie todas as tabelas do Cassandra com antecedência. O script schema_converter/cql_to_spanner_schema_converter.go converte consultas CREATE TABLE do Cassandra de um arquivo CQL em consultas CREATE TABLE do Spanner.
--database DATABASE_ID: especifique o nome do banco de dados de destino no Spanner Omni. SubstituaDATABASE_IDpelo nome do banco de dados.--cql PATH_TO_CQL_FILE: especifique o caminho para o arquivo CQL que contém a definição do esquema do Cassandra.--endpoint ENDPOINT: especifique o endereço do endpoint do Spanner Omni. SubstituaENDPOINTpelo endpoint do Spanner Omni.go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINTO conversor de esquema oferece suporte a todos os três modos de segurança do Spanner Omni: texto simples, TLS e mTLS. Cada modo de segurança exige parâmetros adicionais:
Para o modo de texto simples, use a flag
--usePlainText:go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINT --usePlainTextPara o modo TLS, use a flag
--caCertificatecom o caminho para o arquivo de certificado de 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_CRTPara o modo mTLS, use as flags
--caCertificate,--clientCertificatee--clientKeycom os caminhos correspondentes: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_KEYO script também cria uma tabela
TableConfigurationsse ela ainda não estiver presente. Essa tabela acompanha os metadados de esquema das tabelas e colunas do 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);
Configurar o adaptador de proxy
Depois de criar tabelas do Cassandra usando o script do conversor de esquema, configure o adaptador para realizar operações nas tabelas. Para configurar o adaptador, faça o seguinte:
Atualize o arquivo config.yaml no diretório raiz do repositório com as opções de configuração disponíveis. O arquivo de configuração do adaptador exige que você defina o endpoint do Spanner Omni, além das opções de modo de segurança relevantes.
# [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
A configuração a seguir fornece a configuração mínima para executar o adaptador:
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
Crie e execute o proxy
Depois de configurar o adaptador de proxy, crie e execute o proxy usando os comandos a seguir:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o cassandra-to-spanner-proxy .
./cassandra-to-spanner-proxy
Conecte-se ao proxy usando o shell com o seguinte comando:
./cqlsh localhost 9042