אפשר לקשר את ה-proxy של Apache Cassandra ל-Spanner Omni כדי שאפליקציות Cassandra קיימות יוכלו ליצור אינטראקציה עם Spanner Omni באמצעות Cassandra Query Language (CQL). השילוב הזה מאפשר לכם להשתמש ביכולות של Spanner Omni תוך שמירה על תאימות לאפליקציות הלקוח של Cassandra.
כדי לחבר את השרת הפרוקסי, פועלים לפי השלבים הבאים:
משכפלים את מאגר ה-proxy של Cassandra ל-Spanner.
ממירים את ההגדרות של סכימת Cassandra לסכימת Spanner Omni באמצעות סקריפט להמרת סכימות שסופק. הסקריפט תומך במצבי אבטחה של טקסט רגיל, TLS ו-mTLS.
מעדכנים את קובץ ההגדרות של מתאם ה-proxy עם נקודת הקצה של Spanner Omni והגדרות האבטחה כדי להגדיר את מתאם ה-proxy.
בונים ומריצים את ה-proxy. לאחר מכן, מתחברים אליו באמצעות
cqlshכדי להתחיל בפעולות.
מידע נוסף מופיע במאמר בנושא ממשק Cassandra במסמכי התיעוד של Spanner.
לפני שמתחילים
לפני שמתחילים, צריך לעמוד בדרישות הבאות:
מגדירים פריסה של Spanner Omni ויוצרים מסד נתונים.
כדי להפעיל סשנים מרובי-ערוצים בסביבה שלכם, צריך להגדיר את משתני הסביבה הנדרשים.
מוודאים ש-Go מותקן במחשב המקומי.
כדאי לעיין במגבלות של פרוקסי Cassandra ל-Spanner כדי להבין איך להשתמש בו.
מגדירים את מצב האבטחה (טקסט רגיל, TLS או mTLS) שרוצים להשתמש בו לתקשורת בין ה-proxy לבין Spanner Omni.
הגדרה של משתני סביבה
כדי להשתמש ב-Cassandra proxy, צריך להגדיר את משתני הסביבה הנדרשים כדי להפעיל סשנים מרובי-ערוצים. נדרשים סשנים מרובי-ערוצים לחיבורים ל-Spanner Omni, אבל הם מושבתים כברירת מחדל בספריות הלקוח ובדרייברים של Spanner.
מגדירים את משתני הסביבה הבאים:
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS=true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS=true
שכפול המאגר
משכפלים את המאגר שתומך ב-Proxy ומוודאים ש-Go מותקן במחשב:
git clone https://github.com/cloudspannerecosystem/cassandra-to-spanner-proxy.git
// Ensure all Go modules are installed
go mod tidy
המרת סכימת Cassandra
יוצרים מראש את כל הטבלאות של Cassandra. הסקריפט schema_converter/cql_to_spanner_schema_converter.go ממיר שאילתות של Cassandra CREATE TABLE מקובץ CQL לשאילתות של Spanner CREATE TABLE.
--database DATABASE_ID: מציינים את שם מסד הנתונים של היעד ב-Spanner Omni. מחליפים אתDATABASE_IDבשם מסד הנתונים.
--cql PATH_TO_CQL_FILE: מציינים את הנתיב לקובץ ה-CQL שמכיל את הגדרת הסכימה של Cassandra.
--endpoint ENDPOINT: מציינים את כתובת נקודת הקצה של Spanner Omni. מחליפים אתENDPOINTבנקודת הקצה של Spanner Omni.go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINTכלי ההמרה של הסכימה תומך בכל שלושת מצבי האבטחה של Spanner Omni: טקסט פשוט, TLS ו-mTLS. כל מצב אבטחה דורש פרמטרים נוספים:
כדי להשתמש במצב טקסט פשוט, משתמשים בדגל
--usePlainText:go run schema_converter/cql_to_spanner_schema_converter.go --database DATABASE_ID --cql PATH_TO_CQL_FILE --endpoint ENDPOINT --usePlainTextבמצב TLS, משתמשים בדגל
--caCertificateעם הנתיב לקובץ אישור ה-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למצב mTLS, משתמשים בדגלים
--caCertificate,--clientCertificateו---clientKeyעם הנתיבים המתאימים: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הסקריפט גם יוצר טבלה
TableConfigurationsאם היא עדיין לא קיימת. בטבלה הזו מתבצע מעקב אחרי מטא-נתוני הסכימה של הטבלאות והעמודות ב-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);
הגדרת מתאם ה-proxy
אחרי שיוצרים טבלאות של Cassandra באמצעות סקריפט להמרת סכימות, צריך להגדיר את המתאם כדי לבצע פעולות בטבלאות. כדי להגדיר את המתאם:
מעדכנים את הקובץ config.yaml בתיקיית השורש של המאגר עם אפשרויות ההגדרה הזמינות. בקובץ ההגדרות של המתאם צריך להגדיר את נקודת הקצה של Spanner Omni, יחד עם אפשרויות מצב האבטחה הרלוונטיות.
# [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
ההגדרה הבאה מספקת את ההגדרה המינימלית להפעלת המתאם:
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
בנייה והפעלה של שרת ה-Proxy
אחרי שמגדירים את מתאם ה-Proxy, יוצרים ומריצים את ה-Proxy באמצעות הפקודות הבאות:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o cassandra-to-spanner-proxy .
./cassandra-to-spanner-proxy
מתחברים לשרת ה-proxy באמצעות המעטפת עם הפקודה הבאה:
./cqlsh localhost 9042