Dieses Dokument richtet sich an IT-Entscheider, Administratoren für die Sicherung und Administratoren für die Notfallwiederherstellung, die mehr über geplante Filestore-Snapshots erfahren oder diese erstellen möchten.
Lernziele
- Konfigurieren Sie Cloud Run-Funktionen und die JSON-Konfigurationsdatei.
- Cloud Scheduler-Job erstellen
- Geplante Filestore-Snapshots erstellen und beschriften
- Beobachten Sie den Vorgang zum Erstellen des Snapshots.
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.
Hinweise
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.
Bereitstellungsmodell
Das folgende Diagramm zeigt das Bereitstellungsmodell, das Cloud Run-Funktionen für Filestore-Snapshots unterstützt.
Der Cloud Scheduler-Job koordiniert sich mit Cloud Run-Funktionen, um Filestore-Snapshots und Protokolldateien zu planen und zu generieren. Die Snapshots sind in der Filestore-Freigabe verfügbar.
Bekannte Einschränkungen
Beachten Sie bei der Konfiguration eines Snapshot-Schedulers für Filestore-Instanzen die folgenden Einschränkungen:
- Die Funktion löscht bei Bedarf nur einen einzelnen Snapshot, auch wenn es mehr Scheduler-Snapshots gibt, als in der Konfigurationsdatei der Aufbewahrungsrichtlinie definiert sind, oder wenn die Konfigurationsdatei der Aufbewahrungsrichtlinie so aktualisiert wird, dass weniger Snapshots als zuvor aufbewahrt werden.
- Wenn Sie den numerischen Wert für
snapshots
in 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 die Snapshot-ID maximal 75 Zeichen lang sein darf, ist der Name der Aufbewahrungsrichtlinie auf 50 Zeichen begrenzt.
Umgebung vorbereiten
In diesem Abschnitt richten Sie die Umgebungsvariablen ein, 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_NAME
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Google Cloud-Projekts, in dem Sie die Filestore Enterprise-Instanz, die Cloud Run-Funktion und den Cloud-Scheduler installieren möchtenGCP_REGION
: Die Google Cloud-Region, in der Sie die Filestore Enterprise-Instanz, die Cloud Run-Funktion und Cloud Scheduler installieren möchten.APP_ENGINE_REGION
: Eine Region aus der Liste der App Engine-Standorte, an der Sie die App Engine installieren möchten. Beachten Sie dabei folgende 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 für Cloud Scheduler-Ressourcen beispielsweise
us-central1
verwendet wird, verwenden Sie das App Engine-Äquivalentus-central
. - Für einige Regionen gilt in der App Engine eine eindeutige Benennungskonvention. Weitere Informationen finden Sie in der Liste der App Engine-Standorte.
- Wenn für Cloud Scheduler-Ressourcen beispielsweise
FUNCTION_NAME
: Der Name, den Sie der Cloud Run-Funktion geben möchten.SCHEDULER_NAME
: Der Name, den Sie dem 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 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 spezielles Dienstkonto, mit dem Sie die Cloud Run-Funktion und den Cloud Scheduler-Job erstellen und verwalten können.
Für diese Vorgehensweise benötigt das Dienstkonto die folgenden Berechtigungen:
file.instances.get
file.snapshots.list
file.snapshots.create
file.operations.get
file.snapshots.delete
cloudfunctions.functions.invoke
Weitere Informationen finden Sie unter IAM-Berechtigungen für Filestore oder IAM-Berechtigungen für Cloud Run-Funktionen.
So erstellen Sie das Dienstkonto:
Erstellen Sie in Cloud Shell eine spezielle Rolle für den Snapshot-Scheduler 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 GA
Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
Binden 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
Filestore Enterprise-Instanz erstellen
Wenn Sie noch keine Umgebungsvariablen für eine Filestore Enterprise-Instanz 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_NAME
Ersetzen Sie Folgendes:
FILESTORE_INSTANCE_ID
: der Name der Filestore Enterprise-InstanzSHARE_NAME
: der Freigabename der Filestore Enterprise-InstanzNUMERIC_IN_GB
: Die Größe der Filestore Enterprise-Instanzfreigabe, eine Zahl zwischen 1.024 und 10.240 in Schritten von 256VPC_NAME
: Der Name des VPC-Netzwerk, in dem Sie die Filestore Enterprise-Instanz installieren möchten
Falls noch nicht geschehen, erstellen Sie eine Filestore-Instanz:
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
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.
Falls Sie noch keine App Engine haben, erstellen Sie in Cloud Shell eine:
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 für mehr als acht Filestore-Instanzen Snapshots planen möchten, verwenden Sie zusätzliche Cloud Scheduler-Jobs.
Erstellen Sie in Cloud Shell eine neue Datei mit dem Namen
request.json
und 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 den 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 rufen Sie das Verzeichnis auf:
Klonen Sie in Cloud Shell das Lab-Repository:
git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-Scheduler
Die Ausgabe sieht in etwa so aus:
Cloning into Filestore-Snapshot-Scheduler
Rufen Sie das Verzeichnis auf:
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 Schedulern 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 Zeitplaner 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
Rufen Sie in der Google Cloud Console die Seite Cloud Scheduler auf.
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 wird, wird in der Spalte Ergebnis der letzten Ausführung ein Zeitstempel des letzten erfolgreichen Jobs angezeigt.
Wenn der Job fehlschlägt, gehen Sie so vor:
Rufen Sie die Seite Cloud Functions auf.
Klicken Sie in der Zeile der von Ihnen erstellten Funktion auf
Aktionen > Protokolle ansehen.Suchen Sie nach einer Fehlermeldung und beheben Sie den Fehler entsprechend.
Rufen Sie in der Google Cloud Console die Seite Filestore-Instanzen auf.
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-TIME
Beispiel:
sched-daily-20220315-120640
.
Bereinigen
Löschen Sie das Projekt, das die Ressourcen enthält, um zu vermeiden, dass Ihrem Cloud Platform-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden.Projekt löschen
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Weitere Informationen zu Filestore-Snapshots
- Weitere Informationen zu Filestore-Sicherungen
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center