Filestore Enterprise-Snapshots planen


In diesem Dokument erfahren Sie, wie Sie mit Cloud Scheduler Snapshots erstellen und schützen.

Dieses Dokument richtet sich an IT-Entscheidungsträger, Sicherungsadministratoren und Administratoren für die Notfallwiederherstellung (Disaster Recovery, DR), die mehr über geplante Filestore-Snapshots erfahren oder diese erstellen möchten.

Lernziele

  • Cloud Functions und die JSON-Konfigurationsdatei konfigurieren.
  • einen Cloud Scheduler-Job erstellen
  • Geplante Filestore-Snapshots erstellen und mit Labels versehen
  • Überwachen Sie den Snapshot-Erstellungsprozess.

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. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Wenn Sie diese Anleitung abgeschlossen haben, können Sie Gebühren vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweis

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, 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.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs aktivieren.

    Aktivieren Sie die APIs

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  6. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  7. Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs aktivieren.

    Aktivieren Sie die APIs

Bereitstellungsmodell

Das folgende Diagramm zeigt das Bereitstellungsmodell, das Cloud Functions-Snapshots von Cloud Functions unterstützt.

Bereitstellungsmodell, das Cloud Functions-Snapshots von Filestore unterstützt.

Der Cloud Scheduler-Job koordiniert mit Cloud Functions die Planung und Generierung von Filestore-Snapshots und Logdateien. Die Snapshots sind in der Filestore-Freigabe verfügbar.

Bekannte Einschränkungen

Beachten Sie beim Konfigurieren eines Snapshot-Planers für Filestore-Instanzen folgende Einschränkungen:

  • Die Funktion löscht bei Bedarf nur einen einzigen Snapshot, selbst wenn mehr Planer-Snapshots vorhanden sind, als in der Konfigurationsdatei für die Aufbewahrungsrichtlinie definiert, oder wenn die Konfigurationsdatei der Aufbewahrungsrichtlinie aktualisiert wird, um weniger Snapshots als zuvor zu behalten.
  • Wenn Sie den numerischen Wert für snapshots in der JSON-Konfigurationsdatei verringern, werden die redundanten Snapshots 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 ist, ist der Name der Aufbewahrungsrichtlinie auf 50 Zeichen begrenzt.

Umgebung vorbereiten

In diesem Abschnitt richten Sie Ihre 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
    

    Dabei gilt:

    • PROJECT_ID: Die Google Cloud-Projekt-ID, in der Sie die Filestore-Unternehmensinstanz, Cloud Function und den Cloud-Planer installieren möchten.
    • GCP_REGION: Die Google Cloud-Region, in der Sie die Filestore-Instanz, Cloud Function und Cloud Scheduler installieren möchten.
    • APP_ENGINE_REGION: eine Region aus der App Engine-Standortliste, in der App Engine installiert werden soll Beachten Sie die folgenden Anforderungen:
      • Ein Google Cloud-Projekt kann nur eine einzige 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-central1 verwenden, verwenden Sie die App Engine-Entsprechung us-central.
        • In App Engine gilt für einige Regionen eine eindeutige Namenskonvention. Weitere Informationen finden Sie in der Liste der App Engine-Standorte.
    • FUNCTION_NAME ist der Name, den Sie der Cloud Functions-Funktion zuweisen möchten.
    • SCHEDULER_NAME ist der Name, den Sie Cloud Scheduler zuweisen möchten.
    • SCHEDULER_EXPRESSION: der Cro Scheduler-Ausdruck von Cloud Scheduler, z. B. 10 0 * * *. Weitere Informationen finden Sie unter Zeitpläne für Cronjobs konfigurieren.
    • SCHEDULER_TZ ist Ihre Zeitzone für Cloud Scheduler im Namensformat aus der Liste der Zeitzonen in 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 Functions-Funktion und den Cloud Scheduler-Job erstellen und verwalten können.

Dabei 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 Functions.

So erstellen Sie das Dienstkonto:

  1. 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 GA
    
  2. Erstellen Sie das Dienstkonto:

    gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
    
  3. So 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

  1. Wenn Sie noch keine Umgebungsvariablen für eine Filestore-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_NAME
    

    Dabei gilt:

    • FILESTORE_INSTANCE_ID ist der Name der Filestore-Unternehmensinstanz.
    • SHARE_NAME: Name der Filestore-Instanzinstanz
    • NUMERIC_IN_GB: Die gemeinsame Freigabegröße der Filestore-Instanz, eine Zahl zwischen 1.024 und 10.240, in Schritten von 256
    • VPC_NAME: der Name des VPC-Netzwerk, in dem Sie die Filestore-Unternehmensinstanz installieren möchten
  2. Erstellen Sie eine Filestore-Instanz, wenn Sie noch keine haben:

    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. Dadurch können Sie später in dieser Anleitung einen Cloud Scheduler-Job erstellen.

Ein Google Cloud-Projekt kann nur eine einzige App Engine haben und die Region kann später nicht mehr geändert werden.

  • Erstellen Sie in Cloud Shell eine App Engine, falls noch keine vorhanden ist:

    gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
    

JSON-Konfigurationsdatei erstellen

Die JSON-Konfigurationsdatei kann aufgrund einer Cloud Functions-Beschränkung bis zu acht Filestore-Instanzen haben. Wenn Sie mehr als acht Filestore-Instanzen zum Planen von Snapshots haben, 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 gemäß Ihrer Umgebung:

    {
                "retention_policy": "RETENTION_NAME",
                "instances": [
                    {"instance_path": "projects/PROJECT_ID/locations/GCP_REGION/instances/FILESTORE_INSTANCE_ID/",
                        "snapshots": NUMBER_OF_SNAPSHOTS
                    }
                ]
    }
    

    Dabei gilt:

    • RETENTION_NAME ist der Name des Snapshot-Aufbewahrungstyps, der Teil des Snapshot-Namens wird, z. B. daily.
    • NUMBER_OF_SNAPSHOTS: die Anzahl der Snapshots.

Repository klonen

Klonen Sie das Lab-Repository und geben Sie dann das Verzeichnis ein:

  1. 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
    
  2. Geben Sie das Verzeichnis ein:

    cd Filestore-Snapshot-Scheduler
    

Cloud Functions-Funktion erstellen

Erstellen Sie in Cloud Shell Cloud Function-Lö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 auf 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 "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

Geplante Filestore-Snapshots validieren

  1. Rufen Sie in der Google Cloud Console die Seite Cloud-Planer auf.

    Zum Cloud-Planer

  2. Klicken Sie in der Zeile des von Ihnen erstellten Jobs auf Aktionen > Jobausführung erzwingen.

  3. Klicken Sie auf Aktualisieren.

    • Wenn der Job erfolgreich ausgeführt wurde, 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:

      1. Rufen Sie die Seite Cloud Functions-Funktionen auf.

        Zu den Cloud Functions-Funktionen

      2. Klicken Sie in der Zeile der von Ihnen erstellten Funktion auf Aktionen > Logs ansehen.

      3. Suchen Sie nach einer Fehlermeldung und beheben Sie das Problem.

  4. Rufen Sie in der Google Cloud Console die Seite Filestore-Instanzen auf.

  5. Wählen Sie in der Liste Instanzen Ihre Instanz aus und achten Sie darauf, dass ein Snapshot mit dem folgenden Namensformat vorhanden ist:

    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

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte