ステートフル ディスクを使用して MIG を作成する


このドキュメントでは、マネージド インスタンス グループ(MIG)を作成する方法について説明します。MIG は、その MIG 内の VM が自動修復、更新、再作成されるなど、VM が再作成された場合でも、その MIG 内のすべての VM について、指定されたデバイス名のディスクにデータを保持します。ディスクの保持は、データベースやレガシー アプリケーションなどの特定のワークロードに役立ちます。

グループ内のすべての VM のディスクを保持するだけでなく、ステートフル MIG を次のように構成することもできます。

  • インスタンス固有のディスクを追加および保持できます。
  • インスタンス固有のメタデータを追加および保持できます。
  • IP アドレスを追加、保持できます。

詳細については、ステートフル MIG の概要をご覧ください。

MIG を作成するための基本的なシナリオもご覧ください。

始める前に

  • インスタンス テンプレートを作成します。マネージド インスタンス グループを作成するために必要です。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    Terraform

    このページの Terraform サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。

    1. Google Cloud CLI をインストールします。
    2. gcloud CLI を初期化するには:

      gcloud init
    3. Google アカウントのローカル認証情報を作成します。

      gcloud auth application-default login

    詳細については、 ローカル開発環境の認証の設定 をご覧ください。

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

制限事項

ステートフル構成を使用した MIG (ステートフル MIG)には、次の制限があります。

  • MIG にステートフルな構成がある場合は、自動スケーリングを使用できません。
  • 自動ローリング アップデートを使用する場合は、置換メソッドRECREATE に設定する必要があります。
  • ステートフル リージョン MIG の場合は、プロアクティブな再配布を無効にする(再配布タイプを NONE に設定する)必要があります。これは、複数ゾーンにまたがる自動再配布によってステーフル インスタンスが削除されないようにするためです。
  • すべてのインスタンスの構成を使用してインスタンス テンプレートのプロパティをオーバーライドする場合、インスタンスごとの構成とグループのすべてのインスタンス構成で、同時にこれらのプロパティを指定することはできません。

使用する構成に応じて変動する MIG の制限事項に関する全リストについては、MIG の制限事項をご覧ください。

ステートフル ディスクを使用して MIG を作成する

Google Cloud コンソールgcloud CLI、Terraform、または REST を使用します。

コンソール

  1. [インスタンス グループ] ページに移動します。

    [インスタンス グループ] に移動

    残りの手順は Google Cloud コンソールに自動的に表示されます。

  2. [インスタンス グループの作成] をクリックします。
  3. [新しいマネージド インスタンス グループ(ステートフル)] オプションを選択します。
  4. インスタンス グループに名前と説明(省略可)を割り当てます。
  5. インスタンス グループ用のインスタンス テンプレートを選択するか、新しいインスタンス テンプレートを作成します
  6. [インスタンス数] フィールドに、このグループで最初に必要な VM の数を指定します。
  7. [ステートフル構成] セクションの [グループ構成] で、ステートフルにするディスクをクリックして、次の手順を行います。
    1. [ステートフル] セクションで、[はい] を選択します。
    2. [インスタンスの永久削除時] リストで、VM を完全に削除する際に、ディスクを切断するか、ディスクを削除するかを選択します。
    3. 設定を保存するには、[完了] をクリックします。
  8. MIG を作成するには、[作成] をクリックします。

gcloud

MIG の作成時にステートフルにするディスクをインスタンス テンプレートから指定するには、gcloud compute instance-groups managed create コマンド--stateful-disk フラグを使用します。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

次のように置き換えます。

  • INSTANCE_GROUP_NAME: 作成するマネージド インスタンス グループの名前。
  • INSTANCE_TEMPLATE: インスタンスの作成時に使用されるインスタンス テンプレートの名前。リージョン インスタンス テンプレートの場合は、テンプレートの完全な URL または部分的な URL を指定する必要があります。完全な URL の例は https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template、部分的な URL の例は projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template になります。
  • SIZE: このグループで最初に必要な VM の数。
  • DEVICE_NAME: インスタンス テンプレートで指定されたディスクのデバイス名。
  • DELETE_RULE: VM が削除されたときにステートフル ディスクに行われる処理を表す値。使用できるオプションは次のとおりです。

    • never: デフォルト。ディスクは削除しません。代わりに、VM の削除時にディスクを切断します。
    • on-permanent-instance-deletion: VM インスタンスがインスタンス グループから完全に削除されたときにディスクを削除します。たとえば、マネージド インスタンスが手動で削除された場合や、グループサイズの変更でインスタンスが削除された場合にディスクを削除します。

    削除ルールの値に関係なく、VM の自動修復、更新、再作成の場合、ステートフル ディスクは常に保持されます。

Terraform

MIG 内の各 VM に必要なマシンタイプ、ブートディスク イメージ、ネットワーク、その他の VM プロパティを指定するインスタンス テンプレートをまだ作成していない場合は、インスタンス テンプレートを作成します。

MIG の作成時に、ステートフルにするディスクをインスタンス テンプレートから指定するには、stateful_disk ブロックを含めます。次のサンプルでは、ステートフル ディスクを使用してゾーン MIG を作成します。サンプルで使用されているリソースの詳細については、google_compute_instance_group_manager リソースをご覧ください。

resource "google_compute_instance_group_manager" "default" {
  name               = "igm-stateful-disk-basic"
  zone               = "us-central1-f"
  base_instance_name = "instance"
  target_size        = 1

  version {
    instance_template = google_compute_instance_template.default.id
  }

  stateful_disk {
    device_name = "example-disk"
    delete_rule = "NEVER"
  }

}

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

REST

MIG の作成時にステートフルにするディスクをインスタンス テンプレートから指定するには、リクエスト本文の statefulPolicy フィールドにディスクを指定します。ゾーン MIG の場合は、instanceGroupManagers.insert メソッドを使用し、リージョン MIG の場合は regionInstanceGroupManagers.insert メソッドを使用します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers

{
  "name": "NAME",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/TEMPLATE"
    }
  ],
  "targetSize": SIZE,
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

次のように置き換えます。

  • PROJECT: リクエストのプロジェクト ID。
  • ZONE: MIG が配置されているゾーン(ゾーン MIG に適用)。
    • リージョン MIG の場合は、zones/ZONEregions/REGION に置き換え、MIG のリージョンを指定します。
  • NAME: 作成する MIG の名前。
  • TEMPLATE: インスタンスの作成時に使用されるインスタンス テンプレートの名前。
  • SIZE: このグループで最初に必要なインスタンスの数。
  • DEVICE_NAME: インスタンス テンプレートで指定されたディスクのデバイス名。
  • DELETE_RULE: VM インスタンスの削除時にステートフル ディスクに行われる処理を表す値。使用できるオプションは次のとおりです。

    • never: デフォルト。VM の削除時にディスクを削除せず、ディスクを切断します。
    • on_permanent_instance_deletion: VM がインスタンス グループから完全に削除されたときにステートフル ディスクを削除します。たとえば、マネージド インスタンスが手動で削除された場合や、グループサイズが縮小された場合にディスクを削除します。

    削除ルールの値に関係なく、インスタンスの自動修復、更新、再作成の場合、ステートフル ディスクは常に保持されます。

次のステップ