Menjadwalkan snapshot Filestore Enterprise

Dokumen ini menunjukkan cara menggunakan Cloud Scheduler untuk menjadwalkan dan membantu Anda melindungi snapshot Filestore.

Dokumen ini ditujukan untuk pengambil keputusan IT, administrator cadangan, dan administrator pemulihan dari bencana (DR) yang ingin mempelajari atau membuat snapshot Filestore terjadwal.

Tujuan

  • Mengonfigurasi fungsi Cloud Run dan file konfigurasi JSON.
  • Membuat tugas Cloud Scheduler.
  • Membuat dan memberi label snapshot Filestore terjadwal.
  • Memantau proses pembuatan snapshot.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen yang dapat ditagih berikut Cloud de Confiance by S3NS:

Setelah menyelesaikan tutorial ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk informasi selengkapnya, lihat Membersihkan.

Sebelum memulai

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Model deployment

Diagram berikut menunjukkan model deployment yang mendukung fungsi Cloud Run snapshot Filestore.

Model deployment yang mendukung fungsi Cloud Run snapshot Filestore.

Tugas Cloud Scheduler berkoordinasi dengan fungsi Cloud Run untuk menjadwalkan dan membuat snapshot Filestore dan file log. Snapshot tersedia di share Filestore.

Batasan umum

Saat Anda bersiap mengonfigurasi penjadwal snapshot untuk instance Filestore, pertimbangkan batasan berikut:

  • Fungsi ini hanya menghapus satu snapshot jika diperlukan, meskipun ada lebih banyak snapshot penjadwal daripada yang ditentukan dalam file konfigurasi kebijakan retensi, atau jika file konfigurasi kebijakan retensi diperbarui untuk menyimpan lebih sedikit snapshot daripada sebelumnya.
  • Jika Anda mengurangi nilai numerik untuk snapshots dalam file konfigurasi JSON, snapshot berlebihan dari instance tidak akan otomatis dihapus. Jika Anda mengubah setelan, Anda harus menghapus snapshot berlebihan secara manual.
  • Karena batas untuk ID snapshot adalah 75 karakter, nama kebijakan retensi memiliki batas 50 karakter.

Menyiapkan lingkungan Anda

Di bagian ini, Anda akan menyiapkan variabel lingkungan, meng-clone repositori, serta membuat aplikasi dan file yang diperlukan untuk tutorial ini.

Menetapkan variabel lingkungan

  • Di Cloud Shell, masukkan perintah berikut:
gcloud components update
  • Di Cloud Shell, buat variabel berikut:

    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
    

    Ganti kode berikut:

    • PROJECT_ID: project ID tempat Anda ingin menginstal instance perusahaan, fungsi Cloud Run, dan Cloud Scheduler. Cloud de Confiance
    • GCP_REGION: Cloud de Confiance region tempat Anda ingin menginstal instance perusahaan, fungsi Cloud Run, dan Cloud Scheduler.
    • APP_ENGINE_REGION: region dari daftar lokasi App Engine tempat Anda ingin menginstal App Engine. Pertimbangkan persyaratan berikut:
      • Project hanya dapat memiliki satu instance App Engine, dan region App Engine tidak dapat diubah nanti. Cloud de Confiance
      • Tugas Cloud Scheduler dan instance App Engine harus berada di region yang sama.
        • Misalnya, jika resource Cloud Scheduler menggunakan us-central1, gunakan us-central yang setara dengan App Engine.
        • App Engine menerapkan konvensi penamaan unik untuk beberapa region. Untuk mengetahui detailnya, lihat daftar lokasi App Engine.
    • FUNCTION_NAME: nama yang ingin Anda berikan ke fungsi Cloud Run.
    • SCHEDULER_NAME: nama yang ingin Anda berikan ke Cloud Scheduler.
    • SCHEDULER_EXPRESSION: ekspresi cron Cloud Scheduler, misalnya, 10 0 * * *. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi jadwal cron job.
    • SCHEDULER_TZ: zona waktu Anda untuk Cloud Scheduler, no formato de nome da lista de fusos horários do banco de dados tz—por exemplo, America/Los_Angeles.
    • SERVICE_ACCOUNT_NAME: nama akun layanan yang baru dibuat, misalnya, scheduler-sa.

Membuat akun layanan

Di bagian ini, Anda akan membuat akun layanan khusus, yang memungkinkan Anda membuat dan mengelola fungsi Cloud Run dan tugas Cloud Scheduler.

Saat Anda melakukan prosedur ini, akun layanan memerlukan izin berikut:

  • file.instances.get
  • file.snapshots.list
  • file.snapshots.create
  • file.operations.get
  • file.snapshots.delete
  • cloudfunctions.functions.invoke

Untuk mengetahui informasi selengkapnya, lihat Izin IAM Filestore atau Izin IAM fungsi Cloud Run.

