مهاجرت از Cassandra به Bigtable با یک پروکسی Dual-Write

1. مقدمه

Bigtable یک سرویس پایگاه داده NoSQL با کارایی بالا و کاملاً مدیریت شده است که برای حجم کاری زیاد تحلیلی و عملیاتی طراحی شده است. مهاجرت از پایگاه داده های موجود مانند Apache Cassandra به Bigtable اغلب نیاز به برنامه ریزی دقیق برای به حداقل رساندن خرابی و تأثیر برنامه دارد.

این نرم افزار کد یک استراتژی انتقال از Cassandra به Bigtable را با استفاده از ترکیبی از ابزارهای پراکسی نشان می دهد:

  1. Cassandra-Bigtable Proxy: به مشتریان و ابزارهای Cassandra (مانند cqlsh یا درایورها) اجازه می دهد تا با استفاده از پروتکل Cassandra Query Language (CQL) با ترجمه پرس و جوها با Bigtable تعامل داشته باشند.
  2. پروکسی Datastax Zero Downtime Migration (ZDM): یک پروکسی منبع باز که بین برنامه شما و سرویس های پایگاه داده شما قرار می گیرد (کاساندرا اصلی و Bigtable را از طریق پراکسی Cassandra-Bigtable هدف قرار می دهد). نوشتن دوگانه را تنظیم می کند و مسیریابی ترافیک را مدیریت می کند و امکان مهاجرت را با حداقل تغییرات برنامه و خرابی فراهم می کند.
  3. Cassandra Data Migrator (CDM): ابزاری منبع باز که برای انتقال انبوه داده های تاریخی از خوشه منبع Cassandra به نمونه Bigtable مورد استفاده قرار می گیرد.

چیزی که یاد خواهید گرفت

  • نحوه راه اندازی یک کلاستر اصلی Cassandra در Compute Engine.
  • چگونه یک نمونه Bigtable ایجاد کنیم.
  • نحوه استقرار و پیکربندی پراکسی Cassandra-Bigtable برای نگاشت طرحواره Cassandra به Bigtable.
  • نحوه استقرار و پیکربندی Datastax ZDM Proxy برای نوشتن دوگانه.
  • نحوه استفاده از ابزار Cassandra Data Migrator برای انتقال انبوه داده های موجود.
  • گردش کار کلی برای مهاجرت کاساندرا به Bigtable مبتنی بر پروکسی.

آنچه شما نیاز دارید

  • یک پروژه Google Cloud با فعال کردن صورت‌حساب. کاربران جدید واجد شرایط استفاده آزمایشی رایگان هستند.
  • آشنایی اولیه با مفاهیم Google Cloud مانند پروژه ها، موتور محاسباتی، شبکه های VPC و قوانین فایروال. آشنایی اولیه با ابزارهای خط فرمان لینوکس.
  • دسترسی به ماشینی که gcloud CLI آن نصب و پیکربندی شده است یا از Google Cloud Shell استفاده کنید.

برای این کد لبه، ما در اصل از ماشین‌های مجازی (VMs) در موتور محاسباتی در همان شبکه VPC و منطقه برای ساده‌سازی شبکه استفاده خواهیم کرد. استفاده از آدرس های IP داخلی توصیه می شود.

2. محیط خود را تنظیم کنید

1. یک پروژه Google Cloud را انتخاب یا ایجاد کنید

به Google Cloud Console بروید و یک پروژه موجود را انتخاب کنید یا یک پروژه جدید ایجاد کنید. ID پروژه خود را یادداشت کنید.

2. API های مورد نیاز را فعال کنید

مطمئن شوید که Compute Engine API و Bigtable API برای پروژه شما فعال هستند.

gcloud services enable compute.googleapis.com bigtable.googleapis.com bigtableadmin.googleapis.com --project=<your-project-id>

با شناسه پروژه واقعی خود جایگزین کنید.

3. یک منطقه و منطقه را انتخاب کنید

یک منطقه و منطقه را برای منابع خود انتخاب کنید. ما از us-central1 و us-central1-c به عنوان مثال استفاده خواهیم کرد. برای راحتی، اینها را به عنوان متغیرهای محیطی تعریف کنید:

export PROJECT_ID="<your-project-id>"
export REGION="us-central1"
export ZONE="us-central1-c"

gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION
gcloud config set compute/zone $ZONE

4. قوانین فایروال را پیکربندی کنید

ما باید اجازه ارتباط بین ماشین های مجازی خود را در شبکه پیش فرض VPC در چندین پورت بدهیم:

  • پورت Cassandra/Proxies CQL: 9042
  • پورت بررسی سلامت پروکسی ZDM: 14001
  • SSH: 22

یک قانون فایروال ایجاد کنید تا ترافیک داخلی این پورت ها مجاز باشد. ما از یک برچسب cassandra-migration استفاده می کنیم تا به راحتی این قانون را در ماشین های مجازی مرتبط اعمال کنیم.

gcloud compute firewall-rules create allow-migration-internal \
--network=default \
--action=ALLOW \
--rules=tcp:22,tcp:9042,tcp:14001 \
--source-ranges=10.128.0.0/9 # Adjust if using a custom VPC/IP range \
--target-tags=cassandra-migration

3. مستقر کردن خوشه Cassandra (Origin)

برای این آزمایشگاه کد، ما یک خوشه ساده تک گره Cassandra را در Compute Engine راه اندازی می کنیم. در یک سناریوی دنیای واقعی، شما به خوشه موجود خود متصل خواهید شد.

1. یک GCE VM برای Cassandra ایجاد کنید

gcloud compute instances create cassandra-origin \
--machine-type=e2-medium \
--image-family=ubuntu-2004-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB

2. Cassandra را نصب کنید

# Install Java (Cassandra dependency)
sudo apt-get update
sudo apt-get install -y openjdk-11-jre-headless

# Add Cassandra repository
echo "deb [https://debian.cassandra.apache.org](https://debian.cassandra.apache.org) 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl [https://downloads.apache.org/cassandra/KEYS](https://downloads.apache.org/cassandra/KEYS) | sudo apt-key add -

# Install Cassandra
sudo apt-get update
sudo apt-get install -y cassandra

3. یک فضای کلید و جدول ایجاد کنید

ما از یک مثال جدول کارکنان استفاده می کنیم و یک فضای کلیدی به نام "zdmbigtable" ایجاد می کنیم.

cd ~/apache-cassandra
bin/cqlsh <your-localhost-ip? 9042  #starts the cql shell

داخل cqlsh:

-- Create keyspace (adjust replication for production)
CREATE KEYSPACE zdmbigtable WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};

-- Use the keyspace
USE zdmbigtable;

-- Create the employee table
CREATE TABLE employee (
    name text PRIMARY KEY,
    age bigint,
    code int,
    credited double,
    balance float,
    is_active boolean,
    birth_date timestamp
);

-- Exit cqlsh
EXIT;

جلسه SSH را باز بگذارید یا آدرس IP این ماشین مجازی (نام میزبان -I) را یادداشت کنید.

4. راه اندازی Bigtable (هدف)

مدت زمان 0:01

یک نمونه Bigtable ایجاد کنید. ما از zdmbigtable به عنوان شناسه نمونه استفاده خواهیم کرد.

gcloud bigtable instances create zdmbigtable \ 
--display-name="ZDM Bigtable Target" \ 
--cluster=bigtable-c1 \ 
--cluster-zone=$ZONE \ 
--cluster-num-nodes=1 # Use 1 node for dev/testing; scale as needed

خود جدول Bigtable بعداً توسط اسکریپت تنظیم پروکسی Cassandra-Bigtable ایجاد خواهد شد.

5. Cassandra-Bigtable Proxy را راه اندازی کنید

1. ماشین مجازی کامپیوتری را برای پراکسی Cassandra-Bigtable ایجاد کنید

gcloud compute instances create bigtable-proxy-vm \ 
--machine-type=e2-medium \
--image-family=ubuntu-2004-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB

SSH به bigtable-proxy-vm:

gcloud compute ssh bigtable-proxy-vm

داخل ماشین مجازی:

# Install Git and Go
sudo apt-get update
sudo apt-get install -y git golang-go

# Clone the proxy repository
# Replace with the actual repository URL if different
git clone https://github.com/GoogleCloudPlatform/cloud-bigtable-ecosystem.git
cd cassandra-to-bigtable-proxy/

# Set Go environment variables
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

2. پروکسی را پیکربندی کنید

nano config.yaml

متغیرهای زیر را به روز کنید. برای پیکربندی پیشرفته تر از این مثال ارائه شده در GitHub استفاده کنید.

#!/bin/bash
cassandraToBigtableConfigs:
  # Global default GCP Project ID
  projectId: <your-project-id>

listeners:
- name: cluster1
  port: 9042
  bigtable:
    #If you want to use multiple instances then pass the instance names by comma seperated
    #Instance name should not contain any special characters except underscore(_)
    instanceIds: zdmbigtable

    # Number of grpc channels to be used for Bigtable session.
    Session:
      grpcChannels: 4

otel:
  # Set enabled to true or false for OTEL metrics/traces/logs.
  enabled: False

  # Name of the collector service to be setup as a sidecar
  serviceName: cassandra-to-bigtable-otel-service

  healthcheck:
    # Enable the health check in this proxy application config only if the
    # "health_check" extension is added to the OTEL collector service configuration.
    #
    # Recommendation:
    # Enable the OTEL health check if you need to verify the collector's availability
    # at the start of the application. For development or testing environments, it can
    # be safely disabled to reduce complexity.

    # Enable/Disable Health Check for OTEL, Default 'False'.
    enabled: False
    # Health check endpoint for the OTEL collector service
    endpoint: localhost:13133
  metrics:
    # Collector service endpoint
    endpoint: localhost:4317

  traces:
    # Collector service endpoint
    endpoint: localhost:4317
    #Sampling ratio should be between 0 and 1. Here 0.05 means 5/100 Sampling ratio.
    samplingRatio: 1

loggerConfig:
  # Specifies the type of output, here it is set to 'file' indicating logs will be written to a file.
  # Value of `outputType` should be `file` for file type or `stdout` for standard output.
  # Default value is `stdout`.
  outputType: stdout
  # Set this only if the outputType is set to `file`.
  # The path and name of the log file where logs will be stored. For example, output.log, Required Key.
  # Default `/var/log/cassandra-to-spanner-proxy/output.log`.
  fileName: output/output.log
  # Set this only if the outputType is set to `file`.
  # The maximum size of the log file in megabytes before it is rotated. For example, 500 for 500 MB.
  maxSize: 10
  # Set this only if the outputType is set to `file`.
  # The maximum number of backup log files to keep. Once this limit is reached, the oldest log file will be deleted.
  maxBackups: 2
  # Set this only if the outputType is set to `file`.
  # The maximum age in days for a log file to be retained. Logs older than this will be deleted. Required Key.
  # Default 3 days
  maxAge: 1

  # Set this only if the outputType is set to `file`.
  # Default value is set to 'False'. Change the value to 'True', if log files are required to be compressed.
  compress: True

فایل را ذخیره کرده و ببندید (ctrl+X، سپس Y و سپس Enter در nano).

3. Cassandra-Bigtable Proxy را راه اندازی کنید

سرور پروکسی را راه اندازی کنید.

# At the root of the cassandra-to-bigtable-proxy directory
go run proxy.go

پروکسی برای اتصالات CQL ورودی شروع به کار کرده و به پورت 9042 گوش می دهد. این جلسه ترمینال را در حال اجرا نگه دارید. به آدرس IP این VM توجه کنید (نام میزبان -I)

4. ایجاد جدول از طریق CQL

