תזמון של קובצי snapshot ב-Filestore Enterprise

במאמר הזה מוסבר איך להשתמש ב-Cloud Scheduler כדי לתזמן ולעזור לכם להגן על תמונות מצב של Filestore.

המסמך הזה מיועד למקבלי החלטות בתחום ה-IT, לאדמינים של גיבויים ולאדמינים של התאוששות מאסון (DR) שרוצים ללמוד על תמונות מצב מתוזמנות של Filestore או ליצור אותן.

מטרות

  • מגדירים פונקציות Cloud Run ואת קובץ ההגדרות בפורמט JSON.
  • יוצרים משימה של Cloud Scheduler.
  • יצירה ותיוג של תמונות מצב מתוזמנות של Filestore.
  • עוקבים אחרי תהליך יצירת ה-snapshot.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

כדי להימנע מחיובים נוספים אחרי שסיימתם את המדריך, תוכלו למחוק את המשאבים שיצרתם. מידע נוסף זמין במאמר בנושא הסרת המשאבים.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

מודל הפריסה

בתרשים הבא מוצג מודל הפריסה שתומך בפונקציות של Cloud Run לתמונות מצב של Filestore.

מודל פריסה שתומך בפונקציות Cloud Run של תמונת מצב של Filestore.

המשימה של Cloud Scheduler מתואמת עם פונקציות Cloud Run כדי לתזמן וליצור תמונות מצב של Filestore וקבצי יומן. התמונות הזמניות זמינות בשיתוף של Filestore.

מגבלות ידועות

כשמתכוננים להגדיר מתזמן של צילומי מצב למופעי Filestore, כדאי להביא בחשבון את המגבלות הבאות:

  • הפונקציה מוחקת רק תמונת מצב אחת כשצריך, גם אם יש יותר תמונות מצב של מתזמן ממה שהוגדר בקובץ התצורה של מדיניות השמירה, או אם קובץ התצורה של מדיניות השמירה עודכן כך שיישארו פחות תמונות מצב ממה שהיה קודם.
  • אם מקטינים את הערך המספרי של snapshots בקובץ ההגדרות בפורמט JSON, התמונות המיותרות של מצב המערכת מהמופע לא נמחקות באופן אוטומטי. אם משנים את ההגדרה, צריך למחוק ידנית את התמונות המיותרות.
  • מכיוון שהמגבלה של מזהה התמונה היא 75 תווים, שם מדיניות השמירה מוגבל ל-50 תווים.

הכנת הסביבה

בקטע הזה מגדירים את משתני הסביבה, משכפלים את המאגר ויוצרים את האפליקציות והקבצים שדרושים למדריך הזה.

הגדרה של משתני סביבה

  • ב-Cloud Shell, מזינים את הפקודה הבאה:
gcloud components update
  • ב-Cloud Shell, יוצרים את המשתנים הבאים:

    export PROJECT_ID=PROJECT_ID
    export GCP_REGION=GCP_REGION
    export APP_ENGINE_REGION=APP_ENGINE_REGION
    export FUNCTION_NAME=FUNCTION_NAME
    export SCHEDULER_NAME=SCHEDULER_NAME
    export SCHEDULER_EXPRESSION="SCHEDULER_EXPRESSION"
    export SCHEDULER_TZ=SCHEDULER_TZ
    export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud שבו רוצים להתקין את המופע הארגוני, פונקציית Cloud Run ו-Cloud Scheduler.
    • GCP_REGION: האזור שבו רוצים להתקין את המופע הארגוני, את הפונקציה של Cloud Run ואת Cloud Scheduler. Google Cloud
    • APP_ENGINE_REGION: אזור מתוך רשימת המיקומים של App Engine שבו רוצים להתקין את App Engine. כדאי להביא בחשבון את הדרישות הבאות:
      • Google Cloud לפרויקט יכולה להיות רק מופע אחד של App Engine, ואי אפשר לשנות את האזור של App Engine מאוחר יותר.
      • המשימה ב-Cloud Scheduler והמכונה של App Engine צריכות להיות באותו אזור.
        • לדוגמה, אם משאבי Cloud Scheduler משתמשים ב-us-central1, צריך להשתמש ב-us-central, שהוא המקבילה ב-App Engine.
        • ב-App Engine, יש כלל ייחודי למתן שמות לאזורים מסוימים. פרטים נוספים מופיעים ברשימת המיקומים של App Engine.
    • FUNCTION_NAME: השם שרוצים לתת לפונקציית Cloud Run.
    • SCHEDULER_NAME: השם שרוצים לתת ל-Cloud Scheduler.
    • SCHEDULER_EXPRESSION: ביטוי ה-cron של Cloud Scheduler, לדוגמה 10 0 * * *. מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.
    • SCHEDULER_TZ: אזור הזמן שלכם ב-Cloud Scheduler, בפורמט השם מרשימת אזורי הזמן של tz database – לדוגמה, America/Los_Angeles.
    • SERVICE_ACCOUNT_NAME: השם של חשבון השירות שנוצר, לדוגמה, scheduler-sa.

יצירה של חשבון שירות

בקטע הזה יוצרים חשבון שירות ייעודי, שמאפשר ליצור ולנהל את פונקציית Cloud Run ואת העבודה ב-Cloud Scheduler.

כדי לבצע את הפעולות האלה, לחשבון השירות צריכות להיות ההרשאות הבאות:

  • file.instances.get
  • file.snapshots.list
  • file.snapshots.create
  • file.operations.get
  • file.snapshots.delete
  • cloudfunctions.functions.invoke

מידע נוסף זמין במאמרים הרשאות IAM ב-Filestore או הרשאות IAM בפונקציות של Cloud Run.

כדי ליצור את חשבון השירות:

  1. ב-Cloud Shell, יוצרים תפקיד ייעודי למתזמן של תמונות המצב עם ההרשאות הנדרשות:

    gcloud iam roles create snapshot_scheduler --project $PROJECT_ID --permissions file.instances.get,file.snapshots.list,file.snapshots.create,file.operations.get,file.snapshots.delete,logging.logEntries.create,cloudfunctions.functions.invoke --stage GA
    
  2. יוצרים את חשבון השירות:

    gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
    
  3. מקשרים את התפקיד לחשבון השירות:

    gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com --role projects/$PROJECT_ID/roles/snapshot_scheduler
    

יצירת מופע של Enterprise

  1. אם עדיין לא יצרתם משתני סביבה למופע Enterprise שבו אתם רוצים להשתמש, ב-Cloud Shell, יוצרים את המשתנים הבאים:

    export FILESTORE_INSTANCE_ID=FILESTORE_INSTANCE_ID
    export FILESTORE_SHARE_NAME=SHARE_NAME
    export FILESTORE_SHARE_SIZE=NUMERIC_IN_GB
    export NETWORK_NAME=VPC_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • FILESTORE_INSTANCE_ID: השם של המופע של Enterprise
    • SHARE_NAME: השם של השיתוף של המופע הארגוני
    • NUMERIC_IN_GB: גודל השיתוף של מכונת הארגון, מספר בין 1024 ל-10240, במרווחים של 256
    • VPC_NAME: השם של רשת ה-VPC שבה רוצים להתקין את המופע של Enterprise
  2. אם עדיין לא עשיתם את זה, יוצרים מופע Filestore:

    gcloud filestore instances create $FILESTORE_INSTANCE_ID --network name=$NETWORK_NAME --file-share=capacity=$FILESTORE_SHARE_SIZE,name=$FILESTORE_SHARE_NAME --tier ZONAL --project=$PROJECT_ID --location=$GCP_REGION
    

מידע נוסף מופיע במאמר יצירת מופעים.

יצירת אפליקציית App Engine

בקטע הזה, יוצרים App Engine עבורGoogle Cloud הפרויקט. כך תוכלו ליצור בהמשך המדריך הזה עבודה ב-Cloud Scheduler.

Google Cloud לפרויקט יכול להיות רק App Engine אחד, ואי אפשר לשנות את האזור בשלב מאוחר יותר.

  • אם אין לכם עדיין אפליקציית App Engine, אתם צריכים ליצור אחת ב-Cloud Shell:

    gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
    

יצירת קובץ ההגדרות בפורמט JSON

