このドキュメントは、スケジュールされた Filestore スナップショットについて学習または作成する IT 意思決定者、バックアップ管理者、障害復旧(DR)管理者を対象としています。
目標
- Cloud Run functions と JSON 構成ファイルを構成します。
- Cloud Scheduler ジョブを作成する。
- スケジュールされた Filestore スナップショットを作成してラベルを付けます。
- スナップショット作成プロセスをモニタリングします。
料金
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- 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.
デプロイモデル
次の図は、Filestore スナップショットの Cloud Run 関数をサポートするデプロイモデルを示しています。
Cloud Scheduler ジョブは Cloud Run 関数と連携して、Filestore スナップショットとログファイルをスケジュール設定し、生成します。スナップショットは Filestore 共有で使用できます。
既知の制限事項
Filestore インスタンスのスナップショット スケジューラを構成する際に、次の制限事項を考慮してください。
- この関数は、保持ポリシーの構成ファイルで定義した数よりも多いスケジューラ スナップショットがある場合や、保持ポリシーのスナップショット構成ファイルが以前よりも少ないスナップショットを保持するよう更新されても、必要に応じて単一のスナップショットのみを削除します。
- JSON 構成ファイルで
snapshots
の数値を減らしても、インスタンスの冗長なスナップショットは自動的に削除されません。設定を変更する場合は、冗長なスナップショットを手動で削除する必要があります。 - スナップショット ID の上限が 75 文字であるため、保持ポリシー名は 50 文字が上限です。
環境を準備する
このセクションでは、環境変数を設定し、リポジトリのクローンを作成して、このチュートリアルに必要なアプリケーションとファイルを作成します。
環境変数を設定する
- Cloud Shell で次のコマンドを入力します。
gcloud components update
Cloud Shell で、次の変数を作成します。
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
次のように置き換えます。
PROJECT_ID
: Filestore Enterprise インスタンス、Cloud Run 関数、Cloud スケジューラをインストールする Google Cloud プロジェクト ID。GCP_REGION
: Filestore Enterprise インスタンス、Cloud Run 関数、Cloud Scheduler をインストールする Google Cloud リージョン。APP_ENGINE_REGION
: App Engine をインストールする App Engine ロケーション リスト内のリージョン。次の要件を考慮してください。- Google Cloud プロジェクトには App Engine インスタンスを 1 つだけ配置できます。App Engine のリージョンは後で変更できません。
- Cloud Scheduler ジョブと App Engine インスタンスは同じリージョンに存在する必要があります。
- たとえば、Cloud Scheduler リソースで
us-central1
を使用している場合は、App Engine でもus-central
を使用します。 - App Engine は、一部のリージョンに対して一意の命名規則が適用されます。詳細については、App Engine のロケーションの一覧をご覧ください。
- たとえば、Cloud Scheduler リソースで
FUNCTION_NAME
: Cloud Run 関数に付ける名前。SCHEDULER_NAME
: Cloud Scheduler に付ける名前。SCHEDULER_EXPRESSION
: Cloud Scheduler の cron 式(例:10 0 * * *
)。詳細については、cron ジョブ スケジュールの構成をご覧ください。SCHEDULER_TZ
: Cloud Scheduler のタイムゾーン。tz database のタイムゾーンのリストの名前形式(例:America/Los_Angeles
)。SERVICE_ACCOUNT_NAME
: 新しく作成されたサービス アカウント名(例:scheduler-sa
)。
サービス アカウントを作成する
このセクションでは、専用のサービス アカウントを作成します。このアカウントを使用して、Cloud Run 関数と Cloud Scheduler のジョブを作成、管理できます。
この手順を行うには、サービス アカウントに次の権限が必要です。
file.instances.get
file.snapshots.list
file.snapshots.create
file.operations.get
file.snapshots.delete
cloudfunctions.functions.invoke
詳細については、Filestore IAM 権限または Cloud Run 関数の IAM 権限をご覧ください。
サービス アカウントを作成するには、次の手順を行います。
Cloud Shell で、必要な権限を持つスナップショット スケジューラ専用のロールを作成します。
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
サービス アカウントを作成します。
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
サービス アカウントにロールをバインドします。
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 インスタンスを作成する
使用する Filestore Enterprise インスタンスの環境変数をまだ作成していない場合は、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
以下を置き換えます。
FILESTORE_INSTANCE_ID
: Filestore Enterprise インスタンス名SHARE_NAME
: Filestore Enterprise インスタンスの共有名NUMERIC_IN_GB
: Filestore Enterprise インスタンスの共有サイズ(1024 ~ 10240 の数値で256 単位で増やす)。VPC_NAME
: Filestore Enterprise インスタンスをインストールする VPC ネットワーク名
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
詳細については、インスタンスの作成をご覧ください。
App Engine を作成する
このセクションでは、Google Cloud プロジェクトの App Engine を作成します。これにより、このチュートリアルの後半で Cloud Scheduler ジョブを作成できます。
Google Cloud プロジェクトには App Engine を 1 つだけ配置できます。リージョンは後で変更できません。
App Engine をまだ作成していない場合は、Cloud Shell で作成します。
gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
JSON 構成ファイルを作成する
Cloud Run 関数の制限により、JSON 構成ファイルには最大 8 つの Filestore インスタンスを指定できます。スナップショットのスケジュールを設定する Filestore インスタンスが 8 つ以上ある場合は、追加の Cloud Scheduler ジョブを使用します。
Cloud Shell で
request.json
という名前の新しいファイルを作成し、環境に応じて内容を編集します。{ "retention_policy": "RETENTION_NAME", "instances": [ {"instance_path": "projects/PROJECT_ID/locations/GCP_REGION/instances/FILESTORE_INSTANCE_ID/", "snapshots": NUMBER_OF_SNAPSHOTS } ] }
以下を置き換えます。
RETENTION_NAME
: スナップショット保持タイプの名前。スナップショット名の一部になります(例:daily
)。NUMBER_OF_SNAPSHOTS
: スナップショットの数。
リポジトリのクローンを作成する
ラボのリポジトリのクローンを作成して、ディレクトリに移動します。
Cloud Shell でラボ リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-Scheduler
出力は次のようになります。
Cloning into Filestore-Snapshot-Scheduler
ディレクトリに移動します。
cd Filestore-Snapshot-Scheduler
Cloud Run 関数を作成する
Cloud Shell で、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.iam.gserviceaccount.com --entry-point main --project $PROJECT_ID
次に例を示します。
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 ジョブを作成する
Cloud Scheduler ジョブは、App Engine のリージョンと同じリージョンに存在する必要があります。
Cloud Shell で、同じ Filestore インスタンスに 1 つ以上のスケジューラを持つ Cloud Scheduler ジョブを作成します。
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
次の例では、スケジューラは毎日午後 8 時に実行されます。
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
スケジュールされた Filestore スナップショットを検証する
Google Cloud コンソールで、[Cloud Scheduler] ページに移動します。
作成したジョブの行で、
[アクション] > [ジョブ実行を強制] をクリックします。[更新] をクリックします。
- ジョブが正常に実行されると、[前回の実行結果] 列に、最後に成功したジョブのタイムスタンプが表示されます。
ジョブが失敗した場合は、次の操作を行います。
[Cloud Functions] ページに移動します。
作成した関数の行で、
[アクション] > [ログを表示] をクリックします。エラー メッセージを確認し、それに応じてトラブルシューティングを行います。
Google Cloud コンソールで、[Filestore インスタンス] ページに移動します。
[インスタンス] リストでインスタンスを選択し、次の形式の名前のシャドウコピーがあることを確認します。
sched-RETENTION_NAME-DATE-TIME
例:
sched-daily-20220315-120640
クリーンアップ
このチュートリアルで使用したリソースに対して Cloud Platform アカウントで課金されないようにするには、リソースを含むプロジェクトを削除します。プロジェクトを削除する
- 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.
次のステップ
- Filestore のスナップショットの詳細を確認する。
- Filestore のバックアップについて学ぶ。
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud Architecture Center を確認する。