בקטע הזה מוסבר איך להגדיר גיבוי ושחזור של מסד הנתונים של Cassandra באמצעות ssh ומערכת הקבצים שלכם, במקום באמצעות Google Cloud. מידע נוסף:
מהו גיבוי ושחזור של נתוני Cassandra באמצעות אחסון בהתאמה אישית?
גיבוי עם אחסון מותאם אישית שומר גיבויים של מסד הנתונים של Cassandra בקבצים דחוסים במערכת הקבצים של שרת שאתם מציינים. הגיבויים מתבצעים לפי לוח זמנים שמציינים בקובץ ההחלפות. החיבור לשרת מתבצע באמצעות SSH מאובטח.
הגדרת גיבויים ללא שירותי ענן
בשלבים הבאים מופיעות דוגמאות נפוצות להשלמת משימות ספציפיות, כמו יצירת צמד מפתחות SSH. משתמשים בשיטות שמתאימות להתקנה.
התהליך כולל את החלקים הבאים:
הגדרת השרת ו-SSH
- מגדירים שרת Linux או Unix לגיבויים. צריך להיות אפשר להגיע לשרת הזה באמצעות SSH ממישור זמן הריצה של Apigee Hybrid. צריך שיהיה בו מספיק נפח אחסון לגיבויים.
- מגדירים שרת SSH בשרת או מוודאים שמוגדר בו שרת SSH מאובטח.
- יוצרים זוג מפתחות SSH ושומרים את קובץ המפתח הפרטי בנתיב שאפשר לגשת אליו ממישור זמן הריצה ההיברידי. חובה להשתמש בסיסמה ריקה לצמד המפתחות, אחרת הגיבוי ייכשל. לדוגמה:
ssh-keygen -t rsa -b 4096 -C exampleuser@example.comEnter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ssh_key Your public key has been saved in ssh_key.pub The key fingerprint is: SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com The key's randomart image is: +---[RSA 4096]----+ | +. ++X| | . . o.=.*+| | . o . . o==o | | . . . =oo+o...| | . S +E oo .| | . . .. . o .| | . . . . o.. | | . ...o ++. | | .. .. +o+. | +----[SHA256]-----+ - יוצרים חשבון משתמש בשרת הגיבוי עם השם
apigee. מוודאים שלמשתמש החדשapigeeיש ספריית בית ב-/home. - בשרת הגיבוי, יוצרים ספרייה בשם
sshבספרייה החדשה/home/apigee. - מעתיקים את המפתח הציבורי (
ssh_key.pubבדוגמה הקודמת) לקובץ בשםauthorized_keysבספרייה החדשה/home/apigee/ssh. לדוגמה:cd /home/apigee
mkdir .sshcd .sshvi authorized_keys - בשרת הגיבוי, יוצרים ספריית גיבוי בתוך הספרייה
/home/apigee/. ספריית הגיבוי יכולה להיות כל ספרייה, בתנאי שלמשתמשapigeeיש גישה אליה. לדוגמה:cd /home/apigee
mkdir cassandra-backup - בודקים את החיבור. צריך לוודא שרכיבי ה-pod של Cassandra יכולים להתחבר לשרת הגיבוי באמצעות SSH:
- מתחברים למעטפת של Cassandra pod. לדוגמה:
kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash
כאשר APIGEE_CASSANDRA_DEFAULT_0 הוא השם של Cassandra pod. משנים את הערך לשם הפוד שממנו רוצים להתחבר.
- מתחברים באמצעות SSH לשרת הגיבוי, באמצעות כתובת ה-IP של השרת:
ssh apigee@BACKUP_SERVER_IP
- מתחברים למעטפת של Cassandra pod. לדוגמה:
הגדרת לוח הזמנים והיעד לגיבוי
אתם מגדירים את לוח הזמנים ואת היעד לגיבוי בקובץ overrides.yaml.
- מוסיפים את הפרמטרים הבאים לקובץ
overrides.yaml:פרמטרים
cassandra: backup: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) schedule: "SCHEDULE"דוגמה
cassandra: backup: enabled: true keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *"כאשר:
מאפיין (property) תיאור backup:enabledהגיבוי מושבת כברירת מחדל. צריך להגדיר את המאפיין הזה לערך true.backup:keyFilePATH_TO_PRIVATE_KEY_FILE
הנתיב במערכת הקבצים המקומית לקובץ המפתח הפרטי של SSH (שנקרא
ssh_keyבשלב שבו יצרתם את זוג מפתחות ה-SSH).backup:serverBACKUP_SERVER_IP
כתובת ה-IP של שרת הגיבוי.
backup:storageDirectoryBACKUP_DIRECTORY
השם של ספריית הגיבוי בשרת הגיבוי. זו חייבת להיות ספרייה בתוך
home/apigee(שם ספריית הגיבוי הואcassandra_backup, כפי שמופיע בשלב שבו יצרתם את ספריית הגיבוי).backup:cloudProviderHYBRIDנדרש המאפיין
cloudProvider: "HYBRID".backup:scheduleSCHEDULE
השעה שבה הגיבוי מתחיל, שצוינה בתחביר crontab רגיל. ברירת מחדל:
0 2 * * * - משתמשים בפקודה
apigeectlכדי להחיל את הגדרות הגיבוי על היקף האחסון של האשכול:$APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE
YOUR_OVERRIDES_FILE הוא הנתיב לקובץ ההחלפות שערכתם.
הגדרת שחזור
השחזור לוקח את הנתונים ממיקום הגיבוי ומשחזר אותם לאשכול Cassandra חדש עם אותו מספר צמתים. לא נלקחים נתונים מאשכול Cassandra הישן.
ההוראות לשחזור שבהמשך מיועדות לפריסות באזור יחיד שלא משתמשות ב-Google Cloud Storage לגיבויים. למידע על פריסות אחרות, קראו את המאמרים הבאים:
- לפריסות באזור יחיד שמשתמשות ב-Google Cloud Storage לגיבויים, אפשר לעיין במאמר בנושא גיבוי ושחזור של Cassandra.
- לפריסות במספר אזורים, אפשר לעיין במאמר פריסה במספר אזורים ב-GKE וב-GKE On-Prem.
כדי לשחזר גיבויים של Cassandra:
- יוצרים מרחב שמות חדש באשכול Kubernetes הקיים שישמש לשחזור הפריסה של זמן הריצה ההיברידי. אל תשתמשו בשם המקורי של מרחב השמות בשביל מרחב השמות החדש. אל תשתמשו במרחב השמות הישן לשחזור.
-
בספריית השורש של ההתקנה ההיברידית, יוצרים קובץ חדש בשם
overrides-restore.yaml. -
מעתיקים את ההגדרה המלאה של Cassandra מהקובץ המקורי
overrides.yamlלקובץ החדשoverrides-restore.yaml. לדוגמה:cp ./overrides.yaml ./overrides-restore.yaml
- מוסיפים רכיב של מרחב שמות לקובץ
overrides-restore.yamlהחדש.פרמטרים
namespace: YOUR_RESTORE_NAMESPACE cassandra: ... restore: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) snapshotTimestamp: "BACKUP_TO_RESTORE" ...דוגמה
namespace: cassandra-restore cassandra: restore: enabled: true keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" snapshotTimestamp: "20201001183903" - משנים את התווית
appבכל צומתי Cassandra במרחב השמות הישן על ידי הפעלת הפקודה הבאה:kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
- יוצרים פריסה חדשה של סביבת ריצה היברידית. הפעולה הזו תיצור אשכול Cassandra חדש ותתחיל לשחזר את נתוני הגיבוי לאשכול:
./apigeectl init -f ../overrides-restore.yaml
./apigeectl apply -f ../overrides-restore.yaml
-
אחרי שהשחזור יסתיים, צריך להעביר את התנועה לשימוש באשכול Cassandra במרחב השמות החדש. מריצים את הפקודות הבאות כדי להעביר את התנועה:
kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset
kubectl patch rs -n OLD_NAMESPACE APIGEE_CONNECT_RS_NAME -p '{"spec":{"replicas" : 0}}' - אחרי שהעברת התנועה מסתיימת, אפשר להגדיר מחדש את הגיבויים באשכול המשוחזר על ידי הסרת ההגדרה
restoreוהוספת ההגדרהbackupלקובץoverrides-restore.yaml. מחליפים את YOUR_RESTORE_NAMESPACE בשם החדש של מרחב השמות שנוצר בשלב 1.namespace: YOUR_RESTORE_NAMESPACE cassandra: ... backup: enabled: true serviceAccountPath: SA_JSON_FILE_PATH dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH schedule: BACKUP_SCHEDULE_CODE ...לאחר מכן מריצים את הפקודה הבאה כדי להחיל את הגדרות
backup:./apigeectl apply -f ../overrides-restore.yaml
כאשר:
| מאפיין (property) | תיאור |
|---|---|
namespace |
YOUR_RESTORE_NAMESPACE השם של מרחב השמות החדש שיצרתם בשלב 1 עבור אשכול Cassandra החדש. אל תשתמשו באותו מרחב שמות שבו השתמשתם עבור האשכול המקורי. |
restore:enabled |
השחזור מושבת כברירת מחדל. צריך להגדיר את המאפיין הזה לערך true. |
restore:keyFile |
PATH_TO_PRIVATE_KEY_FILE הנתיב במערכת הקבצים המקומית לקובץ המפתח הפרטי של SSH (בשם |
restore:server |
BACKUP_SERVER_IP כתובת ה-IP של שרת הגיבוי. |
restore:storageDirectory |
BACKUP_DIRECTORY השם של ספריית הגיבוי בשרת הגיבוי.
זו חייבת להיות ספרייה בתוך |
restore:cloudProvider |
נדרש המאפיין |
restore:snapshotTimestamp |
BACKUP_TO_RESTORE גיבוי ספציפי שרוצים לשחזר, שצוין בתחביר crontab רגיל (אסור להשתמש בתווים כלליים). |