Pianifica gli snapshot di Filestore Enterprise


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

Questo documento è destinato a responsabili delle decisioni IT, amministratori di backup e amministratori di ripristino di emergenza (RE) che vogliono informazioni o creare snapshot Filestore pianificati.

Obiettivi

  • Configura Cloud Functions e il file di configurazione JSON.
  • Creare un job Cloud Scheduler.
  • Crea ed etichetta gli snapshot Filestore pianificati.
  • Monitora il processo di creazione degli 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 possono essere idonei a una prova senza costi aggiuntivi.

Al termine di questo tutorial, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.

    Abilita le API

  5. Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Abilita le API Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.

    Abilita le API

Modello di deployment

Il seguente diagramma mostra il modello di deployment che supporta Cloud Functions snapshot di Filestore.

Modello di deployment che supporta Cloud Functions con snapshot di Filestore.

Il job Cloud Scheduler si coordina con Cloud Functions per pianificare e generare snapshot e file di log 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:

  • Quando è necessario, la funzione elimina un solo snapshot, anche se sono presenti più snapshot dello scheduler rispetto al file di configurazione del criterio di conservazione o se il file di configurazione del criterio di conservazione viene aggiornato in modo da conservare meno snapshot rispetto a prima.
  • Se diminuisci il valore numerico per snapshots nel file di configurazione JSON, gli snapshot ridondanti dall'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 del criterio di conservazione ha un limite di 50 caratteri.

prepara l'ambiente

In questa sezione dovrai configurare le variabili di ambiente, clonare il repository e creare 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 Filestore Enterprise, la funzione Cloud Function e lo scheduler Cloud.
    • GCP_REGION: la regione di Google Cloud in cui vuoi installare l'istanza Filestore Enterprise, la funzione Cloud Function e Cloud Scheduler.
    • APP_ENGINE_REGION: una regione dall'elenco delle località di App Engine in cui vuoi installare App Engine. Considera i seguenti requisiti:
      • Un progetto Google Cloud può avere una sola istanza di App Engine e l'area geografica di App Engine non può essere modificata in un secondo momento.
      • Il job Cloud Scheduler e l'istanza App Engine devono risiedere nella stessa area geografica.
        • Ad esempio, se le risorse Cloud Scheduler utilizzano us-central1, utilizza l'equivalente us-central di App Engine.
        • App Engine applica una convenzione di denominazione univoca per alcune regioni. Per i dettagli, consulta l'elenco delle località di App Engine.
    • FUNCTION_NAME: il nome che vuoi assegnare alla Cloud Function.
    • SCHEDULER_NAME: il nome che vuoi assegnare a Cloud Scheduler.
    • SCHEDULER_EXPRESSION: l'espressione cron di Cloud Scheduler, ad esempio 10 0 * * *. Per ulteriori informazioni, consulta la pagina Configurare le pianificazioni dei cron job.
    • SCHEDULER_TZ: il tuo fuso orario per Cloud Scheduler, nel formato del nome dell'elenco dei fusi orari dei database tz, ad esempio America/Los_Angeles.
    • SERVICE_ACCOUNT_NAME: il nome dell'account di servizio appena creato, ad esempio scheduler-sa.

Crea un account di servizio

In questa sezione creerai un account di servizio dedicato, che ti consentirà di creare e gestire il job Cloud Function e Cloud Scheduler.

Quando esegui questa procedura, l'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 ulteriori informazioni, consulta Autorizzazioni IAM di Filestore o Autorizzazioni IAM di Cloud Functions.

Per creare l'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 all'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 di Filestore Enterprise

  1. Se non hai ancora creato variabili di ambiente per un'istanza Filestore da 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 Filestore Enterprise
    • SHARE_NAME: il nome della condivisione dell'istanza di Filestore Enterprise
    • NUMERIC_IN_GB: la dimensione della condivisione dell'istanza di Filestore Enterprise, un numero compreso tra 1024 e 10240, con incrementi di 256
    • VPC_NAME: il nome della rete VPC dove vuoi installare l'istanza Filestore
  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 ENTERPRISE --project=$PROJECT_ID --location=$GCP_REGION
    

Per ulteriori informazioni, consulta la pagina Creazione di istanze.

Crea un App Engine

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

Un progetto Google Cloud può avere un solo App Engine e l'area geografica non può essere modificata in un secondo momento.

  • 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ò avere fino a otto istanze Filestore, a causa di una limitazione di Cloud Functions. Se hai più di otto istanze Filestore per pianificare gli snapshot, utilizza job Cloud Scheduler aggiuntivi.

  • In Cloud Shell, crea un nuovo file denominato request.json e modifica i contenuti in base all'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: 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 Cloud Function

In Cloud Shell, crea la soluzione Cloud Function:

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 essere in una regione equivalente all'area geografica di App Engine.

In Cloud Shell, crea un job Cloud Scheduler con uno o più scheduler nella 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 "20 0 * * *" --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

Convalidare gli snapshot Filestore pianificati

  1. Nella console Google Cloud, 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 con l'ultimo job riuscito.
    • Se il job non riesce, procedi nel seguente modo:

      1. Vai alla pagina Cloud Functions.

        Vai alle funzioni Cloud Functions

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

      3. Cerca un messaggio di errore e risolvi i problemi di conseguenza.

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

  5. Nell'elenco Istanze, seleziona l'istanza e assicurati che abbia una istantanea con il seguente formato del nome:

    sched-RETENTION_NAME-DATE-TIME

    Ad esempio, sched-daily-20220315-120640.

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. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi