VM を一時停止や停止してスケールアウトを加速する


このドキュメントでは、一時停止や停止された仮想マシン(VM)インスタンスのスタンバイ プールの仕組みと、スタンバイ プールを使用してマネージド インスタンス グループ(MIG)のスケールアウトを加速する方法について説明します。

始める前に

  • MIG で一時停止および停止した VM の概要ページを確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、 Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

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

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      詳細については Set up authentication for a local development environment をご覧ください。

      REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

MIG API を自動スケーリングに使用する

MIG の自動スケーリングには、Compute Engine オートスケーラーを使用することをおすすめします。ただし、なんらかの理由で別のオートスケーラーを使用したい場合は、MIG API のエンドポイントを使用して一時停止中と停止中の VM を処理します。

MIG API を使用すると、オートスケーラー(GKE オートスケーラーなど)を接続し、VM のスタンバイ プールを利用して迅速にスケールアウトできます。

一時停止されたプールと停止したプールのいずれかを選択する

一時停止されたプールと停止されたプールのどちらを選択するかは、特定のユースケースによって異なります。最適なパフォーマンスを得るには、スケールアウト シナリオでさまざまなスタンバイ プールタイプを試して、ニーズに最適なタイプを決定する必要があります。ワークロードごとに、オプションによって短い所要時間を表示する場合があります。メモリの状態をストレージから VM にコピーする操作は、VM の再起動や新しい VM の新規作成よりも時間がかかることがあります。

最適なアプローチを見つけるには、以下のガイドラインを参考にしてください。

  • 一時停止された VM はメモリ状態を保持するため、VM で時間がかかるメモリの初期化が必要な場合は、一時停止された VM を使用します。アプリケーションを一時停止および再開できることを確認してください。メモリの状態を維持するには、追加のストレージが必要です。追加費用が発生する可能性があります。
  • VM の初期化が主に永続ディスクに保存されているデータの初期化である場合は、停止した VM を使用します。

MIG のスタンバイ ポリシーを編集する

このセクションでは、初期遅延を設定する方法と、プールをスケールアウトするようにスタンバイ プールモードを設定する方法について説明します。

コンソール

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

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

  2. リストの [名前] 列で、スタンバイ ポリシーを編集するインスタンス グループの名前をクリックします。

  3. [編集] をクリックして、このマネージド インスタンス グループを変更します。

  4. [詳細構成を表示] をクリックします。

  5. [スタンバイ プール] セクションの [モード] で、[スケールアウト] を選択します。

  6. [初期遅延] フィールドに、VM を一時停止または停止する前に MIG が待機する秒数を入力します。初期遅延により、初期化スクリプトに、迅速なスケールアウトのために VM を準備する時間が与えられます。

  7. [保存] をクリックします。

gcloud

instance-groups managed update コマンドを使用して、動作モードと初期遅延を指定します。

gcloud compute instance-groups managed update MIG_NAME \
  --standby-policy-mode=scale-out-pool \
  --standby-policy-initial-delay=DELAY \
  [--region=REGION | --zone=ZONE]

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

  • MIG_NAME: MIG の名前。
  • DELAY: VM を一時停止または停止する前に MIG が待機する秒数。初期遅延により、初期化スクリプトに、迅速なスケールアウトのために VM を準備する時間が与えられます。
  • REGION: リージョン MIG の場合、MIG が配置されているリージョン。
  • ZONE: ゾーン MIG の場合、MIG が配置されているゾーン。

Terraform

次の例では、スタンバイ ポリシーを使用してゾーン MIG を作成します。standby_policy ブロックを使用して、初期遅延を設定し、モードを SCALE_OUT_POOL に設定します。

この例では google_compute_instance_group_manager リソースを使用しています。リージョン MIG の場合は、google_compute_region_instance_group_manager リソースを使用します。

