תזמון גיבויים ב-Cloud Storage

בדף הזה מוסבר איך לתזמן גיבויים של Cassandra ב-Cloud Storage. בשיטה הזו, הגיבויים מאוחסנים בקטגוריה של Cloud Storage שצוינה.

כדי לתזמן גיבויים של Cassandra, פועלים לפי השלבים הבאים:

  1. מריצים את הפקודה create-service-account הבאה כדי ליצור חשבון שירות (SA) ב-Google Cloud עם התפקיד הרגיל roles/storage.objectAdmin. תפקיד SA הזה מאפשר לכם לכתוב נתוני גיבוי ב-Cloud Storage. מריצים את הפקודה בספרייה $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/.
    ./tools/create-service-account --env non-prod --dir ./

    הפקודה הזו יוצרת חשבון שירות יחיד בשם apigee-non-prod לשימוש בסביבות שאינן סביבות ייצור, וממקמת את קובץ המפתח שהורד בספרייה ./.

    מידע נוסף על חשבונות שירות ב-Google Cloud זמין במאמר יצירה וניהול של חשבונות שירות.

  2. הפקודה create-service-account שומרת קובץ JSON שמכיל את המפתח הפרטי של חשבון השירות. הקובץ נשמר באותה ספרייה שבה מופעלת הפקודה. תצטרכו את הנתיב לקובץ הזה בשלבים הבאים.
  3. יצירת קטגוריה של Cloud Storage מציינים מדיניות שמירת נתונים סבירה לקטגוריה. ‫Apigee ממליצה על מדיניות שמירת נתונים של 15 ימים.
  4. פותחים את קובץ overrides.yaml.
  5. כדי להפעיל גיבוי, מוסיפים את המאפיינים הבאים cassandra.backup. אל תסירו אף אחד מהמאפיינים שכבר הוגדרו.

    פרמטרים

    cassandra:
        ...
    
        backup:
          enabled: true
          serviceAccountPath: SA_JSON_FILE_PATH
          dbStorageBucket: CLOUD_STORAGE_BUCKET_NAME
          schedule: BACKUP_SCHEDULE_CODE
          cloudProvider: "GCP"  # For remote server backup set this to HYBRID (all caps)
    
        ...
        

    דוגמה

      ...
    
      cassandra:
        storage:
          type: gcepd
          capacity: 50Gi
          gcepd:
            replicationType: regional-pd
        auth:
          default:
            password: "abc123"
          admin:
            password: "abc234"
          ddl:
            password: "abc345"
          dml:
            password: "abc456"
        nodeSelector:
          key: cloud.google.com/gke-nodepool
          value: apigee-data
        backup:
          enabled: true
          serviceAccountPath: "my-cassandra-backup-sa.json"
          dbStorageBucket: "myname-cassandra-backup"
          schedule: "45 23 * * 6"
          cloudProvider: "GCP"
          
    
    
        ... 
  6. כאשר:
    מאפיין (property) תיאור
    backup:enabled הגיבוי מושבת כברירת מחדל. צריך להגדיר את המאפיין הזה לערך true.
    backup:serviceAccountPath

    SA_JSON_FILE_PATH

    הנתיב במערכת הקבצים לקובץ ה-JSON של חשבון השירות שהורד כשמריצים את הפקודה create-service-account.

    הנתיב צריך להיות יחסי לספריית התרשימים של apigee-datastore. לדוגמה, serviceAccountPath: myproject-apigee-cassandra.json.

    backup:dbStorageBucket

    CLOUD_STORAGE_BUCKET_NAME

    השם של קטגוריה קיימת ב-Google Cloud Storage שתשמש לאחסון ארכיונים של גיבויים. אם אתם צריכים ליצור קטגוריה, תוכלו לעיין במאמר בנושא יצירת קטגוריות.

    backup:cloudProvider

    GCP/HYBRID

    לגיבוי ב-Cloud Storage, מגדירים את המאפיין ל-GCP. לדוגמה, cloudProvider: "GCP".

    לגיבוי של שרת מרוחק, מגדירים את המאפיין לערך HYBRID. לדוגמה, cloudProvider: "HYBRID".

    backup:schedule

    BACKUP_SCHEDULE_CODE

    השעה שבה הגיבוי מתחיל, שצוינה בתחביר crontab רגיל. ברירת מחדל: 0 2 * * *

  7. מחילים את שינויי ההגדרות על האשכול החדש. לדוגמה:
    helm upgrade datastore apigee-datastore/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

    ‫OVERRIDES_FILE הוא הנתיב לקובץ ההחלפות שערכתם.

  8. מאמתים את עבודת הגיבוי. לדוגמה:
    kubectl get cronjob -n APIGEE_NAMESPACE
      NAME                      SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
      apigee-cassandra-backup   33 * * * *   False     0        <none>          94s

הפעלת גיבוי ידני

גיבויים של Cassandra נוצרים אוטומטית בהתאם ללוח הזמנים של cron שמוגדר בקובץ overrides.yaml.

כדי להתחיל גיבוי ידני, משתמשים בפקודה הבאה:

kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup BACKUP_POD_NAME