コンテンツに移動
デベロッパー

Cloud Bigtable バックアップのスケジュール設定

2021年5月25日
Google Cloud Japan Team

※この投稿は米国時間 2021 年 5 月 6 日に、Google Cloud blog に投稿されたものの抄訳です。

Cloud Bigtable バックアップを使用すると、テーブルのスキーマとデータのコピーを保存しておき、後でバックアップから新しいテーブルに復元できます。このチュートリアルでは、サンプルの Cloud Bigtable スケジュール バックアップを使用して、定期的(毎日、毎週など)にバックアップを作成する方法を学習します。

このサンプルでは、Cloud Scheduler を使用して、バックアップ作成リクエストを Pub/Sub メッセージとして定期的に送信します。Pub/Sub メッセージによって Cloud Functions の関数がトリガーされ、その関数が Cloud Bigtable Java クライアント ライブラリを使用してバックアップを開始します。この関数は、Cloud Functions でサポートされているものであれば、どのようなクライアントにも適用できます。

このソリューションでは、次の Google Cloud サービスを使用します。

  • Cloud Scheduler。cron を用いたスケジュールでタスクをトリガーします。

  • Cloud Pub/Sub。Cloud Scheduler から Cloud Functions にメッセージ リクエストを渡します。

  • Cloud Functions。Cloud Bigtable のバックアップの作成操作を開始します。

  • Cloud Logging。ログベースの指標を作成します。

  • Cloud Monitoring。ログベースの指標の条件に基づいてアラートを作成します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image3_hOYgV5N.max-800x800.max-800x800.png
システム アーキテクチャ

費用

このチュートリアルでは、以下に掲載したものをはじめとする Google Cloud の課金対象となるコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

はじめに

チュートリアルを開始する前に、次のことを確認してください。

API と IAM ロールの設定

下の図は、人のロールと API 間のアクション フローに焦点を当てています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image7_nk3FLBI.max-1500x1500.max-1500x1500.png

管理者の IAM ロール

ソリューションに必要なサービスをデプロイするための特定のロールが管理者に付与されている必要があります。

ロール

目的

roles/bigtable.admin

Cloud Bigtable 管理者

roles/cloudfunctions.admin

Cloud Functions のデプロイと管理

roles/deploymentmanager.editor

モニタリング指標のデプロイ

roles/pubsub.editor

Pub/Sub トピックの作成と管理

roles/cloudscheduler.admin

Cloud Scheduler でのスケジュールの設定

roles/appengine.appAdmin

cron サービスをデプロイするための Cloud Scheduler の使用

roles/monitoring.admin

障害通知のアラート ポリシーの設定

roles/logging.admin

障害をトラッキングするためのログベースのユーザー指標の追加

管理者には、以下の権限を持つカスタムロールも割り当てる必要があります。

  • appengine.applications.create - Cloud Scheduler での App Engine アプリの作成

  • serviceusage.services.use - Cloud Scheduler での App Engine アプリの使用

Cloud Functions のサービス アカウント

Cloud Functions が、バックアップを作成するための Cloud Bigtable API を呼び出し、Pub/Sub トピックにメッセージが届くと Cloud Functions の関数がトリガーされます。これが正常に機能するには、この関数が Pub/Sub トピックからメッセージを受信して処理できること、および Cloud Bigtable バックアップの作成権限を持っていることが必要です。これを実現するために、次の手順を踏みます。

  1. サービス アカウント(cbt-scheduled-backups@iam.gserviceaccount.com など)を作成します。

  2. 以下の権限を持つカスタムロールを作成します。

    • bigtable.backups.create

    • bigtable.backups.delete

    • bigtable.backups.get

    • bigtable.backups.list

    • bigtable.backups.restore

    • bigtable.backups.update

    • bigtable.instances.get

    • bigtable.tables.create

    • bigtable.tables.readRows


3. 作成したカスタムロールと roles/pubsub.subscriber をサービス アカウントに割り当てます。これにより、Cloud Functions は、Pub/Sub トピックからのメッセージを読み取り、`create backup` リクエストを開始できるようになります。


