Menggunakan proxy Cassandra untuk terhubung ke Spanner Omni

Hubungkan proxy Apache Cassandra ke Spanner Omni agar aplikasi Cassandra yang ada dapat berinteraksi dengan Spanner Omni menggunakan Cassandra Query Language (CQL). Integrasi ini memungkinkan Anda menggunakan kemampuan Spanner Omni sekaligus mempertahankan kompatibilitas dengan aplikasi klien Cassandra Anda.

Untuk menghubungkan proxy, ikuti langkah-langkah umum berikut:

  1. Buat clone repositori proxy Cassandra-to-Spanner.

  2. Konversi definisi skema Cassandra Anda ke skema Spanner Omni menggunakan skrip pengonversi skema yang disediakan, yang mendukung mode keamanan TLS, mTLS, dan teks biasa.

  3. Konfigurasi adaptor proxy dengan memperbarui file konfigurasinya menggunakan endpoint Spanner Omni dan setelan keamanan.

  4. Bangun dan jalankan proxy. Kemudian, hubungkan ke instance menggunakan cqlsh untuk memulai operasi.

Untuk mengetahui informasi selengkapnya, lihat Antarmuka Cassandra di dokumentasi Spanner.

Sebelum memulai

Sebelum Anda memulai, selesaikan persyaratan berikut:

  • Konfigurasi deployment Spanner Omni dan buat database.

  • Aktifkan sesi yang di-multiplex dalam lingkungan Anda dengan menyetel variabel lingkungan yang diperlukan.

  • Pastikan Go diinstal di komputer lokal Anda.

  • Baca batasan proxy Cassandra-ke-Spanner untuk mengetahui pertimbangan penggunaan.

  • Tentukan mode keamanan (teks biasa, TLS, atau mTLS) yang ingin Anda gunakan untuk komunikasi antara proxy dan Spanner Omni.

Menetapkan variabel lingkungan

Untuk menggunakan proxy Cassandra, Anda harus mengaktifkan sesi yang di-multiplex dengan menetapkan variabel lingkungan yang diperlukan. Sesi yang di-multiplex diperlukan untuk koneksi Spanner Omni, tetapi dinonaktifkan secara default di library dan driver klien Spanner.

Tetapkan variabel lingkungan berikut:

GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS=true

Membuat cloning repositori

Buat clone repositori yang mendukung proxy dan pastikan Go diinstal di komputer Anda:

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

// Ensure all Go modules are installed
go mod tidy

Mengonversi skema Cassandra

Buat semua tabel Cassandra terlebih dahulu. Skrip schema_converter/cql_to_spanner_schema_converter.go mengonversi kueri CREATE TABLE Cassandra dari file CQL menjadi kueri CREATE TABLE Spanner.

  • --database DATABASE_ID: Tentukan nama database target di Spanner Omni. Ganti DATABASE_ID dengan nama database Anda.

  • --cql PATH_TO_CQL_FILE: Tentukan jalur ke file CQL yang berisi definisi skema Cassandra.

  • --endpoint ENDPOINT: Tentukan alamat endpoint Spanner Omni. Ganti ENDPOINT dengan endpoint Spanner Omni Anda.

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

    Pengonversi skema mendukung ketiga mode keamanan Spanner Omni: teks biasa, TLS, dan mTLS. Setiap mode keamanan memerlukan parameter tambahan:

  • Untuk mode teks biasa, gunakan tanda --usePlainText:

    go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINT --usePlainText
    
  • Untuk mode TLS, gunakan tanda --caCertificate dengan jalur ke file sertifikat 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
    
  • Untuk mode mTLS, gunakan flag --caCertificate, --clientCertificate, dan --clientKey dengan jalur yang sesuai:

    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
    

    Skrip juga membuat tabel TableConfigurations jika belum ada. Tabel ini melacak metadata skema tabel dan kolom Cassandra Anda:

    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);
    

Mengonfigurasi adaptor proxy

Setelah membuat tabel Cassandra menggunakan skrip pengonversi skema, konfigurasi adaptor untuk melakukan operasi pada tabel Anda. Untuk menyiapkan adaptor, lakukan hal berikut:

Perbarui file config.yaml di direktori root repositori dengan opsi konfigurasi yang tersedia. File konfigurasi adaptor mengharuskan Anda menentukan endpoint Spanner Omni, beserta opsi mode keamanan yang relevan.

# [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

Penyiapan konfigurasi berikut memberikan konfigurasi minimum untuk menjalankan adaptor:

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

Membangun dan menjalankan proxy

Setelah mengonfigurasi adaptor proxy, bangun dan jalankan proxy menggunakan perintah berikut:

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

Hubungkan ke proxy menggunakan shell dengan perintah berikut:

./cqlsh localhost 9042