Usa el proxy de Cassandra para conectarte a Spanner Omni

Conecta el proxy de Apache Cassandra a Spanner Omni para permitir que tus aplicaciones de Cassandra existentes interactúen con Spanner Omni mediante el lenguaje de consulta de Cassandra (CQL). Esta integración te permite usar las capacidades de Spanner Omni y, al mismo tiempo, mantener la compatibilidad con tus aplicaciones cliente de Cassandra.

Para conectar el proxy, sigue estos pasos generales:

  1. Clona el repositorio del proxy de Cassandra a Spanner.

  2. Convierte tus definiciones de esquema de Cassandra al esquema de Spanner Omni con la secuencia de comandos del convertidor de esquemas proporcionada, que admite modos de seguridad de texto sin formato, TLS y mTLS.

  3. Configura el adaptador de proxy. Para ello, actualiza su archivo de configuración con el extremo y la configuración de seguridad de Spanner Omni.

  4. Compila y ejecuta el proxy. Luego, conéctate a él con cqlsh para comenzar las operaciones.

Para obtener más información, consulta la interfaz de Cassandra en la documentación de Spanner.

Antes de comenzar

Antes de comenzar, completa los siguientes requisitos:

  • Configura una implementación de Spanner Omni y crea una base de datos.

  • Habilita las sesiones multiplexadas en tu entorno. Para ello, configura las variables de entorno necesarias.

  • Asegúrate de que Go esté instalado en tu máquina local.

  • Lee las limitaciones del proxy de Cassandra a Spanner para conocer las consideraciones de uso.

  • Establece el modo de seguridad (texto sin formato, TLS o mTLS) que deseas usar para la comunicación entre el proxy y Spanner Omni.

Configura las variables de entorno

Para usar el proxy de Cassandra, debes habilitar las sesiones multiplexadas. Para ello, configura las variables de entorno necesarias. Las sesiones multiplexadas son necesarias para las conexiones de Spanner Omni, pero están inhabilitadas de forma predeterminada en las bibliotecas cliente y los controladores de Spanner.

Configura las siguientes variables de entorno:

GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS=true

Clona el repositorio

Clona el repositorio que admite el proxy y asegúrate de que Go esté instalado en tu máquina:

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

// Ensure all Go modules are installed
go mod tidy

Convierte el esquema de Cassandra

Crea todas las tablas de Cassandra con anticipación. La secuencia de comandos schema_converter/cql_to_spanner_schema_converter.go convierte las consultas CREATE TABLE de Cassandra de un archivo CQL en consultas CREATE TABLE de Spanner.

  • --database DATABASE_ID: Especifica el nombre de la base de datos de destino en Spanner Omni. Reemplaza DATABASE_ID por el nombre de tu base de datos.

  • --cql PATH_TO_CQL_FILE: Especifica la ruta de acceso al archivo CQL que contiene la definición del esquema de Cassandra.

  • --endpoint ENDPOINT: Especifica la dirección del extremo de Spanner Omni. Reemplaza ENDPOINT por tu extremo de Spanner Omni.

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

    El convertidor de esquemas admite los tres modos de seguridad de Spanner Omni: texto sin formato, TLS y mTLS. Cada modo de seguridad requiere parámetros adicionales:

  • Para el modo de texto sin formato, usa la marca --usePlainText:

    go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINT --usePlainText
    
  • Para el modo TLS, usa la marca --caCertificate con la ruta de acceso al archivo de certificado de la AC:

    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
    
  • Para el modo mTLS, usa las marcas --caCertificate, --clientCertificate y --clientKey con las rutas de acceso correspondientes:

    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
    

    La secuencia de comandos también crea una tabla TableConfigurations si aún no está presente. Esta tabla hace un seguimiento de los metadatos del esquema de tus tablas y columnas de 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 el adaptador de proxy

Después de crear tablas de Cassandra con la secuencia de comandos del convertidor de esquemas, configura el adaptador para realizar operaciones en tus tablas. Para configurar el adaptador, haz lo siguiente:

Actualiza el archivo config.yaml en el directorio raíz del repositorio con las opciones de configuración disponibles. El archivo de configuración del adaptador requiere que definas el extremo de Spanner Omni, junto con las opciones del modo de seguridad pertinentes.

# [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 siguiente configuración proporciona la configuración mínima para ejecutar el 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

Compila y ejecuta el proxy

Después de configurar el adaptador de proxy, compila y ejecuta el proxy con los siguientes comandos:

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

Conéctate al proxy con el shell con el siguiente comando:

./cqlsh localhost 9042