resource "google_compute_instance_group_manager" "default" {
  name               = "standby-mig"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

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

REST

instanceGroupManager.patch メソッドを使用して、リクエストの本文でオペレーション モードと初期遅延を指定します。リージョン MIG の場合は、regionInstanceGroupManager.patch メソッドを使用します。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"standbyPolicy": {
  "mode": "SCALE_OUT_POOL",
  "initialDelaySec": DELAY
}
// ...
}

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

  • PROJECT_ID: オブジェクトの ID。
  • ZONE: ゾーン MIG の場合、MIG が配置されているゾーン。
    • リージョン MIG の場合は、zones/ZONEregions/REGION に置き換え、MIG のリージョンを指定します。
  • MIG_NAME: MIG の名前。
  • DELAY: VM を一時停止または停止する前に MIG が待機する秒数。初期遅延により、初期化スクリプトに、迅速なスケールアウトのために VM を準備する時間が与えられます。

MIG 内のスタンバイ プールのサイズを変更する

このセクションでは、MIG で一時停止された VM と停止された VM のスタンバイ プールのサイズを変更する方法について説明します。

コンソール

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

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

  2. リストの [名前] 列で、スタンバイ プールのサイズを編集するインスタンス グループの名前をクリックします。

  3. [編集] をクリックして、このマネージド インスタンス グループを変更します。

  4. [詳細構成を表示] をクリックします。

  5. [スタンバイ プール] セクションで、[一時停止された VM] フィールドと [停止した VM] フィールドに新しいサイズを入力します。

  6. [保存] をクリックします。

gcloud

--suspended-size フラグと --stopped-size フラグを指定して、instance-groups managed update コマンドを使用します。

gcloud compute instance-groups managed update MIG_NAME \
--suspended-size=SUSPENDED_SIZE \
--stopped-size=STOPPED_SIZE \
[--region=REGION | --zone=ZONE]

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

  • MIG_NAME: インスタンスを一時停止する MIG の名前。
  • SUSPENDED_SIZE: MIG が任意の時点で維持する必要がある一時停止された VM の数
  • STOPPED_SIZE: MIG が任意の時点で維持する必要がある停止した VM の数
  • REGION: リージョン MIG の場合、MIG が配置されているリージョン。
  • ZONE: ゾーン MIG の場合、MIG が配置されているゾーン。

Terraform

次の例では、一時停止された VM と停止された VM のターゲット サイズを使用してゾーン MIG を作成します。ターゲット サイズを設定するには、target_suspended_size 引数と target_stopped_size 引数を使用します。

この例では google_compute_instance_group_manager リソースを使用しています。リージョン MIG の場合は、google_compute_region_instance_group_manager リソースを使用します。

resource "google_compute_instance_group_manager" "default" {
  name                  = "standby-mig"
  base_instance_name    = "test"
  target_size           = 1
  target_suspended_size = 1
  target_stopped_size   = 2
  zone                  = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  standby_policy {
    initial_delay_sec = 50
    mode              = "SCALE_OUT_POOL"
  }
}

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

REST

instanceGroupManager.patch メソッドを使用して、リクエストの本文で一時停止された VM と停止された VM のプールのサイズを指定します。リージョン MIG の場合は、regionInstanceGroupManager.patch メソッドを使用します。

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
// ...
"targetSuspendedSize": SUSPENDED_SIZE,
"targetStoppedSize": STOPPED_SIZE
// ...
}

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

  • PROJECT_ID: リクエスト対象のプロジェクト ID。
  • ZONE: ゾーン MIG の場合、MIG が配置されているゾーン。
    • リージョン MIG の場合は、zones/ZONEregions/REGION に置き換え、MIG のリージョンを指定します。
  • MIG_NAME: インスタンスを停止する MIG の名前。
  • SUSPENDED_SIZE: MIG が任意の時点で維持する必要がある一時停止された VM の数
  • STOPPED_SIZE: MIG が任意の時点で維持する必要がある停止した VM の数

次のステップ