4. ロール roles/iam.serviceAccountUser を持つサービス アカウントのメンバーとして管理者を追加します。これにより、管理者は Cloud Functions をデプロイできるようになります。

スケジュール バックアップの作成

Pub/Sub トピックを作成する

Cloud Scheduler ジョブのターゲットとして機能し、Cloud Functions の関数をトリガーする Cloud Pub/Sub トピック cloud-bigtable-scheduled-backups を作成します。たとえば次のようにします。

gcloud pubsub topics create cloud-bigtable-scheduled-backups --project <project-id>

次に、Pub/Sub UI に移動して、新規作成したトピックが表示されていることを確認します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image10_WCxLKcs.max-900x900.max-900x900.png


Cloud Functions に関数をデプロイする

Cloud Functions の関数 cbt-create-backup-function を作成してデプロイします。これは、Pub/Sub メッセージが cloud-bigtable-scheduled-backups トピックに届くと呼び出されます。スクリプト scheduled_backups.sh 内の関数 deploy-backup-function が、gcloud 関数をラップしてこれを行います。

./scripts/scheduled_backups.sh deploy-backup-function

Cloud Functions UI に移動して、この関数が表示されていることを確認します。この関数は、Pub/Sub トピック cloud-bigtable-scheduled-backups にサブスクライブします。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_W4icAzu.max-600x600.max-600x600.png

Cloud Scheduler を使用したスケジュール済みジョブのデプロイ

注: Cloud Scheduler を使用するには、App Engine アプリを作成する必要があります。これは、次のステップの前に明示的に行うことも、次のステップの実行中に間接的に行うこともできます。

ここでは、スケジュール バックアップ構成を Cloud Scheduler にデプロイします。この構成には、cron ジョブの時間スケジュール、Pub/Sub トピックの名前とメッセージが含まれます。これもスクリプト内の関数によってラップされます。構成設定はプロパティ ファイルで指定できます。

./scripts/scheduled_backups.sh create-schedule

Cloud Scheduler UI にこのジョブが表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image2_NBfFzEc.max-500x500.max-500x500.png

バックアップ失敗のメール通知

バックアップの作成に失敗したときにメール通知を受け取るには、次の手順を踏みます。

1.こちらのガイドに沿って、メールアドレスを通知チャネルとして追加します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image4_UaCLUcl.max-1900x1900.max-1800x1800.png

2. Cloud Functions、Cloud Scheduler、Cloud Bigtable で生成されたログをフィルタするためのカスタム指標構成ファイルを作成してデプロイします。ここでは、Deployment Manager を使用してカスタム指標を作成します。サンプルのファイルは、./config/metrics.yaml にあります。カスタム指標を Cloud Logging にデプロイします。

./scripts/scheduled_backups.sh add-metrics

これを行った後、Cloud Logging の [ログベースの指標] に 2 つのユーザー定義の指標が表示されていることを確認してください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image9_jeyJAxA.max-2000x2000.max-2000x2000.png

3. そこから、ターゲット指標に対して sum や mean などの Aggregator を選択し、アラートをトリガーする条件を定義できます。たとえば以下のように選択可能です。

  • Condition triggers if: Any time series violates

  • Condition: is above

  • Threshold: 0

For: 1 minute

https://storage.googleapis.com/gweb-cloudblog-publish/images/image5_KelDPD7.max-2000x2000.max-2000x2000.png

4. 先ほど作成した通知チャネルをアラート ポリシーに追加します。条件からの逸脱が起こるたびに、メール通知が送信されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image6_hahrP6E.max-1500x1500.max-1500x1500.png

考慮事項

Cloud Scheduler を使用するには、App Engine アプリを作成する必要があります。App Engine アプリのゾーンは、一度設定すると変更できません。Cloud Scheduler ジョブは、App Engine アプリと同じゾーンで実行する必要があります。

詳細

-Cloud Bigtable 担当ソフトウェア エンジニア Tracy Cui

-Google Cloud クラウド データ エンジニア Jordan Hambleton
投稿先