Utiliser le proxy Cassandra pour se connecter à Spanner Omni

Connectez le proxy Apache Cassandra à Spanner Omni pour permettre à vos applications Cassandra existantes d'interagir avec Spanner Omni à l'aide du langage de requête Cassandra (CQL). Cette intégration vous permet d'utiliser les fonctionnalités Spanner Omni tout en conservant la compatibilité avec vos applications clientes Cassandra.

Pour connecter le proxy, suivez ces étapes générales :

  1. Clonez le dépôt du proxy Cassandra vers Spanner.

  2. Convertissez vos définitions de schéma Cassandra au format Spanner Omni à l'aide du script de conversion de schéma fourni, qui est compatible avec les modes de sécurité en texte brut, TLS et mTLS.

  3. Configurez l'adaptateur de proxy en mettant à jour son fichier de configuration avec le point de terminaison Spanner Omni et les paramètres de sécurité.

  4. Créez et exécutez le proxy. Connectez-vous ensuite à celui-ci à l'aide de cqlsh pour commencer les opérations.

Pour en savoir plus, consultez Interface Cassandra dans la documentation Spanner.

Avant de commencer

Avant de commencer, assurez-vous de remplir les conditions suivantes :

  • Configurer un déploiement Spanner Omni et créer une base de données

  • Activez les sessions multiplexées dans votre environnement en définissant les variables d'environnement requises.

  • Assurez-vous que Go est installé sur votre ordinateur local.

  • Pour connaître les remarques concernant l'utilisation, consultez les limites du proxy Cassandra vers Spanner.

  • Définissez le mode de sécurité (texte brut, TLS ou mTLS) que vous souhaitez utiliser pour la communication entre le proxy et Spanner Omni.

Définir des variables d'environnement

Pour utiliser le proxy Cassandra, vous devez activer les sessions multiplexées en définissant les variables d'environnement requises. Les sessions multiplexées sont requises pour les connexions Spanner Omni, mais sont désactivées par défaut dans les bibliothèques et pilotes clients Spanner.

Définissez les variables d'environnement suivantes :

GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS=true

Cloner le dépôt

Clonez le dépôt compatible avec le proxy et assurez-vous que Go est installé sur votre machine :

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

// Ensure all Go modules are installed
go mod tidy

Convertir le schéma Cassandra

Créez toutes les tables Cassandra à l'avance. Le script schema_converter/cql_to_spanner_schema_converter.go convertit les requêtes Cassandra CREATE TABLE d'un fichier CQL en requêtes Spanner CREATE TABLE.

  • --database DATABASE_ID : spécifiez le nom de la base de données cible dans Spanner Omni. Remplacez DATABASE_ID par le nom de votre base de données.

  • --cql PATH_TO_CQL_FILE : spécifiez le chemin d'accès au fichier CQL contenant la définition du schéma Cassandra.

  • --endpoint ENDPOINT : spécifiez l'adresse du point de terminaison Spanner Omni. Remplacez ENDPOINT par votre point de terminaison Spanner Omni.

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

    Le convertisseur de schéma est compatible avec les trois modes de sécurité Spanner Omni : texte brut, TLS et mTLS. Chaque mode de sécurité nécessite des paramètres supplémentaires :

  • Pour le mode texte brut, utilisez l'indicateur --usePlainText :

    go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINT --usePlainText
    
  • Pour le mode TLS, utilisez l'option --caCertificate avec le chemin d'accès au fichier de certificat 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
    
  • Pour le mode mTLS, utilisez les options --caCertificate, --clientCertificate et --clientKey avec les chemins d'accès correspondants :

    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
    

    Le script crée également une table TableConfigurations si elle n'existe pas déjà. Cette table suit les métadonnées de schéma de vos tables et colonnes 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);
    

Configurer l'adaptateur de proxy

Après avoir créé des tables Cassandra à l'aide du script de conversion de schéma, configurez l'adaptateur pour effectuer des opérations sur vos tables. Pour configurer l'adaptateur, procédez comme suit :

Mettez à jour le fichier config.yaml dans le répertoire racine du dépôt avec les options de configuration disponibles. Le fichier de configuration de l'adaptateur vous demande de définir le point de terminaison Spanner Omni, ainsi que les options de mode de sécurité appropriées.

# [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 configuration suivante fournit la configuration minimale pour exécuter l'adaptateur :

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

Créer et exécuter le proxy

Après avoir configuré l'adaptateur de proxy, créez et exécutez le proxy à l'aide des commandes suivantes :

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

Connectez-vous au proxy à l'aide du shell avec la commande suivante :

./cqlsh localhost 9042