cqlsh به آدرس IP Cassandra-Bigtable Proxy VM متصل کنید.

در cqlsh دستور زیر را اجرا کنید

-- Create the employee table
CREATE TABLE zdmbigtable.employee (
    name text PRIMARY KEY,
    age bigint,
    code int,
    credited double,
    balance float,
    is_active boolean,
    birth_date timestamp
);

در Google Cloud Console تأیید کنید که جدول کارمند و جدول فراداده در نمونه Bigtable شما وجود دارد.

6. ZDM Proxy را راه اندازی کنید

پروکسی ZDM حداقل به دو ماشین نیاز دارد: یک یا چند گره پراکسی که ترافیک را مدیریت می کنند و یک "Jumphost" که برای استقرار و هماهنگی از طریق Ansible استفاده می شود.

1. ماشین های مجازی موتور محاسباتی را برای پروکسی ZDM ایجاد کنید

ما به دو ماشین مجازی نیاز داریم: zdm-proxy-jumphost و zdm-proxy-node-1

# Jumphost VM 
gcloud compute instances create zdm-jumphost \
--machine-type=e2-medium \
--image-family=ubuntu-2004-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB

# Proxy Node VM 
gcloud compute instances create zdm-proxy-node-1 \
--machine-type=e2-standard-8 \
--image-family=ubuntu-2004-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB

به آدرس های IP هر دو ماشین مجازی توجه کنید.

2. جامپست را آماده کنید

SSH به zdm-jumphost

gcloud compute ssh zdm-jumphost
# Install Git and Ansible

sudo apt-get update
sudo apt-get install -y git ansible

داخل جامپست

git clone https:\/\/github.com/datastax/zdm-proxy-automation.git 

cd zdm-proxy-automation/ansible/

فایل پیکربندی اصلی vars/zdm_proxy_cluster_config.yml را ویرایش کنید:

Original_contact_points و target_contact_points را به ترتیب با آدرس های IP داخلی Cassandra VM و Cassandra-Bigtable Proxy VM خود به روز کنید. نظر احراز هویت را بگذارید زیرا ما آن را تنظیم نکرده‌ایم.

##############################
#### ORIGIN CONFIGURATION ####
##############################
## Origin credentials (leave commented if no auth)
# origin_username: ...
# origin_password: ...

## Set the following two parameters only if Origin is a self-managed, non-Astra cluster
origin_contact_points: <Your-Cassandra-VM-Internal-IP> # Replace!
origin_port: 9042

##############################
#### TARGET CONFIGURATION ####
##############################
## Target credentials (leave commented if no auth)
# target_username: ...
# target_password: ...

## Set the following two parameters only if Target is a self-managed, non-Astra cluster
target_contact_points: <Your-Bigtable-Proxy-VM-Internal-IP> # Replace!
target_port: 9042

# --- Other ZDM Proxy settings can be configured below ---
# ... (keep defaults for this codelab)

این فایل را ذخیره و ببندید.

3. پروکسی ZDM را با استفاده از Ansible مستقر کنید

Playbook Ansible را از دایرکتوری ansible در jumphost اجرا کنید:

ansible-playbook deploy_zdm_proxy.yml -i zdm_ansible_inventory

این دستور نرم افزارهای لازم (مانند Docker) را روی گره پروکسی (zdm-proxy-node-1) نصب می کند، تصویر ZDM Proxy Docker را می کشد و ظرف پراکسی را با پیکربندی که شما ارائه کرده اید راه اندازی می کند.

4. بررسی سلامت پروکسی ZDM

نقطه پایانی آمادگی پروکسی ZDM در حال اجرا در zdm-proxy-node-1 (پورت 14001) را از jumphost بررسی کنید:

# Replace <zdm-proxy-node-1-internal-ip> with the actual internal IP.
curl -G http://<zdm-proxy-node-1-internal-ip>:14001/health/readiness

شما باید خروجی مشابه این را ببینید، که نشان می دهد هر دو مبدا (Cassandra) و Target (Cassandra-Bigtable Proxy) بالا هستند:

