Filestore Enterprise-Snapshots planen


In diesem Dokument erfahren Sie, wie Sie mit Cloud Scheduler zum Schutz von Filestore-Snapshots.

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

  • Cloud Run-Funktionen und die JSON-Konfigurationsdatei konfigurieren
  • Cloud Scheduler-Job erstellen
  • Geplante Filestore-Snapshots erstellen und labeln
  • Überwachen Sie die Snapshot-Erstellung.

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.

Nach Abschluss dieser Anleitung können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen

Hinweise

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

Bereitstellungsmodell

Das folgende Diagramm zeigt das Bereitstellungsmodell, das Cloud Run-Funktionen für Filestore-Snapshots.

Bereitstellungsmodell, das Cloud Run-Funktionen mit Filestore-Snapshots unterstützt.

Der Cloud Scheduler-Job wird mit Cloud Run-Funktionen koordiniert, um Filestore-Snapshots und Logdateien planen und 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 nur einen einzelnen Snapshot bei Bedarf, selbst wenn sind mehr Planer-Snapshots als in der Aufbewahrungsrichtlinie definiert oder wenn die Konfigurationsdatei für die Aufbewahrungsrichtlinie aktualisiert, um weniger Snapshots als zuvor zu behalten.
  • Wenn Sie den numerischen Wert für snapshots in der JSON-Konfigurationsdatei sind die redundanten Snapshots der Instanz nicht automatisch gelöscht. Wenn Sie diese Einstellung ändern, müssen Sie redundante Snapshots manuell erstellen.
  • 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 Ihre Umgebungsvariablen ein, klonen das Repository, und erstellen Sie 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öchten
    • GCP_REGION: die Google Cloud-Region, in der Sie die Filestore Enterprise-Instanz installieren möchten, Cloud Run-Funktion und Cloud Scheduler.
    • 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-Äquivalent us-central.
        • App Engine wendet für einige Regionen eine eindeutige Namenskonvention an. Weitere Informationen finden Sie in der App Engine-Standortliste.
    • FUNCTION_NAME: Der Name, den Sie der Cloud Run-Funktion geben möchten.
    • SCHEDULER_NAME: der Name, den Sie dem Ereignis geben möchten Cloud Scheduler
    • 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 dediziertes Dienstkonto, mit dem Sie und die Cloud Run-Funktion und den Cloud Scheduler-Job verwalten.

In diesem Fall benötigt das Dienstkonto Folgendes: 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:

  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. 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 Enterprise-Instanz, die Sie verwenden möchten, in 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: die Filestore Enterprise-Instanz Name
    • SHARE_NAME: der Freigabename der Filestore Enterprise-Instanz
    • NUMERIC_IN_GB: die Filestore Enterprise-Instanzfreigabe Größe, eine Zahl zwischen 1024 und 10240, in Schritten von 256
    • VPC_NAME: Der Name des VPC-Netzwerks, in dem Sie die Filestore Enterprise-Instanz 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. 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 keines haben, erstellen Sie in Cloud Shell eine App Engine:

    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 mehr als acht Filestore-Instanzen, für die Snapshots geplant werden, verwenden Sie zusätzliche Cloud Scheduler-Jobs.

  • Erstellen Sie in Cloud Shell eine neue Datei mit dem Namen request.json und bearbeiten Sie die Inhalte an Ihre 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 des Snapshots 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:

  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 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 Planer 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

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

    Zu Cloud Scheduler

  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 für den letzten erfolgreichen Job angezeigt.
    • Wenn der Job fehlschlägt, gehen Sie so vor:

      1. Rufen Sie die Seite Cloud Functions auf.

        Zu Cloud Functions

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

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

  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 prüfen Sie, ob sie einen Snapshot mit dem folgenden Namensformat hat:

    sched-RETENTION_NAME-DATE-TIME
    

    Beispiel: sched-daily-20220315-120640.

Bereinigen

Um zu vermeiden, dass Ihrem Cloud Platform-Konto die Ressourcen in Rechnung gestellt werden Löschen Sie das in dieser Anleitung verwendete Projekt, das die Ressourcen enthält.

Projekt löschen

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte