リージョン MIG でプロアクティブな VM 再配布を無効または有効にする


リージョン マネージド インスタンス グループ(MIG)で、リージョン内の選択したゾーンで均等な数の仮想マシン(VM)インスタンスを維持するには、プロアクティブなインスタンスの再配布を使用します。この構成オプションにより、ゾーンレベルで障害が発生した場合のアプリケーションの可用性が最大化されます。

リージョン MIG では、プロアクティブなインスタンスの再配布がデフォルトで有効になっています。プロアクティブなインスタンスの再配布を無効にすると、VM はゾーン間でプロアクティブに再配布されません。プロアクティブなインスタンスの再分散を無効にすると、次のような場合に便利です。

  • 実行中の他の VM に影響を与えずに、VM をグループから削除または放棄する。たとえば、ジョブの完了後、他のワーカーに影響を与えずにバッチワーカー VM を削除できます。
  • プロアクティブな再分配による望まない自動削除からステートフル ワークロードの VM を保護する。
  • MIG のターゲット分配形態BALANCED または ANY_SINGLE_ZONE に設定する。

リージョン MIG を作成するときに、プロアクティブなインスタンスの再分配を無効にできます。既存のリージョン MIG で有効または無効にすることもできます。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、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 を作成するには、Google Cloud コンソールgcloud CLI、Terraform、または REST を使用します。

コンソール

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

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

  2. [インスタンス グループを作成] をクリックして、新しいインスタンス グループを作成します。
  3. インスタンス グループに名前と説明(省略可)を割り当てます。
  4. インスタンス グループ用のインスタンス テンプレートを選択するか、新しいインスタンス テンプレートを作成します。
  5. このグループの VM の数を指定します。高可用性ワークロードの場合、ゾーン障害の発生に備えてアプリケーションのサポートに十分な VM をプロビジョニングします。
  6. [ロケーション] で、[複数のゾーン] を選択します。
  7. リージョンを選択し、使用するゾーンを選択します。
  8. プロアクティブなインスタンスの再分配を無効にするには、インスタンスの再分配で、インスタンスの再配布を許可するチェックボックスをオンにします。
  9. 残りの MIG 作成手順を続けます。

gcloud

プロアクティブなインスタンスの再配布を行わずに新しいリージョン MIG を作成するには、--instance-redistribution-type フラグを NONE に設定して gcloud compute instance-groups managed create コマンドを使用します。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE_NAME \
    --size TARGET_SIZE \
    --zones ZONES \
    --instance-redistribution-type NONE

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

  • INSTANCE_GROUP_NAME: MIG の名前
  • INSTANCE_TEMPLATE_NAME: グループに使用するインスタンス テンプレートの名前
  • TARGET_SIZE: グループのターゲット サイズ
  • ZONES: VM をデプロイする単一リージョン内のゾーンのリスト

例:

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --instance-redistribution-type NONE

Terraform

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

リージョン MIG を作成するには、google_compute_region_instance_group_manager リソースを使用します。

リージョン MIG でプロアクティブなインスタンスの再配布を無効にするには、update_policy ブロックを含め、instance_redistribution_type フィールドを NONE に設定します。

resource "google_compute_region_instance_group_manager" "default" {
  name                      = "example-rmig"
  region                    = "us-east1"
  distribution_policy_zones = ["us-east1-b", "us-east1-c"]
  update_policy {
    type                         = "PROACTIVE"
    minimal_action               = "REFRESH"
    instance_redistribution_type = "NONE"
    max_unavailable_fixed        = 3
  }
  target_size        = 30
  base_instance_name = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

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

REST

プロアクティブなインスタンスの再配布と自動スケーリングを行わないリージョン MIG を作成するには、regionInstanceGroupManagers.insert メソッドに POST リクエストを行います。リクエストの本文に updatePolicy プロパティを含め、instanceRedistributionType フィールドを NONE に設定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
    "name": "INSTANCE_GROUP_NAME",
    "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
    "targetSize": TARGET_SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE"},
            {"zone": "zones/ZONE"}
        ]
    },
    "updatePolicy": {
        "instanceRedistributionType": "NONE"
    }
}

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

  • PROJECT_ID: このリクエストのプロジェクト ID
  • REGION: インスタンス グループのリージョン
  • INSTANCE_GROUP_NAME: MIG の名前
  • INSTANCE_TEMPLATE_NAME: グループに使用するインスタンス テンプレートの名前
  • TARGET_SIZE: インスタンス グループのターゲット サイズ
  • ZONE: VM をデプロイする単一のリージョン内のゾーンの名前

プロアクティブなインスタンスの再配布をオフにする

プロアクティブなインスタンスの再配布を無効または再度有効にするには、Google Cloud コンソールgcloud CLI、または REST を使用します。

コンソール

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

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

  2. リストの [名前] 列で、変更するインスタンス グループの名前をクリックします。
  3. [編集] をクリックして、このマネージド インスタンス グループを変更します。
  4. [インスタンスの再配布] で、[インスタンスの再配布を許可する] チェックボックスをオフにします。
  5. [保存] をクリックします。

gcloud

プロアクティブなインスタンスの再配布を無効にするには、次のようにコマンドを使用して --instance-redistribution-type フラグを NONE に設定します。

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

  • INSTANCE_GROUP_NAME: MIG の名前
  • REGION: インスタンス グループのリージョン

REST

プロアクティブなインスタンスの再配布をオフにするには、次の方法で instanceRedistributionType フィールドを NONE に設定します。

  • 自動スケーリングされないリージョン MIG またはモードOFF または ONLY_SCALE_OUT に設定された自動スケーリング リージョン MIG の場合は、regionInstanceGroupManagers.patchメソッドを使用します。

    例:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
    
    {
     "updatePolicy": {
        "instanceRedistributionType": "NONE"
     }
    }
    
  • モードON に設定された自動スケーリングされるリージョン MIG の場合は、ベータ版の regionInstanceGroupManagers.patch メソッドを使用します。

    例:

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME
    
    {
     "updatePolicy": {
          "instanceRedistributionType": "NONE"
      }
    }
    

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

  • PROJECT_ID: このリクエストのプロジェクト ID
  • REGION: インスタンス グループのリージョン
  • INSTANCE_GROUP_NAME: MIG の名前

プロアクティブなインスタンスの再配布の有効化

プロアクティブなインスタンスの再配布を有効にするには、プロアクティブなインスタンスの再配布を無効にすると同様のコマンドを使用しますが、インスタンスの配布タイプを PROACTIVE に設定します。

マネージド インスタンスを手動で削除または放棄し、リージョンで VM 数の不均等が発生した場合は、プロアクティブなインスタンスの再配布を有効にする前に、グループの調整を手動で行う必要があります。2 つのゾーン間での VM 数の差は、1 VM 以下にする必要があります。

ゾーン間の VM 数が不均等な(2 つのゾーン間の VM 数の差が 2 以上の)状態にある間、そのリージョン MIG ではプロアクティブなインスタンスの再配布を有効にできません。これは、不均等を是正するために、VM 数の多いゾーンから VM が自動的に削除されないようにするためです。

次のステップ