Pianifica gli snapshot di Filestore Enterprise


Questo documento mostra come utilizzare Cloud Scheduler per pianificare e proteggere gli snapshot di Filestore.

Questo documento è rivolto ai responsabili delle decisioni IT, agli amministratori dei backup e agli amministratori del ripristino di emergenza (RE) che vogliono saperne di più o creare snapshot pianificati di Filestore.

Obiettivi

  • Configura le funzioni Cloud Run e il file di configurazione JSON.
  • Creare un job Cloud Scheduler.
  • Crea e etichetta gli snapshot pianificati di Filestore.
  • Monitora il processo di creazione dello snapshot.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi utenti di Google Cloud potrebbero avere diritto a una prova senza costi.

Al termine di questo tutorial, puoi evitare l'addebito di ulteriori costi eliminando le risorse create. Per ulteriori informazioni, vedi Pulizia.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  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 (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 (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

  8. Modello di deployment

    Il seguente diagramma mostra il modello di deployment che supporta le funzioni Cloud Run dello snapshot Filestore.

    Modello di deployment che supporta le funzioni Cloud Run per gli snapshot Filestore.

    Il job Cloud Scheduler si coordina con le funzioni Cloud Run per pianificare e generare snapshot e file di log di Filestore. Gli snapshot sono disponibili nella condivisione Filestore.

    Limitazioni note

    Quando ti prepari a configurare uno scheduler di snapshot per le istanze Filestore, tieni presente le seguenti limitazioni:

    • La funzione elimina un solo snapshot quando necessario, anche se sono presenti più snapshot dello scheduler di quelli definiti nel file di configurazione della norma di conservazione o se il file di configurazione della norma di conservazione viene aggiornato per conservare meno snapshot rispetto a prima.
    • Se diminuisci il valore numerico di snapshots nel file di configurazione JSON, gli snapshot ridondanti dell'istanza non vengono eliminati automaticamente. Se modifichi l'impostazione, devi eliminare manualmente gli snapshot ridondanti.
    • Poiché il limite per l'ID snapshot è di 75 caratteri, il nome della norma di conservazione ha un limite di 50 caratteri.

    prepara l'ambiente

    In questa sezione, configuri le variabili di ambiente, cloni il repository e crei le applicazioni e i file necessari per questo tutorial.

    Imposta le variabili di ambiente

    • In Cloud Shell, inserisci questo comando:
    gcloud components update
    
    • In Cloud Shell, crea le seguenti variabili:

      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
      

      Sostituisci quanto segue:

      • PROJECT_ID: l'ID progetto Google Cloud in cui vuoi installare l'istanza Enterprise, la funzione Cloud Run e Cloud Scheduler.
      • GCP_REGION: la Google Cloud regione in cui vuoi installare l'istanza enterprise, la funzione Cloud Run e Cloud Scheduler.
      • APP_ENGINE_REGION: una regione dell'elenco delle località di App Engine in cui vuoi installare App Engine. Tieni presente i seguenti requisiti:
        • Un progetto Google Cloud può avere una sola istanza App Engine e la regione App Engine non può essere modificata in un secondo momento.
        • Il job Cloud Scheduler e l'istanza App Engine devono trovarsi nella stessa regione.
          • Ad esempio, se le risorse Cloud Scheduler utilizzano us-central1, utilizza l'equivalente di App Engine us-central.
          • App Engine applica una convenzione di denominazione univoca per alcune regioni. Per maggiori dettagli, consulta l'elenco delle località di App Engine.
      • FUNCTION_NAME: il nome che vuoi assegnare alla funzione Cloud Run.
      • SCHEDULER_NAME: il nome che vuoi assegnare a Cloud Scheduler.
      • SCHEDULER_EXPRESSION: l'espressione cron di Cloud Scheduler, ad esempio 10 0 * * *. Per saperne di più, vedi Configurare le pianificazioni cron job.
      • SCHEDULER_TZ: il fuso orario per Cloud Scheduler, nel formato del nome dell'elenco dei fusi orari del database TZ, ad esempio America/Los_Angeles.
      • SERVICE_ACCOUNT_NAME: il nome del account di servizio appena creato, ad esempio scheduler-sa.

    Crea un account di servizio

    In questa sezione, crei un account di servizio dedicato, che ti consente di creare e gestire la funzione Cloud Run e il job Cloud Scheduler.

    Quando esegui questa procedura, il account di servizio richiede le seguenti autorizzazioni:

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

    Per saperne di più, consulta Autorizzazioni IAM di Filestore o Autorizzazioni IAM di Cloud Run Functions.

    Per creare il account di servizio:

    1. In Cloud Shell, crea un ruolo dedicato per lo scheduler di snapshot con le autorizzazioni richieste:

      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. Crea l'account di servizio:

      gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
      
    3. Associa il ruolo al account di servizio:

      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
      

    Crea un'istanza Enterprise

    1. Se non hai ancora creato variabili di ambiente per un'istanza enterprise che vuoi utilizzare, in Cloud Shell crea le seguenti variabili:

      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
      

      Sostituisci quanto segue:

      • FILESTORE_INSTANCE_ID: il nome dell'istanza enterprise
      • SHARE_NAME: il nome della condivisione dell'istanza enterprise
      • NUMERIC_IN_GB: la dimensione della condivisione dell'istanza aziendale, un numero compreso tra 1024 e 10240, con incrementi di 256
      • VPC_NAME: il nome della rete VPC in cui vuoi installare l'istanza enterprise
    2. Se non ne hai già una, crea un'istanza 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
      

    Per saperne di più, vedi Creazione di istanze.

    Crea un'app App Engine

    In questa sezione, creerai un'applicazione App Engine per il tuo progettoGoogle Cloud . In questo modo, potrai creare un job Cloud Scheduler più avanti in questo tutorial.

    Un progetto può avere un solo App Engine e la regione non può essere modificata in un secondo momento. Google Cloud

    • Se non ne hai già uno, in Cloud Shell crea un App Engine:

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

    Crea il file di configurazione JSON

    Il file di configurazione JSON può contenere fino a otto istanze Filestore a causa di una limitazione di Cloud Run Functions. Se hai più di otto istanze Filestore per cui pianificare gli snapshot, utilizza altri job Cloud Scheduler.

    • In Cloud Shell, crea un nuovo file denominato request.json e modifica il contenuto in base al tuo ambiente:

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

      Sostituisci quanto segue:

      • RETENTION_NAME: il nome del tipo di conservazione dello snapshot, che diventa parte del nome dello snapshot, ad esempio daily.
      • NUMBER_OF_SNAPSHOTS: il numero di snapshot.

    Clona il repository

    Clona il repository del lab, quindi inserisci la directory:

    1. In Cloud Shell, clona il repository del lab:

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

      L'output è simile al seguente:

      Cloning into Filestore-Snapshot-Scheduler
      
    2. Inserisci la directory:

      cd Filestore-Snapshot-Scheduler
      

    Crea la funzione Cloud Run

    In Cloud Shell, crea la soluzione di funzione 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
    

    Ad esempio:

    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
    

    Crea un job Cloud Scheduler

    Il job Cloud Scheduler deve trovarsi in una regione equivalente a quella di App Engine.

    In Cloud Shell, crea un job Cloud Scheduler con uno o più scheduler sulla stessa istanza Filestore:

    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
    

    Nell'esempio seguente, lo scheduler giornaliero viene eseguito alle 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
    

    Convalida gli snapshot Filestore pianificati

    1. Nella Google Cloud console, vai alla pagina Cloud Scheduler.

      Vai a Cloud Scheduler

    2. Nella riga del job che hai creato, fai clic su Azioni > Forza esecuzione di un job.

    3. Fai clic su Aggiorna.

      • Se il job viene eseguito correttamente, la colonna Risultato dell'ultima esecuzione mostra un timestamp dell'ultimo job riuscito.
      • Se il job non va a buon fine, procedi nel seguente modo:

        1. Vai alla pagina Cloud Functions.

          Vai a Cloud Functions

        2. Nella riga della funzione che hai creato, fai clic su Azioni > Visualizza log.

        3. Cerca un messaggio di errore e risolvi il problema di conseguenza.

    4. Nella console Google Cloud , vai alla pagina Istanze Filestore.

    5. Nell'elenco Istanze, seleziona la tua istanza e assicurati che abbia uno snapshot con il seguente formato del nome:

      sched-RETENTION_NAME-DATE-TIME
      

      Ad esempio, sched-daily-20220315-120640.

    Esegui la pulizia

    Esegui la pulizia

    Per evitare che al tuo account piattaforma Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse.

    Elimina il progetto

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Passaggi successivi