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


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

始める前に

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

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

    コンソール

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

    gcloud

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

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

    REST

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

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

      gcloud init

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

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

gcloud beta 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 が配置されているゾーン。

API

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

PUT https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

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

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

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

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

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

コンソール

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

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

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

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

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

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

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

gcloud

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

gcloud beta compute instance-groups managed resize 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 が配置されているゾーン

API

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

PUT https://www.googleapis.com/compute/beta/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 の数

次のステップ