קובץ התצורה בפורמט JSON יכול להכיל עד שמונה מופעי Filestore, בגלל מגבלה של פונקציות Cloud Run. אם יש לכם יותר משמונה מופעים של Filestore שאתם רוצים לתזמן עבורם צילומי מצב, אתם צריכים להשתמש במשימות נוספות של Cloud Scheduler.

  • ב-Cloud Shell, יוצרים קובץ חדש בשם request.json ועורכים את התוכן בהתאם לסביבה שלכם:

    {
                "retention_policy": "RETENTION_NAME",
                "instances": [
                    {"instance_path": "projects/PROJECT_ID/locations/GCP_REGION/instances/FILESTORE_INSTANCE_ID/",
                        "snapshots": NUMBER_OF_SNAPSHOTS
                    }
                ]
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • RETENTION_NAME: השם של סוג השמירה של קובץ ה-snapshot, שיהפוך לחלק משם ה-snapshot. לדוגמה, daily.
    • NUMBER_OF_SNAPSHOTS: מספר קובצי ה-snapshot.

שכפול המאגר

משכפלים את מאגר ה-Lab ומזינים את הספרייה:

  1. ב-Cloud Shell, משכפלים את מאגר הנתונים של המעבדה:

    git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-Scheduler
    

    הפלט אמור להיראות כך:

    Cloning into Filestore-Snapshot-Scheduler
    
  2. מזינים את הספרייה:

    cd Filestore-Snapshot-Scheduler
    

יצירת פונקציית Cloud Run

ב-Cloud Shell, יוצרים את הפתרון של פונקציית Cloud Run:

gcloud functions deploy $FUNCTION_NAME --region $GCP_REGION --runtime=python39 --trigger-http --source scheduler/ --timeout 540 --service-account $SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com --entry-point main --project $PROJECT_ID

לדוגמה:

gcloud functions deploy scheduler_func --region us-central1 --runtime=python39 --trigger-http --source scheduler/ --timeout 540 --service-account scheduler-sa@project1.iam.gserviceaccount.com --entry-point main --project project1

יצירת משימה ב-Cloud Scheduler

המשימה ב-Cloud Scheduler צריכה להיות באזור ששווה לאזור App Engine.

ב-Cloud Shell, יוצרים משימה של Cloud Scheduler עם מתזמן אחד או יותר באותו Filestore instance:

gcloud scheduler jobs create http $SCHEDULER_NAME --schedule "$SCHEDULER_EXPRESSION" --uri "https://$GCP_REGION-$PROJECT_ID.cloudfunctions.net/$FUNCTION_NAME"  --http-method POST --message-body-from-file ../request.json --oidc-service-account-email $SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com --time-zone $SCHEDULER_TZ --project $PROJECT_ID

בדוגמה הבאה, מתזמן הפעולות היומי פועל בשעה 20:00:

gcloud scheduler jobs create http daily_scheduler --schedule "0 20 * * *" --uri "https://us-central1-project1.cloudfunctions.net/scheduler_func"  --http-method POST --message-body-from-file ../request.json --oidc-service-account-email scheduler-sa@project1.iam.gserviceaccount.com --time-zone America/Los_angeles --project project1

אימות קובצי ה-snapshot המתוזמנים של Filestore

  1. נכנסים לדף Cloud scheduler במסוף Google Cloud .

    כניסה ל-Cloud Scheduler

  2. בשורה של העבודה שיצרתם, לוחצים על פעולות > הפעלת עבודה בכוח.

  3. לוחצים על רענון.

    • אם העבודה מופעלת בהצלחה, בעמודה Last run result (תוצאת ההפעלה האחרונה) מוצגת חותמת זמן של העבודה האחרונה שהושלמה בהצלחה.
    • אם העבודה נכשלת, מבצעים את הפעולות הבאות:

      1. נכנסים לדף Cloud Functions.

        כניסה לדף Cloud Functions

      2. בשורה של הפונקציה שיצרתם, לוחצים על פעולות > הצגת יומנים.

      3. מחפשים הודעת שגיאה ומבצעים את פעולות פתרון הבעיות בהתאם.

  4. נכנסים לדף Filestore instances במסוף Google Cloud .

  5. ברשימה Instances, בוחרים את המכונה ומוודאים שיש לה תמונת מצב בפורמט השם הבא:

    sched-RETENTION_NAME-DATE-TIME
    

    לדוגמה, sched-daily-20220315-120640.

הסרת המשאבים

הסרת המשאבים

כדי להימנע מחיובים בחשבון Cloud Platform בגלל השימוש במשאבים שנעשה במסגרת מדריך זה, צריך למחוק את הפרויקט שמכיל את המשאבים.

מחיקת הפרויקט

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

המאמרים הבאים