Questo documento è destinato ai responsabili delle decisioni IT, agli amministratori di backup e agli amministratori di ripristino di emergenza (RE) che vogliono saperne di più o creare snapshot di Filestore pianificati.
Obiettivi
- Configura Cloud Functions e il file di configurazione JSON.
- Creare un job Cloud Scheduler.
- Crea ed etichetta gli snapshot di Filestore pianificati.
- Monitora il processo di creazione degli snapshot.
Costi
In questo documento, utilizzi 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 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.
Modello di deployment
Il seguente diagramma mostra il modello di deployment che supporta le funzioni Cloud Functions per snapshot di Filestore.
Il job Cloud Scheduler si coordina con Cloud 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 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 rispetto a quelli definiti nel file di configurazione dei criteri di conservazione o se il file di configurazione dei criteri di conservazione viene aggiornato per conservare un numero inferiore di 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 del criterio di conservazione ha un limite di 50 caratteri.
prepara l'ambiente
In questa sezione imposterai 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_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 Google Cloud in cui vuoi installare l'istanza Filestore Enterprise, 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 la regione di App Engine non può essere modificata in un secondo momento.
- Il job Cloud Scheduler e l'istanza di App Engine devono trovarsi nella stessa regione.
- Ad esempio, se le risorse Cloud Scheduler utilizzano
us-central1
, utilizza l'equivalenteus-central
di App Engine. - App Engine applica una convenzione di denominazione univoca per alcune regioni. Per maggiori dettagli, vedi Elenco delle località di App Engine.
- Ad esempio, se le risorse Cloud Scheduler utilizzano
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 esempio10 0 * * *
. Per ulteriori informazioni, consulta Configurare le pianificazioni dei cron job.SCHEDULER_TZ
: il tuo fuso orario per Cloud Scheduler, nel formato del nome incluso nell'elenco dei fusi orari del database tz, ad esempioAmerica/Los_Angeles
.SERVICE_ACCOUNT_NAME
: il nome dell'account di servizio appena creato, ad esempioscheduler-sa
.
Crea un account di servizio
In questa sezione creerai un account di servizio dedicato, che ti consente di creare e gestire il job della Cloud Function e del job 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, segui questi passaggi:
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 GA
Crea l'account di servizio:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
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 Filestore Enterprise
Se non hai già creato le variabili di ambiente per l'istanza di Filestore Enterprise che vuoi utilizzare, crea le seguenti variabili in 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
Sostituisci quanto segue:
FILESTORE_INSTANCE_ID
: nome dell'istanza Filestore EnterpriseSHARE_NAME
: nome della condivisione dell'istanza Filestore EnterpriseNUMERIC_IN_GB
: la dimensione di condivisione dell'istanza Filestore Enterprise, un numero compreso tra 1024 e 10.240, in incrementi di 256VPC_NAME
: il nome della rete VPC in cui vuoi installare l'istanza Filestore Enterprise
Se non ne hai già una, crea un'istanza di 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 sezione Creazione di istanze.
Crea un App Engine
In questa sezione creerai un App Engine per il tuo progetto Google Cloud. Ciò consente di creare un job Cloud Scheduler più avanti in questo tutorial.
Un progetto Google Cloud può avere un solo App Engine e la regione non può essere modificata in un secondo momento.
Se non ne hai già uno, crea un App Engine in Cloud Shell:
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 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 esempiodaily
.NUMBER_OF_SNAPSHOTS
: il numero di snapshot.
clona il repository
Clona il repository del lab, quindi accedi alla directory:
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
Inserisci la directory:
cd Filestore-Snapshot-Scheduler
Crea la Cloud Function
In Cloud Shell, crea la soluzione della funzione Cloud 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 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 di Filestore pianificati
Nella console Google Cloud, vai alla pagina Cloud scheduler.
Nella riga relativa al 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 ultima esecuzione mostra il timestamp dell'ultimo job riuscito.
Se il job non riesce:
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 i problemi di conseguenza.
Nella console Google Cloud, 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-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 le contiene.Elimina il progetto
- Nella console Google Cloud, 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 del 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 le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Visita il nostro Cloud Architecture Center.