{
  "OriginStatus": {
    "Addr": "<Your-Cassandra-VM-Internal-IP>:9042",
    "CurrentFailureCount": 0,
    "FailureCountThreshold": 1,
    "Status": "UP"
  },
  "TargetStatus": {
    "Addr": "<Your-Bigtable-Proxy-VM-Internal-IP>:9042",
    "CurrentFailureCount": 0,
    "FailureCountThreshold": 1,
    "Status": "UP"
  },
  "Status": "UP"
}

7. برنامه را پیکربندی کنید و نوشتن دوگانه را شروع کنید

مدت زمان 0:05

در این مرحله در یک مهاجرت واقعی، برنامه(های) خود را مجدداً پیکربندی می کنید تا به جای اتصال مستقیم به کاساندرا، به آدرس IP گره پروکسی ZDM (مثلا :9042) اشاره کنند.

هنگامی که برنامه به پروکسی ZDM متصل شد: خواندن ها به طور پیش فرض از Origin (Cassandra) ارائه می شوند. نوشته‌ها هم به Origin (Cassandra) و هم به Target (Bigtable، از طریق Cassandra-Bigtable Proxy) ارسال می‌شوند. این برنامه شما را قادر می سازد تا به عملکرد عادی خود ادامه دهد و در عین حال اطمینان حاصل شود که داده های جدید به طور همزمان در هر دو پایگاه داده نوشته شده است. می توانید اتصال را با استفاده از cqlsh که به پروکسی ZDM از jumphost یا VM دیگری در شبکه نشان داده شده است آزمایش کنید:

Cqlsh <zdm-proxy-node-1-ip-address> 9042

سعی کنید برخی از داده ها را وارد کنید:

INSERT INTO zdmbigtable.employee (name, age, is_active) VALUES ('Alice', 30, true); 
SELECT * FROM employee WHERE name = 'Alice';

این داده ها باید برای Cassandra و Bigtable نوشته شوند. می‌توانید با رفتن به Google Cloud Console و باز کردن Bigtable Query Editor برای نمونه خود، این را در Bigtable تأیید کنید. یک پرس و جو "SELECT * FROM کارمند" را اجرا کنید و داده هایی که اخیراً درج شده اند باید قابل مشاهده باشند.

8. انتقال داده های تاریخی با استفاده از Cassandra Data Migrator

اکنون که نوشتن دوگانه برای داده‌های جدید فعال است، از ابزار Cassandra Data Migrator (CDM) برای کپی کردن داده‌های تاریخی موجود از Cassandra در Bigtable استفاده کنید.

1. ماشین مجازی کامپیوتری را برای CDM ایجاد کنید

این VM به حافظه کافی برای Spark نیاز دارد.

gcloud compute instances create cdm-migrator-vm \
--machine-type=e2-medium \
--image-family=ubuntu-2004-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=40GB

2. پیش نیازها را نصب کنید (جاوا 11، اسپارک)

SSH به cdm-migrator-vm:

gcloud compute ssh cdm-migrator-vm

داخل ماشین مجازی:

# Install Java 11 
sudo apt-get update 
sudo apt-get install -y openjdk-11-jdk
 
# Verify Java installation 
java -version 

# Download and Extract Spark (Using version 3.5.3 as requested) 
# Check the Apache Spark archives for the correct URL if needed

