Dieses Dokument richtet sich an IT-Entscheidungsträger, Backup-Administratoren und Administratoren für die Notfallwiederherstellung, die mehr über geplante Filestore-Snapshots erfahren oder solche erstellen möchten.
Ziele
- Cloud Run-Funktionen und die JSON-Konfigurationsdatei konfigurieren.
- Cloud Scheduler-Job erstellen.
- Geplante Filestore-Snapshots erstellen und kennzeichnen.
- Erstellung von Snapshots überwachen.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Verwenden Sie den Preisrechner.
Hinweis
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto bei Google Cloudhaben, erstellen Sie eines, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
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.
Bereitstellungsmodell
Das folgende Diagramm zeigt das Bereitstellungsmodell, das Cloud Run-Funktionen für Filestore-Snapshots unterstützt.
Der Cloud Scheduler-Job wird mit Cloud Run-Funktionen koordiniert, um Filestore-Snapshots und Logdateien zu planen und zu erstellen. Die Snapshots sind in der Filestore-Freigabe verfügbar.
Bekannte Einschränkungen
Beachten Sie bei der Konfiguration eines Snapshot-Planers für Filestore-Instanzen die folgenden Einschränkungen:
- Die Funktion löscht bei Bedarf nur einen Snapshot, auch wenn mehr Planer-Snapshots vorhanden sind als in der Konfigurationsdatei für die Aufbewahrungsrichtlinie definiert oder wenn die Konfigurationsdatei für die Aufbewahrungsrichtlinie aktualisiert wird, um weniger Snapshots als zuvor aufzubewahren.
- Wenn Sie den numerischen Wert für
snapshotsin der JSON-Konfigurationsdatei verringern, werden die redundanten Snapshots aus der Instanz nicht automatisch gelöscht. Wenn Sie die Einstellung ändern, müssen Sie redundante Snapshots manuell löschen. - Da das Limit für die Snapshot-ID 75 Zeichen beträgt, ist der Name der Aufbewahrungsrichtlinie auf 50 Zeichen begrenzt.
Umgebung vorbereiten
In diesem Abschnitt legen Sie die Umgebungsvariablen fest, klonen das Repository und erstellen die Anwendungen und Dateien, die Sie für diese Anleitung benötigen.
Umgebungsvariablen festlegen
- Geben Sie dafür in Cloud Shell den folgenden Befehl ein:
gcloud components update
Erstellen Sie in Cloud Shell die folgenden Variablen:
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_NAMEErsetzen Sie Folgendes:
PROJECT_ID: die Google Cloud Projekt-ID, in der Sie die Unternehmensinstanz, die Cloud Run-Funktion und Cloud Scheduler installieren möchten.GCP_REGION: dieregion, in der Sie die Unternehmensinstanz, die Cloud Run-Funktion und Cloud Scheduler installieren möchten. Google CloudAPP_ENGINE_REGION: eine Region aus der Liste der App Engine-Standorte, in der Sie App Engine installieren möchten. Beachten Sie die folgenden Anforderungen:- Ein Google Cloud Projekt kann nur eine App Engine-Instanz haben und die App Engine-Region kann später nicht mehr geändert werden.
- Der Cloud Scheduler-Job und die App Engine-Instanz müssen sich in derselben Region befinden.
- Wenn Cloud Scheduler-Ressourcen beispielsweise
us-central1verwenden, verwenden Sie das App Engine-Äquivalentus-central. - App Engine verwendet für einige Regionen eine eindeutige Namenskonvention. Weitere Informationen finden Sie in der Liste der App Engine-Standorte.
- Wenn Cloud Scheduler-Ressourcen beispielsweise
FUNCTION_NAME: der Name, den Sie der Cloud Run-Funktion geben möchten.SCHEDULER_NAME: der Name, den Sie Cloud Scheduler geben möchten.SCHEDULER_EXPRESSION: der Cloud Scheduler-Cron-Ausdruck, z. B.10 0 * * *. Weitere Informationen finden Sie unter Zeitpläne für Cronjobs konfigurieren.SCHEDULER_TZ: Ihre Zeitzone für den Cloud Scheduler im Namensformat aus der Liste der Zeitzonen der tz-Datenbank, z. B.America/Los_Angeles.SERVICE_ACCOUNT_NAME: der Name des neu erstellten Dienstkontos, z. B.scheduler-sa.
Dienstkonto erstellen
In diesem Abschnitt erstellen Sie ein dediziertes Dienstkonto, mit dem Sie die Cloud Run-Funktion und den Cloud Scheduler-Job erstellen und verwalten können.
Bei dieser Vorgehensweise benötigt das Dienstkonto die folgenden Berechtigungen:
file.instances.getfile.snapshots.listfile.snapshots.createfile.operations.getfile.snapshots.deletecloudfunctions.functions.invoke
Weitere Informationen finden Sie unter Filestore-IAM-Berechtigungen oder Cloud Run-Funktionen-IAM-Berechtigungen.
So erstellen Sie das Dienstkonto:
Erstellen Sie in Cloud Shell eine dedizierte Rolle für den Snapshot-Planer mit den erforderlichen Berechtigungen:
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 GAErstellen Sie das Dienstkonto:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_IDBinden Sie die Rolle an das Dienstkonto:
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
Unternehmensinstanz erstellen
Wenn Sie noch keine Umgebungsvariablen für eine Unternehmensinstanz erstellt haben, die Sie verwenden möchten, erstellen Sie in Cloud Shell die folgenden Variablen:
export FILESTORE_INSTANCE_ID=FILESTORE_INSTANCE_ID export FILESTORE_SHARE_NAME=SHARE_NAME export FILESTORE_SHARE_SIZE=NUMERIC_IN_GB export NETWORK_NAME=VPC_NAMEErsetzen Sie Folgendes:
FILESTORE_INSTANCE_ID: der Name der UnternehmensinstanzSHARE_NAME: der Name der Freigabe der UnternehmensinstanzNUMERIC_IN_GB: die Größe der Freigabe der Unternehmensinstanz, eine Zahl zwischen 1024 und 10240 in Schritten von 256VPC_NAME: der Name des VPC-Netzwerk, in dem Sie die Unternehmensinstanz installieren möchten
Wenn Sie noch keine Filestore-Instanz haben, erstellen Sie eine:
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
Weitere Informationen finden Sie unter Instanzen erstellen.
App Engine erstellen
In diesem Abschnitt erstellen Sie eine App Engine für Ihr Google Cloud Projekt. So können Sie später in dieser Anleitung einen Cloud Scheduler-Job erstellen.
Ein Google Cloud Projekt kann nur eine App Engine haben und die Region kann später nicht mehr geändert werden.
Wenn Sie noch keine App Engine haben, erstellen Sie eine in Cloud Shell:
gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
JSON-Konfigurationsdatei erstellen
Die JSON-Konfigurationsdatei kann aufgrund einer Einschränkung von Cloud Run-Funktionen bis zu acht Filestore-Instanzen enthalten. Wenn Sie Snapshots für mehr als acht Filestore-Instanzen planen möchten, verwenden Sie zusätzliche Cloud Scheduler-Jobs.
Erstellen Sie in Cloud Shell eine neue Datei mit dem Namen
request.jsonund bearbeiten Sie den Inhalt entsprechend Ihrer Umgebung:{ "retention_policy": "RETENTION_NAME", "instances": [ {"instance_path": "projects/PROJECT_ID/locations/GCP_REGION/instances/FILESTORE_INSTANCE_ID/", "snapshots": NUMBER_OF_SNAPSHOTS } ] }Ersetzen Sie Folgendes:
RETENTION_NAME: der Name für Ihren Snapshot-Aufbewahrungstyp, der Teil des Snapshot-Namens wird, z. B.daily.NUMBER_OF_SNAPSHOTS: die Anzahl der Snapshots.
Repository klonen
Klonen Sie das Lab-Repository und wechseln Sie dann in das Verzeichnis:
Klonen Sie in Cloud Shell das Lab-Repository:
git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-SchedulerDie Ausgabe sieht etwa so aus:
Cloning into Filestore-Snapshot-SchedulerWechseln Sie in das Verzeichnis:
cd Filestore-Snapshot-Scheduler
Cloud Run-Funktion erstellen
Erstellen Sie in Cloud Shell die Cloud Run-Funktionslösung:
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
Beispiel:
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-Job erstellen
Der Cloud Scheduler-Job muss sich in einer Region befinden, die der App Engine-Region entspricht.
Erstellen Sie in Cloud Shell einen Cloud Scheduler-Job mit einem oder mehreren Planern in derselben Filestore-Instanz:
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
Im folgenden Beispiel wird der tägliche Planer um 20:00 Uhr ausgeführt:
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
Geplante Filestore-Snapshots validieren
Wechseln Sie in der Google Cloud Console zur Seite Cloud Scheduler.
Klicken Sie in der Zeile des von Ihnen erstellten Jobs auf Aktionen > Jobausführung erzwingen.
Klicken Sie auf Aktualisieren.
- Wenn der Job erfolgreich ausgeführt wurde, wird in der Spalte Letztes Ausführungsergebnis ein Zeitstempel des letzten erfolgreichen Jobs angezeigt.
Wenn der Job fehlschlägt, gehen Sie so vor:
Wechseln Sie zur Seite Cloud Functions.
Klicken Sie in der Zeile der von Ihnen erstellten Funktion auf Aktionen > Logs ansehen.
Suchen Sie nach einer Fehlermeldung und beheben Sie das Problem entsprechend.
Wechseln Sie in der Google Cloud Console zur Seite Filestore-Instanzen.
Wählen Sie in der Liste Instanzen Ihre Instanz aus und prüfen Sie, ob sie einen Snapshot mit dem folgenden Namensformat hat:
sched-RETENTION_NAME-DATE-TIMEBeispiel:
sched-daily-20220315-120640.
Bereinigen
Bereinigen
Löschen Sie das Projekt, das die Ressourcen enthält, damit Ihrem Cloud Platform-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden.
Projekt löschen
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
Nächste Schritte
- Weitere Informationen zu Filestore-Snapshots.
- Weitere Informationen zu Filestore-Backups.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center