Dokumen ini ditujukan untuk pengambil keputusan IT, administrator pencadangan, dan administrator pemulihan dari bencana (DR) yang ingin mempelajari atau membuat snapshot Filestore terjadwal.
Tujuan
- Mengonfigurasi Cloud Functions dan file konfigurasi JSON.
- Buat tugas Cloud Scheduler.
- Membuat dan memberi label snapshot Filestore terjadwal.
- Memantau proses pembuatan snapshot.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.
Model deployment
Diagram berikut menunjukkan model deployment yang mendukung Cloud Functions snapshot Filestore.
Tugas Cloud Scheduler berkoordinasi dengan Cloud Functions untuk menjadwalkan dan menghasilkan snapshot dan file log Filestore. Snapshot tersedia dalam pembagian Filestore.
Batasan umum
Saat Anda bersiap untuk mengonfigurasi penjadwal snapshot untuk instance Filestore, pertimbangkan batasan berikut:
- Fungsi ini hanya menghapus satu snapshot saat diperlukan, meskipun ada lebih banyak snapshot penjadwal daripada yang ditentukan dalam file konfigurasi kebijakan retensi, atau jika file konfigurasi kebijakan retensi diupdate untuk menyimpan lebih sedikit snapshot daripada sebelumnya.
- Jika Anda mengurangi nilai numerik untuk
snapshots
dalam file konfigurasi JSON, snapshot redundan dari instance tidak otomatis dihapus. Jika setelan diubah, Anda perlu menghapus snapshot redundan secara manual. - Karena batas 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 Anda perlukan 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
: ID project Google Cloud tempat Anda ingin menginstal instance Filestore Enterprise, Cloud Function, dan penjadwal Cloud.GCP_REGION
: region Google Cloud tempat Anda ingin menginstal instance Filestore Enterprise, Cloud Function, dan Cloud Scheduler.APP_ENGINE_REGION
: region dari daftar lokasi App Engine tempat Anda ingin menginstal App Engine. Pertimbangkan persyaratan berikut:- Project Google Cloud hanya dapat memiliki satu instance App Engine, dan region App Engine tidak dapat diubah nanti.
- Tugas Cloud Scheduler dan instance App Engine harus berada di region yang sama.
- Misalnya, jika resource Cloud Scheduler menggunakan
us-central1
, gunakanus-central
yang setara dengan App Engine. - App Engine menerapkan konvensi penamaan unik untuk beberapa region. Untuk mengetahui detailnya, lihat Daftar lokasi App Engine.
- Misalnya, jika resource Cloud Scheduler menggunakan
FUNCTION_NAME
: nama yang ingin Anda berikan ke Cloud Function.SCHEDULER_NAME
: nama yang ingin Anda berikan ke Cloud Scheduler.SCHEDULER_EXPRESSION
: ekspresi cron Cloud Scheduler—misalnya,10 0 * * *
. Untuk informasi selengkapnya, lihat Mengonfigurasi jadwal cron job.SCHEDULER_TZ
: zona waktu Anda untuk Cloud Scheduler, dalam format nama dari daftar zona waktu database tz—misalnya,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 dapat digunakan untuk membuat dan mengelola tugas Cloud Function dan 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 informasi selengkapnya, lihat Izin IAM Filestore atau Izin IAM Cloud Functions.
Untuk membuat akun layanan, lakukan hal berikut:
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
Buat akun layanan:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
Ikat peran ke akun layanan:
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
Membuat instance Filestore Enterprise
Jika Anda belum membuat variabel lingkungan untuk instance Filestore Enterprise yang ingin Anda gunakan, 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 Filestore EnterpriseSHARE_NAME
: Nama berbagi instance Filestore EnterpriseNUMERIC_IN_GB
: ukuran berbagi instance Filestore Enterprise, angka antara 1024 dan 10240, dengan kelipatan 256VPC_NAME
: nama jaringan VPC tempat Anda ingin menginstal instance Filestore Enterprise
Jika 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 ENTERPRISE --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 Google Cloud. Dengan demikian, Anda dapat membuat tugas Cloud Scheduler nanti dalam tutorial ini.
Project Google Cloud hanya dapat memiliki satu App Engine, dan regionnya tidak dapat diubah nanti.
Jika Anda belum memilikinya, di Cloud Shell, buat App Engine:
gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
Membuat file konfigurasi JSON
Karena keterbatasan Cloud Functions, file konfigurasi JSON dapat memiliki hingga delapan instance Filestore. 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
, dan 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:
Di Cloud Shell, clone repositori lab:
git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-Scheduler
Outputnya mirip dengan hal berikut ini:
Cloning into Filestore-Snapshot-Scheduler
Masukkan direktori:
cd Filestore-Snapshot-Scheduler
Membuat Cloud Function
Di Cloud Shell, buat solusi Cloud Function:
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
Contoh:
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
Buat 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 pada 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.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.iam.gserviceaccount.com --time-zone America/Los_angeles --project project1
Memvalidasi snapshot Filestore terjadwal
Di konsol Google Cloud, buka halaman Cloud scheduler.
Di baris untuk tugas yang Anda buat, klik
Tindakan > Paksa tugas dijalankan.Klik Muat ulang.
- Jika tugas berhasil berjalan, kolom Last run result menampilkan stempel waktu tugas terakhir yang berhasil.
Jika tugas gagal, lakukan langkah berikut:
Buka halaman Cloud functions.
Di baris fungsi yang Anda buat, klik
Actions > View logs.Cari pesan error dan pecahkan masalah yang sesuai.
Di konsol Google Cloud, buka halaman Instance Filestore instances.
Dalam daftar Instances, pilih instance Anda dan pastikan instance memiliki snapshot dengan format nama berikut:
sched-RETENTION_NAME-DATE-TIME
Misalnya,
sched-daily-20220315-120640
.
Pembersihan
Agar tidak menimbulkan biaya pada akun Cloud Platform Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut.Menghapus project
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
- Pelajari Snapshot Filestore lebih lanjut.
- Pelajari Pencadangan filestore lebih lanjut.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.