Untuk membuat akun layanan, lakukan hal berikut:

  1. Di Cloud Shell, buat peran khusus untuk penjadwal snapshot dengan izin yang diperlukan:

    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. Buat akun layanan:

    gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
    
  3. Ikat peran ke akun layanan:

    gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.s3ns.iam.gserviceaccount.com --role projects/$PROJECT_ID/roles/snapshot_scheduler
    

Membuat instance perusahaan

  1. Jika Anda belum membuat variabel lingkungan untuk instance perusahaan yang ingin digunakan, buat variabel berikut di 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
    

    Ganti kode berikut:

    • FILESTORE_INSTANCE_ID: nama instance perusahaan
    • SHARE_NAME: nama share instance perusahaan
    • NUMERIC_IN_GB: ukuran share instance perusahaan, angka antara 1024 dan 10240, dengan kelipatan 256
    • VPC_NAME: nama jaringan VPC tempat Anda ingin menginstal instance perusahaan
  2. Jika Anda belum memilikinya, buat instance Filestore:

    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
    

Untuk mengetahui informasi selengkapnya, baca bagian Membuat instance.

Membuat App Engine

Di bagian ini, Anda akan membuat App Engine untuk project Anda.Cloud de Confiance Hal ini memungkinkan Anda membuat tugas Cloud Scheduler nanti dalam tutorial ini.

Project hanya dapat memiliki satu App Engine, dan region tidak dapat diubah nanti. Cloud de Confiance

  • Jika Anda belum memilikinya, buat App Engine di Cloud Shell:

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

Membuat file konfigurasi JSON

File konfigurasi JSON dapat memiliki hingga delapan instance Filestore, karena batasan fungsi Cloud Run. Jika Anda memiliki lebih dari delapan instance Filestore untuk menjadwalkan snapshot, gunakan tugas Cloud Scheduler tambahan.

  • Di Cloud Shell, buat file baru bernama request.json, lalu edit kontennya sesuai dengan lingkungan Anda:

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

    Ganti kode berikut:

    • RETENTION_NAME: nama untuk jenis retensi snapshot Anda, yang menjadi bagian dari nama snapshot, misalnya, daily.
    • NUMBER_OF_SNAPSHOTS: jumlah snapshot.

Membuat cloning repositori

Buat clone repositori lab, lalu masukkan direktori:

  1. Di Cloud Shell, buat clone repositori lab:

    git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-Scheduler
    

    Outputnya mirip dengan hal berikut ini:

    Cloning into Filestore-Snapshot-Scheduler
    
  2. Masukkan direktori:

    cd Filestore-Snapshot-Scheduler
    

Membuat fungsi Cloud Run

Di Cloud Shell, buat solusi fungsi Cloud Run:

gcloud functions deploy $FUNCTION_NAME --region $GCP_REGION --runtime=python39 --trigger-http --source scheduler/ --timeout 540 --service-account $SERVICE_ACCOUNT_NAME@$PROJECT_ID.s3ns.iam.gserviceaccount.com --entry-point main --project $PROJECT_ID

Contoh:

gcloud functions deploy scheduler_func --region us-central1 --runtime=python39 --trigger-http --source scheduler/ --timeout 540 --service-account scheduler-sa@project1.s3ns.iam.gserviceaccount.com --entry-point main --project project1

Membuat tugas Cloud Scheduler

Tugas Cloud Scheduler harus berada di region yang setara dengan region App Engine.

Di Cloud Shell, buat tugas Cloud Scheduler dengan satu atau beberapa penjadwal di instance Filestore yang sama:

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.s3ns.iam.gserviceaccount.com --time-zone $SCHEDULER_TZ --project $PROJECT_ID

Pada contoh berikut, penjadwal harian berjalan pada pukul 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.s3ns.iam.gserviceaccount.com --time-zone America/Los_angeles --project project1

Memvalidasi snapshot Filestore terjadwal

  1. Di Cloud de Confiance konsol, buka halaman Cloud scheduler.

    Buka Cloud scheduler

  2. Di baris untuk tugas yang Anda buat, klik Tindakan > Paksa tugas dijalankan.

  3. Klik Muat ulang.

    • Jika tugas berhasil dijalankan, kolom Hasil terakhir dijalankan akan menampilkan stempel waktu tugas terakhir yang berhasil.
    • Jika tugas gagal, lakukan hal berikut:

      1. Buka halaman Cloud functions.

        Buka Cloud functions

      2. Di baris fungsi yang Anda buat, klik Tindakan > Lihat log.

      3. Cari pesan error dan lakukan pemecahan masalah yang sesuai.

  4. Di Cloud de Confiance konsol, buka halaman Filestore instances.

  5. Di daftar Instances, pilih instance Anda dan pastikan instance tersebut memiliki snapshot dengan format nama berikut:

    sched-RETENTION_NAME-DATE-TIME
    

    Misalnya, sched-daily-20220315-120640.

Membersihkan

Membersihkan

Untuk menghindari biaya pada akun Cloud Platform Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut.

Menghapus project

  1. Di Cloud de Confiance konsol, buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah berikutnya