wget  [https://archive.apache.org/dist/spark/spark-3.5.3/spark-3.5.3-bin-hadoop3-scala2.13.tgz](https://archive.apache.org/dist/spark/spark-3.5.3/spark-3.5.3-bin-hadoop3-scala2.13.tgz) tar -xvzf spark-3.5.3-bin-hadoop3-scala2.13.tgz
 
export SPARK_HOME=$PWD/spark-3.5.3-bin-hadoop3-scala2.13 
export PATH=$PATH:$SPARK_HOME/bin

3. Cassandra Data Migrator را دانلود کنید

فایل CDM tool jar را دانلود کنید. برای نشانی اینترنتی صحیح نسخه مورد نظر، صفحه انتشار گیت‌هاب انتقال داده Cassandra را بررسی کنید.

# Example using version 5.2.2 - replace URL if needed
wget https://github.com/datastax/cassandra-data-migrator/releases/download/v5.2.2/cassandra-data-migrator-5.2.2.jar)

4. CDM را پیکربندی کنید

یک فایل خواص با نام cdm.properties ایجاد کنید

Nano cdm.properties

پیکربندی زیر را جای‌گذاری کنید، آدرس‌های IP را جایگزین کنید و ویژگی‌های TTL/Writetime را غیرفعال کنید زیرا مستقیماً توسط Bigtable به همان روش پشتیبانی نمی‌شوند. auth نظر را ترک کنید.

# Origin Cassandra Connection 
spark.cdm.connect.origin.host <Your-Cassandra-VM-IP-Address> # Replace!
spark.cdm.connect.origin.port 9042
spark.cdm.connect.origin.username cassandra # Leave default, or set if auth is enabled # 
spark.cdm.connect.origin.password cassandra # Leave default, or set if auth is enabled #

# Target Bigtable (via Cassandra-Bigtable Proxy)
Connection spark.cdm.connect.target.host <Your-Bigtable-Proxy-VM-IP-Address> # Replace! 
spark.cdm.connect.target.port 9042
spark.cdm.connect.target.username cassandra # Leave default, or set if auth is enabled #
spark.cdm.connect.target.password cassandra # Leave default, or set if auth is enabled #

# Disable TTL/Writetime features (Important for Bigtable compatibility via Proxy)
spark.cdm.feature.origin.ttl.automatic false 
spark.cdm.feature.origin.writetime.automatic false 
spark.cdm.feature.target.ttl.automatic false 
spark.cdm.feature.target.writetime.automatic false

فایل را ذخیره کرده و ببندید.

5. کار مهاجرت را اجرا کنید

مهاجرت را با استفاده از spark-submit اجرا کنید. این دستور به Spark می‌گوید که jar CDM را با استفاده از فایل ویژگی‌های شما اجرا کند و فضای کلید و جدول را برای مهاجرت مشخص کند. تنظیمات حافظه (-حافظه راننده، -حافظه اجراکننده) را بر اساس اندازه VM و حجم داده خود تنظیم کنید.

مطمئن شوید که در دایرکتوری حاوی jar CDM و فایل خواص هستید. اگر نسخه دیگری را دانلود کردید، «cassandra-data-migrator-5.2.2.jar» را جایگزین کنید.

./spark-3.5.3-bin-hadoop3-scala2.13/bin/spark-submit \ --properties-file cdm.properties \ --master "local[*]" \ --driver-memory 4G \ --executor-memory 4G \ --class com.datastax.cdm.job.Migrate \ cassandra-data-migrator-5.2.2.jar &> cdm_migration_$(date +%Y%m%d_%H%M).log

مهاجرت در پس‌زمینه اجرا می‌شود و گزارش‌ها در cdm_migration_... .log نوشته می‌شوند. فایل log را برای پیشرفت و هرگونه خطا نظارت کنید:

tail -f cdm_migration_*.log

6. بررسی مهاجرت داده ها

هنگامی که کار CDM با موفقیت کامل شد، بررسی کنید که داده های تاریخی در Bigtable وجود دارد. از آنجایی که پروکسی Cassandra-Bigtable اجازه خواندن CQL را می دهد، می توانید مجدداً از cqlsh متصل به پروکسی ZDM (که پس از انتقال به هدف می خواند یا می تواند به آن پیکربندی شود) یا مستقیماً به پروکسی Cassandra-Bigtable برای جستجوی داده ها استفاده کنید. اتصال از طریق پروکسی ZDM:

cqlsh <zdm-proxy-node-1-ip-address> 9042

داخل cqlsh:

SELECT COUNT(*) FROM zdmbigtable.employee; -- Check row count matches origin 
SELECT * FROM employee LIMIT 10; -- Check some sample data

روش دیگر، از ابزار cbt (در صورت نصب بر روی CDM VM یا Cloud Shell) برای جستجوی مستقیم داده ها در Bigtable استفاده کنید:

# First, install cbt if needed
# gcloud components update
# gcloud components install cbt

# Then lookup a specific row (replace 'some_employee_name' with an actual primary key)
cbt -project $PROJECT_ID -instance zdmbigtable lookup employee some_employee_name

9. برش (مفهومی)

پس از بررسی کامل سازگاری داده ها بین Cassandra و Bigtable، می توانید به برش نهایی ادامه دهید.

با پروکسی ZDM، برش شامل پیکربندی مجدد آن به گونه‌ای است که به‌جای مبدا (کاساندرا) ابتدا از هدف (Bigtable) خوانده شود. این معمولاً از طریق پیکربندی ZDM Proxy انجام می شود و به طور موثر ترافیک خواندن برنامه شما را به Bigtable منتقل می کند.

هنگامی که مطمئن شدید که Bigtable تمام ترافیک را به درستی ارائه می دهد، در نهایت می توانید:

  • با پیکربندی مجدد پروکسی ZDM، نوشتن دوگانه را متوقف کنید.
  • خوشه اصلی کاساندرا را از رده خارج کنید.
  • پروکسی ZDM را حذف کنید و برنامه را به طور مستقیم به پروکسی Cassandra-Bigtable متصل کنید یا از Bigtable CQL Client برای جاوا استفاده کنید.

مشخصات پیکربندی مجدد ZDM Proxy برای برش فراتر از این کد اصلی است اما در مستندات Datastax ZDM به تفصیل آمده است.

10. پاکسازی کنید

برای جلوگیری از تحمیل هزینه، منابع ایجاد شده در این Codelab را حذف کنید.

1. ماشین های مجازی موتور محاسباتی را حذف کنید

gcloud compute instances delete cassandra-origin-vm zdm-proxy-jumphost zdm-proxy-node-1 bigtable-proxy-vm cdm-migrator-vm --zone=$ZONE --quiet

2. نمونه Bigtable را حذف کنید

gcloud bigtable instances delete zdmbigtable

3. قوانین فایروال را حذف کنید

gcloud compute firewall-rules delete allow-migration-internal

4. پایگاه داده Cassandra را حذف کنید (در صورت نصب محلی یا ادامه دار)

اگر Cassandra را خارج از یک ماشین مجازی کامپیوتری که در اینجا ایجاد شده است نصب کرده اید، مراحل مناسب را برای حذف داده ها یا حذف نصب Cassandra دنبال کنید.

11. تبریک!

شما با موفقیت روند راه اندازی یک مسیر مهاجرت مبتنی بر پروکسی از آپاچی کاساندرا به Bigtable را طی کردید!

شما یاد گرفتید که چگونه:

Cassandra و Bigtable را مستقر کنید.

  • پروکسی Cassandra-Bigtable را برای سازگاری با CQL پیکربندی کنید.
  • از Datastax ZDM Proxy برای مدیریت نوشتن و ترافیک دوگانه استفاده کنید.
  • از Cassandra Data Migrator برای انتقال داده های تاریخی استفاده کنید.

این رویکرد با استفاده از لایه پروکسی امکان مهاجرت با حداقل زمان خرابی و بدون تغییر کد را فراهم می کند.

مراحل بعدی

  • اسناد Bigtable را کاوش کنید
  • برای پیکربندی‌های پیشرفته و رویه‌های برش، با اسناد Proxy Datastax ZDM مشورت کنید.
  • برای جزئیات بیشتر، مخزن Cassandra-Bigtable Proxy را مرور کنید.
  • برای استفاده پیشرفته، مخزن Cassandra Data Migrator را بررسی کنید.
  • سایر Google Cloud Codelabs را امتحان کنید