Questo documento è rivolto ai responsabili delle decisioni IT, agli amministratori dei backup e agli amministratori del ripristino di emergenza (RE) che vogliono scoprire o creare snapshot di Filestore pianificati.
Obiettivi
- Configurare Cloud Run Functions e il file di configurazione JSON.
- Creare un job Cloud Scheduler.
- Creare e etichettare gli snapshot di Filestore pianificati.
- Monitorare 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.
Prima di iniziare
- Accedi al tuo Google Cloud account. 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 senza costi per l'esecuzione, il test e il deployment dei workload.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
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 theserviceusage.services.enablepermission. Learn how to grant roles.
Modello di deployment
Il seguente diagramma mostra il modello di deployment che supporta Cloud Run Functions per gli snapshot di Filestore.
Il job Cloud Scheduler coordina Cloud Run Functions per pianificare e generare snapshot di Filestore e file di log. Gli snapshot sono disponibili nella condivisione Filestore.
Limitazioni note
Quando ti prepari a configurare uno strumento di pianificazione degli 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 strumento di pianificazione di quelli definiti nel file di configurazione della policy di conservazione o se il file di configurazione della policy di conservazione viene aggiornato per conservare meno snapshot rispetto a prima.
- Se diminuisci il valore numerico di
snapshotsnel 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 policy di conservazione ha un limite di 50 caratteri.
prepara l'ambiente
In questa sezione, configurerai le variabili di ambiente, clonerai il repository e creerai 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_NAMESostituisci quanto segue:
PROJECT_ID: l'ID progetto in cui vuoi installare l'istanza Enterprise, la funzione Cloud Run, e Cloud Scheduler. Google CloudGCP_REGION: la Google Cloud regione in cui vuoi installare l'istanza Enterprise, Cloud Run Functions e Cloud Scheduler.APP_ENGINE_REGION: una regione dall'elenco delle località di App Engine in cui vuoi installare App Engine. Tieni presente i seguenti requisiti:- Un Google Cloud progetto può avere una sola istanza App Engine e la regione di App Engine non può essere modificata in un secondo momento.
- Il job Cloud Scheduler e l'istanza App Engine devono risiedere nella stessa regione.
- Ad esempio, se le risorse di Cloud Scheduler utilizzano
us-central1, utilizza l'equivalente di App Engineus-central. - App Engine applica una convenzione di denominazione univoca per alcune regioni. Per i dettagli, consulta l'elenco delle località di App Engine.
- Ad esempio, se le risorse di Cloud Scheduler utilizzano
FUNCTION_NAME: il nome che vuoi assegnare a Cloud Run Functions.SCHEDULER_NAME: il nome che vuoi assegnare a Cloud Scheduler.SCHEDULER_EXPRESSION: l'espressione cron di Cloud Scheduler, ad esempio10 0 * * *. Per saperne di più, consulta Configura le pianificazioni dei cron job.SCHEDULER_TZ: il fuso orario per Cloud Scheduler, nel formato del nome dall'elenco dei fusi orari del database tz, ad esempioAmerica/Los_Angeles.SERVICE_ACCOUNT_NAME: il nome del account di servizio appena creato, ad esempioscheduler-sa.
Crea un account di servizio
In questa sezione, creerai un account di servizio dedicato, che ti consentirà di creare e gestire Cloud Run Functions e il job Cloud Scheduler.
Quando esegui questa procedura, il account di servizio richiede le seguenti autorizzazioni:
file.instances.getfile.snapshots.listfile.snapshots.createfile.operations.getfile.snapshots.deletecloudfunctions.functions.invoke
Per saperne di più, consulta Autorizzazioni IAM di Filestore o Autorizzazioni IAM di Cloud Run Functions.
Per creare il account di servizio:
In Cloud Shell, crea un ruolo dedicato per lo strumento di pianificazione degli 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 GACrea l'account di servizio:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_IDAssocia 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
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_NAMESostituisci quanto segue:
FILESTORE_INSTANCE_ID: il nome dell'istanza EnterpriseSHARE_NAME: il nome della condivisione dell'istanza EnterpriseNUMERIC_IN_GB: le dimensioni della condivisione dell'istanza Enterprise, un numero compreso tra 1024 e 10240, con incrementi di 256VPC_NAME: il nome della rete VPC in cui vuoi installare l'istanza Enterprise
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ù, consulta Creazione di istanze.
Crea un'app App Engine
In questa sezione, creerai un'app App Engine per il tuo Google Cloud progetto. In questo modo, potrai creare un job Cloud Scheduler più avanti in questo tutorial.
Un Google Cloud progetto può avere una sola app App Engine e la regione non può essere modificata in un secondo momento.
Se non ne hai già una, in Cloud Shell crea un'app 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 job Cloud Scheduler aggiuntivi.
In Cloud Shell, crea un nuovo file denominato
request.jsone 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 degli snapshot, che diventa parte del nome dello snapshot, ad esempiodaily.NUMBER_OF_SNAPSHOTS: il numero di snapshot.
Clona il repository
Clona il repository del lab, quindi inserisci la directory:
In Cloud Shell, clona il repository del lab:
git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-SchedulerL'output è simile al seguente:
Cloning into Filestore-Snapshot-SchedulerInserisci la directory:
cd Filestore-Snapshot-Scheduler
Crea Cloud Run Functions
In Cloud Shell, crea la soluzione Cloud Run Functions:
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 alla regione di App Engine.
In Cloud Shell, crea un job Cloud Scheduler con uno o più strumenti di pianificazione 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 strumento di pianificazione 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 di Filestore pianificati
Nella Google Cloud console, vai alla pagina Cloud Scheduler.
Nella riga del job che hai creato, fai clic su Azioni > Forza esecuzione di un job.
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:
Vai alla pagina Cloud Functions.
Nella riga della funzione che hai creato, fai clic su Azioni > Visualizza log.
Cerca un messaggio di errore e risolvi il problema di conseguenza.
Nella Google Cloud console, vai alla pagina Istanze Filestore.
Nell'elenco Istanze, seleziona l'istanza e assicurati che abbia uno snapshot con il seguente formato del nome:
sched-RETENTION_NAME-DATE-TIMEAd esempio,
sched-daily-20220315-120640.
Libera spazio
Libera spazio
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
- Nella Google Cloud console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Scopri di più sugli snapshot di Filestore.
- Scopri di più sui backup di Filestore.
- Esplora architetture, diagrammi e best practice di riferimento su Google Cloud. Consulta il nostro Cloud Architecture Center.