このページでは、タグを使用して Compute Engine インスタンスのバックアップを自動化する方法の概要について説明します。
新しい Compute Engine インスタンスのバックアップを構成する
Compute Engine インスタンスは、 Google Cloudでホストされる VM です。各インスタンスは、インスタンスにアタッチされた Persistent Disk にデータを保存します。 Google Cloud コンソール、Google Cloud CLI、または Compute Engine API を使用して、インスタンスを作成したり、マネージド インスタンスのグループを作成したりできます。
詳細については、Compute Engine をご覧ください。
バックアップの自動化の前提条件
Compute Engine インスタンスのバックアップの自動化を開始する前に、次の手順でバックアップの準備を行います。
Backup and DR サービスを設定してバックアップ プラン テンプレートを作成したら、タグを使用してバックアップ プラン テンプレートをインスタンスに適用し、Compute Engine インスタンスの保護を自動化できます。
権限
Compute Engine リソースのタグの定義を作成、更新、削除するには、Tag Administrator
ロールが必要です。tagUser
ロールの詳細については、必要な権限をご覧ください。
動的保護タグを管理する
動的保護タグを作成、更新、削除するには、次のいずれかのロールが必要です。
Backup and DR 管理者
Backup and DR バックアップ ユーザー
Backup and DR ユーザー V2
プロジェクト編集者
プロジェクト所有者
次の権限を含むカスタムロール。
必要な権限
backupdr.managementServers.listDynamicProtection
backupdr.managementServers.getDynamicProtection
backupdr.managementServers.createDynamicProtection
backupdr.managementServers.deleteDynamicProtection
compute.instances.listEffectiveTags
詳しくは、Backup and DR サービスのロールをご覧ください。
タグを使用してバックアップ プラン テンプレートを自動的に適用する
このセクションでは、タグを使用して Compute Engine インスタンスへのバックアップ プランの適用を自動化する方法について説明します。まず、管理コンソールでバックアップ プランとタグのマッピングを作成します。次に、管理コンソールで割り当てられた値を使用して、Identity and Access Management(IAM)でタグを作成します。
動的保護タグ値を作成する
Compute Engine インスタンスで使用できる動的保護タグ値を作成する手順は次のとおりです。
管理コンソールで [バックアップ プラン] プルダウン メニューをクリックし、[動的保護タグ] を選択します。
[Create Dynamic Protection Tag] をクリックします。
命名要件に従って、一意のタグ値を入力します。
[アプリケーションの種類] リストで、[Compute Engine] を選択します。
このタグ値に関連付ける対応するテンプレートとプロファイルを選択します。
[保存] をクリックします。動的保護タグ値が作成されます。
動的保護タグを作成する
次の手順で動的保護タグを作成し、Compute Engine インスタンスに適用して保護を自動化します。
タグの定義を作成、更新、削除するには、タグ管理者ロールか、特定の権限を含む別のロールが必要です。
Google Cloud コンソールで [タグ] ページを開きます。
ページの上部にあるスコープ選択ツールから、タグキーを作成する組織またはプロジェクトを選択します。
[
作成] をクリックします。[タグキー] ボックスに、タグキーとして
backupdr-dynamicprotect
を入力します。これは、自動化を成功させるために必須のステップです。スペルミスに注意し、ハイフンも必ず含めてください。省略可: [タグキーの説明] ボックスに、タグキーの説明を入力します。
[
値を追加] をクリックし、作成した各タグ値を入力します。
[タグ値] ボックスに、タグ値の表示名を入力します。これは、タグの名前空間名の一部になります。
[タグの値の説明] ボックスに、このタグ値に関連付けられているテンプレートとプロファイルの説明を入力します。
タグ値の追加が完了したら、[タグキーを作成] をクリックします。
リソースに動的保護タグを追加する
動的保護タグ値を作成して動的保護タグにリンクしたので、次のステップでは、Compute Engine インスタンスにタグを割り当てます。タグベースの保護は、インスタンスが論理グループ内で保護されている場合、機能しません。論理グループを削除して、動的保護を使用してみます。
始める前に、ロールの適切な権限を有効にして、次のいずれかのロールが割り当てられていることを確認します。
Backup and DR 管理者
Backup and DR バックアップ ユーザー
Backup and DR ユーザー V2
プロジェクト編集者
プロジェクト所有者
次の手順に沿って、動的保護タグを Compute Engine インスタンスに適用できます。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[名前] 列で、タグを追加する VM の名前をクリックします。
[VM インスタンス] の詳細ページで、次の手順を行います。
- [編集] をクリックします。
- [基本] セクションで [タグを管理] をクリックし、インスタンスに必要なタグを追加します。
backupdr-dynamicprotect:
キーと、 Google Cloud コンソールで設定したテンプレートとプロファイルにマッピングされる対応するタグ値を選択します。[保存] をクリックします。
リソースの作成時にリソースにタグを追加する
状況によっては、リソースの作成後ではなく、リソースの作成時にリソースにタグを付ける場合があります。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[インスタンスを作成] をクリックします。
[タグとラベルを管理] をクリックします。
[タグを追加] をクリックします。
サイドパネルの指示に沿って、インスタンスに追加する
backupdr-dynamicprotect
を選択します。[保存] をクリックします。
VM インスタンスの作成と起動の他の手順を完了して、インスタンスの作成を完了します。
Google Cloud CLI または API を使用するには、SDK のドキュメントに沿って次の操作を行います。
次の Terraform テンプレートを使用して、Dynamic Protection Tag の使用を開始します。このテンプレートは、 Google Cloud コンソールで動的保護タグキーをまだ作成していないことを前提としています。このテンプレートは、動的保護タグキーを設定します。テンプレートは、新しい Compute Engine インスタンスを作成し、それを動的保護タグにバインドします。スケジュールされた Dynamic Protection ジョブがローカル時間の午前 4 時または午後 4 時に実行されて有効になるまで待機するか、手動の自動保護を実行するの手順に沿って Dynamic Protection ジョブをオンデマンドで実行します。
variable "project_id" {
description = "The ID of the existing Google Cloud project"
type = string
}
variable "region" {
description = "The Google Cloud region where demo-instance should be created"
type = string
}
variable "zone" {
description = "The Google Cloud zone where demo-instance should be created"
type = string
}
provider "google" {
project = var.project_id
region = var.region
zone = var.zone
}
data "google_project" "project" {
project_id = var.project_id
}
# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_key
resource "google_tags_tag_key" "key" {
parent = "projects/${var.project_id}"
short_name = "backupdr-dynamicprotect"
description = "Tag key for Dynamic Protection."
}
# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_value
resource "google_tags_tag_value" "value" {
parent = "tagKeys/${google_tags_tag_key.key.name}"
short_name = "backupdr-gold" # This value should be present in the "Management Console UI" > "Backup Plans" > "Dynamic Protection Tags"
description = "Tag value for gold plan."
}
# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance
# Ensure not to define tag in "resource_manager_tags" block while creating VM instance. It'll destroy the VM
# when tag value is changed/removed later. Instead define a separate tag binding using "google_tags_tag_binding"
# or "google_tags_location_tag_binding" resource. It'll modify just tag binding and VM instance won't be affected.
resource "google_compute_instance" "vm_instance" {
name = "demo-instance"
machine_type = "e2-micro"
zone = var.zone
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral public IP
}
}
}
# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_tags_location_tag_binding
resource "google_tags_location_tag_binding" "binding" {
parent = "//compute.googleapis.com/projects/${data.google_project.project.number}/zones/${var.zone}/instances/${google_compute_instance.vm_instance.instance_id}"
tag_value = "tagValues/${google_tags_tag_value.value.name}"
location = var.zone
}
# Reference for Tag bindings at project/org level: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_binding
リソースからタグの適用を解除する
タグ バインディング リソースを削除すると、リソースからタグの適用を解除できます。
タグを取り外す方法については、Resource Manager ドキュメントのリソースのタグの取り外しをご覧ください。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
プロジェクトを選択し、[続行] をクリックします。
[名前] 列で、タグを追加する VM の名前をクリックします。
[VM インスタンス] の詳細ページで、次の手順を行います。
[編集] をクリックします。
[基本] セクションで [タグを管理] をクリックし、インスタンスの
backupdr-dynamicprotect
を削除します。[保存] をクリックします。
Google Cloud CLI を使用するには、ドキュメントの Google Cloud CLI を使用してリソースからタグを切断するの手順に沿って操作します。
手動自動保護を実行する
保護エンジンは毎日午前 4 時と午後 4 時(現地時間)に実行されますが、次のコマンド手順を使用して、動的保護エンジンをオンデマンドで実行することもできます。
管理コンソール エンドポイントを設定するには、「https://bmc-」で始まり「.com」で終わる値を入力します。例:
https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com
export MC_ENDPOINT="
MC_ENDPOINT_edited_value "ベアラートークンを生成します。
echo "Generating a new bearer token..." export BEARER_TOKEN=$(gcloud auth print-access-token) echo "Bearer token generated: BEARER_TOKEN=$BEARER_TOKEN"
新しいセッション ID を取得します。
echo "Generating a new session id..." export SESSION_RESPONSE=$(curl -XPOST -H "Authorization: Bearer $BEARER_TOKEN" -d {} "$MC_ENDPOINT/actifio/session" 2>&-) export SESSION_ID=$(echo $SESSION_RESPONSE | jq -r '.session_id') if [ -z ${SESSION_ID} ] then echo "Issue with generating a new session id. Response: $SESSION_RESPONSE"; return 1; fi echo "Session id generated: SESSION_ID=$SESSION_ID"
エンドポイントを設定し、ベアラートークンを生成してセッション ID を取得したら、セッション ID が期限切れになるまで 1 時間、動的保護ジョブをトリガーできます。
動的保護ジョブをトリガーする
動的保護ジョブは、すべての Compute Engine インスタンスを現在のタグで更新し、タグに基づいてバックアップ プランを割り当てます。トリガーされたジョブは、ワークロードの保留中の変更の数によっては数分かかることがあります。
echo "Triggering dynamic protection job.." curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPOST -d '{}' "$MC_ENDPOINT/actifio/dynamicprotection/job/gceinstance" echo "Dynamic protection job triggered."
Resource Manager で Dynamic Protection を使用する
Resource Manager で動的保護タグを使用すると、組織の上位レベルで Compute Engine インスタンスの保護を自動化できます。Resource Manager を使用して、プロジェクト レベル以上のリソースにタグを付け、すべてのリソースに保護が継承されるようにします。詳しくは、タグの継承をご覧ください。
手動保護を動的保護に移行する
すでに保護されているリソースを、タグを使用した動的保護に移行する場合は、プロジェクトで移行フラグを有効にする必要があります。移行を有効にすると、手動で保護されたインスタンスで動的保護を使用できるようになります。タグとリソースを追加すると、タグに基づいて自動的に保護され、既存の手動保護が削除されます。
次のコマンドを実行します。
管理コンソール エンドポイントを設定するには、「https://bmc-」で始まり「.com」で終わる値を入力します。例:
https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com
#!/bin/bash export MC_ENDPOINT="
MC_ENDPOINT_edited_value "移行を有効にします。
curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPATCH -d '{ "enableMigrationToTagBasedProtection":"true"}' "$MC_ENDPOINT/actifio/dynamicprotection/jobconfig"
手動で保護された Compute Engine インスタンスからタグベースの保護への移行を有効にするには、次の操作を行います。
- [タグベースの保護への移行を有効にする] をオンに切り替える
- [移行を有効にする] ダイアログで確認します。手動で保護された Compute Engine インスタンスは、VM で定義されたタグを使用して再保護されます。
手動で保護された Compute Engine インスタンスのタグベースの保護への移行を無効にするには、次の操作を行います。
- [タグベースの保護への移行を有効にする] をオフに切り替えます。
- [移行を無効にする] ダイアログで確認します。これにより、手動で保護された Compute Engine インスタンスからタグベースの保護への移行が無効になります。
アクティビティと通知
動的保護エンジンの実行後、モニタリング イベントで進行状況を確認できます。動的保護アクションを実行すると、管理コンソールに概要通知が届きます。ユーザーの操作が必要な場合は、エラー通知が送信されます。
ベスト プラクティス
動的保護を使用すると、実行されるバックアップ ジョブの数と使用されるストレージの量が増加する可能性があります。最良の結果を得るには、以下を検討してください。
バックアップ ウィンドウを長くします。6 ~ 10 時間のウィンドウを使用すると、すべてのジョブが完了するまで実行できます。
タグを設定する前に、アプライアンスのタイプを検討してください。最適な結果を得るには、タグ付けされたすべての Compute Engine インスタンスが、Compute Engine VM または SAP HANA データベース用のアプライアンス タイプ Standard で実行されているバックアップ/リカバリ アプライアンス上にあることを確認してください。
復元された VM には、ソース VM と同じ保護タグと同じバックアップ プランが引き継がれますが、保護タイプはタグベースの保護からユーザー開始型の保護に変わります。リソースは、移行されたバックアップ プランを使用して引き続き保護されます。保護タイプをタグベースの保護に戻すには、移行された保護バックアップ プランを削除して動的保護ジョブをオンデマンドでトリガーするか、次回のスケジュールされた実行を待機して、アプリケーションにタグベースの保護が再び割り当てられるようにします。
既存のホストまたは新しく作成されたホストにマウントされた VM には、ソース VM と同じ保護タグが引き継がれないため、マウント オペレーション後に自動的に保護されません。新しくマウントされた VM を保護する必要がある場合は、ソース VM と同様に新しい VM タグ バインディングに適用できます。