インスタンスの柔軟性を追加する


このドキュメントでは、MIG で複数のマシンタイプを設定できるようにインスタンスの柔軟性を追加する方法について説明します。

インスタンスの柔軟性は、MIG の作成時または既存の MIG の編集時に追加できます。柔軟性を追加するには、MIG でインスタンスの柔軟性ポリシーを構成します。ポリシーは、インスタンス テンプレートで指定されたマシンタイプをオーバーライドします。MIG が仮想マシン(VM)インスタンスを作成するたびに、リソースの可用性に基づいて、ポリシーに指定されているマシンタイプのいずれかが自動的に選択されます。マシンタイプのリストにランクを割り当てて、優先度を指定することもできます。

MIG でインスタンスの柔軟性がどのように機能するかについては、インスタンスの柔軟性についてをご覧ください。

始める前に

  • MIG が配置されているリージョンでサポートされているマシンタイプを選択してください。リージョンのマシンタイプについては、使用可能なリージョンとゾーンをご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、 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 を作成する

MIG を作成する前に、インスタンス テンプレートを作成する必要があります(まだ作成していない場合)。インスタンスの柔軟性を使用する MIG を作成して、インスタンス テンプレートで指定されたマシンタイプをオーバーライドできます。

次のいずれかの方法で、インスタンスの柔軟性を使用する MIG を作成します。

複数のマシンタイプを含む MIG を作成する

コンソール

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

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

  2. [インスタンス グループを作成] をクリックします。

  3. [名前] フィールドに、MIG の名前を入力します。

  4. [インスタンス テンプレート] リストで、MIG に使用するインスタンス テンプレートを選択します。

  5. [インスタンス数] を指定して [インスタンスの選択] を追加する前に、次の操作を行う必要があります。

    1. 次のように場所を設定します。

      1. さらにスクロールして [ロケーション] セクションに移動し、[複数のゾーン] を選択します。

      2. [リージョン] プルダウンと [ゾーン] プルダウンで、MIG に VM を作成するリージョンとゾーンを選択します。リージョン インスタンス テンプレートを選択した場合、そのテンプレートのリージョンがデフォルトで選択されます。

      3. [ターゲット分配形態] フィールドで、[バランス] または [任意のシングルゾーン] を選択します。

      4. 表示されたダイアログで、[インスタンスの再分配を無効化] をクリックします。

    2. 自動スケーリングの構成を削除します。

      1. [自動スケーリング] セクションの [自動スケーリング モード] プルダウンで、[自動スケーリングの構成を削除] をクリックします。

      2. 表示されたダイアログで [追加] をクリックします。

    3. [インスタンス数] フィールドまでスクロールします。

  6. [インスタンス数] フィールドに、グループに含める VM の数を指定します。

  7. [インスタンスの選択] セクションで、[インスタンスの選択を追加] をクリックします。

    [インスタンスの選択] ウィンドウが開きます。

    1. [インスタンスの選択の追加] をクリックします。

    2. [新しいインスタンスの選択] セクションで、次の操作を行います。

      1. [名前] フィールドに、インスタンスの選択の名前を入力します。

      2. [マシンタイプ] セクションで [マシンタイプを追加] をクリックし、インスタンスの選択に追加するマシンタイプを選択して、[完了] をクリックします。

        インスタンスの選択に追加するマシンタイプごとに、この手順を繰り返します。

      3. マシンタイプをインスタンスの選択に追加したら、[完了] をクリックします。

  8. [インスタンスの選択] ウィンドウで、[完了] をクリックします。

  9. 他のフィールドはデフォルト設定のままにするか、必要に応じて変更します。

  10. [作成] をクリックします。

gcloud

複数のマシンタイプを含むリージョン MIG を作成するには、次のようにinstance-groups managed create コマンドを使用します。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --region REGION \
    --size TARGET_SIZE \
    --template INSTANCE_TEMPLATE \
    --target-distribution-shape SHAPE \
    --instance-redistribution-type none \
    --instance-selection-machine-types MACHINE_TYPE,MACHINE_TYPE,...

ゾーン MIG はインスタンスの柔軟性をサポートしません。ただし、単一ゾーンに MIG を作成する場合は、ターゲット分配形態を any-single-zone に設定します。さらに、特定のゾーンが必要な場合は any-single-zone 分配形態を使用し、--zones ZONE フラグを指定します。

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

  • INSTANCE_GROUP_NAME: MIG の名前。
  • REGION: MIG を作成するリージョン。
  • TARGET_SIZE: MIG で作成および維持する VM の数。
  • INSTANCE_TEMPLATE: インスタンス テンプレートの名前。
  • SHAPE: ターゲット分配形態。値は balanced または any-single-zone です。他のターゲット分配形態はサポートされていません。
  • MACHINE_TYPE: MIG で構成するマシンタイプ(例: n1-standard-16,n2-standard-16,e2-standard-16)。

Terraform

MIG 内の各 VM に必要な VM プロパティを指定するインスタンス テンプレートをまだ作成していない場合は、インスタンス テンプレートを作成します。

複数のマシンタイプを含むリージョン MIG を作成するには、google_compute_region_instance_group_manager リソースを使用します。

resource "google_compute_region_instance_group_manager" "default" {
  name               = "flex-igm"
  base_instance_name = "tf-test-flex-igm"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "ANY_SINGLE_ZONE"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_flexibility_policy {
    instance_selections {
      name          = "default-instance-selection"
      machine_types = ["n1-standard-16", "n2-standard-16", "e2-standard-16"]
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

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

REST

複数のマシンタイプを含むリージョン MIG を作成するには、regionInstanceGroupManagers.insert メソッドPOST リクエストを送信します。

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

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": TARGET_SIZE,
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "distributionPolicy": {
    "targetShape": "SHAPE"
  },
  "updatePolicy": {
    "instanceRedistributionType": "NONE"
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2",
          ...
        ]
      }
    }
  }
}

ゾーン MIG はインスタンスの柔軟性をサポートしません。ただし、単一ゾーンに MIG を作成する場合は、ターゲット分配形態を ANY_SINGLE_ZONE に設定します。さらに、特定のゾーンが必要な場合は ANY_SINGLE_ZONE 分配形態を使用し、リクエストに distributionPolicy.zones[].zone フィールドを含めます。

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

  • PROJECT_ID: 実際のプロジェクト ID
  • REGION: MIG を作成するリージョン。
  • INSTANCE_GROUP_NAME: MIG の名前。
  • TARGET_SIZE: MIG で作成および維持する VM の数。
  • INSTANCE_TEMPLATE_URL: インスタンス テンプレートの URL。
  • SHAPE: ターゲット分配形態。値は BALANCED または ANY_SINGLE_ZONE です。他のターゲット分配形態はサポートされていません。
  • INSTANCE_SELECTION: マシンタイプのリストの名前。
  • MACHINE_TYPE: MIG で構成するマシンタイプ(例: "n1-standard-16","n2-standard-16","e2-standard-16")。

複数のマシンタイプと設定を使用して MIG を作成する

コンソール

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

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

  2. [インスタンス グループを作成] をクリックします。

  3. [名前] フィールドに、MIG の名前を入力します。

  4. [インスタンス テンプレート] リストで、MIG に使用するインスタンス テンプレートを選択します。

  5. [インスタンス数] を指定して [インスタンスの選択] を追加する前に、次の操作を行う必要があります。

    1. 次のように場所を設定します。

      1. さらにスクロールして [ロケーション] セクションに移動し、[複数のゾーン] を選択します。

      2. [リージョン] プルダウンと [ゾーン] プルダウンで、MIG に VM を作成するリージョンとゾーンを選択します。リージョン インスタンス テンプレートを選択した場合、そのテンプレートのリージョンがデフォルトで選択されます。

      3. [ターゲット分配形態] フィールドで、[バランス] または [任意のシングルゾーン] を選択します。

      4. 表示されたダイアログで、[インスタンスの再分配を無効化] をクリックします。

    2. 自動スケーリングの構成を削除します。

      1. [自動スケーリング] セクションの [自動スケーリング モード] プルダウンで、[自動スケーリングの構成を削除] をクリックします。

      2. 表示されたダイアログで [追加] をクリックします。

    3. [インスタンス数] フィールドまでスクロールします。

  6. [インスタンス数] フィールドに、グループに含める VM の数を指定します。

  7. [インスタンスの選択] セクションで、[インスタンスの選択を追加] をクリックします。

    [インスタンスの選択] ウィンドウが開きます。 MIG に追加するインスタンスの選択ごとに、次の手順を繰り返します。

    1. [インスタンスの選択の追加] をクリックします。

    2. [新しいインスタンスの選択] セクションで、次の操作を行います。

      1. [名前] フィールドに、インスタンスの選択の名前を入力します。

      2. [ランク] フィールドに、MIG に追加するインスタンスの選択の優先順位を入力します。

      3. [マシンタイプ] セクションで [マシンタイプを追加] をクリックし、インスタンスの選択に追加するマシンタイプを選択して、[完了] をクリックします。

        インスタンスの選択に追加するマシンタイプごとに、この手順を繰り返します。

      4. マシンタイプをインスタンスの選択に追加したら、[完了] をクリックします。

  8. インスタンスの選択の追加が完了したら、[完了] をクリックします。

  9. 他のフィールドはデフォルト設定のままにするか、必要に応じて変更します。

  10. [作成] をクリックします。

gcloud

複数のマシンタイプと優先度を使用するリージョン MIG を作成するには、instance-groups managed create コマンドを使用します。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --region REGION \
    --size TARGET_SIZE \
    --template INSTANCE_TEMPLATE \
    --target-distribution-shape SHAPE \
    --instance-redistribution-type none \
    --instance-selection "name=INSTANCE_SELECTION_1,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2,rank=RANK_1" \
    --instance-selection "name=INSTANCE_SELECTION_2,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4,rank=RANK_2"

ゾーン MIG はインスタンスの柔軟性をサポートしません。ただし、単一ゾーンに MIG を作成する場合は、ターゲット分配形態を any-single-zone に設定します。さらに、特定のゾーンが必要な場合は any-single-zone 分配形態を使用し、--zones ZONE フラグを指定します。

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

  • INSTANCE_GROUP_NAME: MIG の名前。
  • REGION: MIG を作成するリージョン。
  • TARGET_SIZE: MIG で作成して維持する VM の数。
  • INSTANCE_TEMPLATE: インスタンス テンプレートの名前。
  • SHAPE: ターゲット分配形態。値は balanced または any-single-zone です。他のターゲット分配形態はサポートされていません。
  • INSTANCE_SELECTION: マシンタイプのリストの名前。優先度の異なる複数のリストを追加できます。
  • MACHINE_TYPE: MIG で構成するマシンタイプ。

Terraform

MIG 内の各 VM に必要な VM プロパティを指定するインスタンス テンプレートをまだ作成していない場合は、インスタンス テンプレートを作成します。

複数のマシンタイプと優先度を使用するリージョン MIG を作成するには、google_compute_region_instance_group_manager リソースを使用します。

resource "google_compute_region_instance_group_manager" "default" {
  name               = "flex-igm"
  base_instance_name = "tf-test-flex-igm"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "ANY_SINGLE_ZONE"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_flexibility_policy {
    instance_selections {
      name          = "best-choice"
      rank          = 1
      machine_types = ["n1-standard-1", "n1-standard-2"]
    }
    instance_selections {
      name          = "still-ok"
      rank          = 2
      machine_types = ["n2-standard-1"]
    }
    instance_selections {
      name          = "if-nothing-else"
      rank          = 3
      machine_types = ["e2-standard-2"]
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

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

REST

複数のマシンタイプと優先度を使用するリージョン MIG を作成するには、regionInstanceGroupManagers.insert メソッドPOST リクエストを送信します。

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

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": TARGET_SIZE,
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "distributionPolicy": {
    "targetShape": "SHAPE"
  },
  "updatePolicy": {
    "instanceRedistributionType": "NONE"
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2",
          ...
        ],
        "rank": RANK_1
      },
      "INSTANCE_SELECTION_2": {
        "machineTypes": [
          "MACHINE_TYPE_3",
          "MACHINE_TYPE_4",
          ...
        ],
        "rank": RANK_2
      },
      ...
    }
  }
}

ゾーン MIG はインスタンスの柔軟性をサポートしません。ただし、単一ゾーンに MIG を作成する場合は、ターゲット分配形態を ANY_SINGLE_ZONE に設定します。さらに、特定のゾーンが必要な場合は ANY_SINGLE_ZONE 分配形態を使用し、リクエストに distributionPolicy.zones[].zone フィールドを含めます。

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

  • PROJECT_ID: 実際のプロジェクト ID
  • REGION: MIG を作成するリージョン。
  • INSTANCE_GROUP_NAME: MIG の名前。
  • TARGET_SIZE: MIG で作成および維持する VM の数。
  • INSTANCE_TEMPLATE_URL: インスタンス テンプレートの URL。
  • SHAPE: ターゲット分配形態。値は BALANCED または ANY_SINGLE_ZONE です。
  • ZONE: MIG を作成するゾーン。特定のゾーンにリージョン MIG を作成する場合は、このフィールドを使用します。それ以外の場合は、このフィールドをスキップできます。
  • INSTANCE_SELECTION: マシンタイプのリストの名前。優先度の異なる複数のリストを追加できます。
  • MACHINE_TYPE: MIG で構成するマシンタイプ。
  • RANK: 優先順位を表す数。値が小さいほど、優先度が高くなります。

既存の MIG にインスタンスの柔軟性を追加する

既存の MIG にインスタンスの柔軟性を追加できます。複数のマシンタイプを設定することも、特定のマシンタイプの優先度を設定することもできます。

MIG にすでに VM が含まれている場合、それらの VM はインスタンス テンプレートで指定されたマシンタイプを引き続き使用します。MIG 内の既存の VM でインスタンスの柔軟性ポリシーからマシンタイプを使用する場合は、ポリシーを追加した後、既存の VM を削除し、必要な VM 数に対する MIG のサイズを変更します。サイズの変更時に、新しい VM でポリシーのマシンタイプを使用します。

既存のインスタンスの柔軟性ポリシーにインスタンスの選択を追加する場合は、インスタンスの柔軟性構成を変更するをご覧ください。

次のいずれかの方法で、MIG にインスタンスの柔軟性を追加します。

複数のマシンタイプを追加する

コンソール

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

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

  2. 複数のマシンタイプを設定する MIG の名前をクリックします。

  3. [編集] をクリックします。

  4. [インスタンスの選択] セクションで、[インスタンスの選択を追加] をクリックします。

    [インスタンスの選択] ウィンドウが開きます。

    1. [インスタンスの選択の追加] をクリックします。

    2. [新しいインスタンスの選択] セクションで、次の操作を行います。

      1. [名前] フィールドに、インスタンスの選択の名前を入力します。

      2. [マシンタイプ] セクションで [マシンタイプを追加] をクリックし、インスタンスの選択に追加するマシンタイプを選択して、[完了] をクリックします。

        インスタンスの選択に追加するマシンタイプごとに、この手順を繰り返します。

      3. マシンタイプをインスタンスの選択に追加したら、[完了] をクリックします。

  5. [インスタンスの選択] ウィンドウで、[完了] をクリックします。

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

gcloud

既存の MIG に複数のマシンタイプを追加するには、instance-groups managed update コマンドを使用します。

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --region REGION \
    --instance-selection-machine-types MACHINE_TYPE,MACHINE_TYPE,...

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

  • INSTANCE_GROUP_NAME: インスタンスの柔軟性を追加する MIG の名前。
  • REGION: MIG が配置されているリージョン。
  • MACHINE_TYPE: MIG で構成するマシンタイプ(例: n1-standard-16,n2-standard-16,e2-standard-16)。

REST

既存の MIG に複数のマシンタイプを追加するには、regionInstanceGroupManagers.patch メソッドPATCH リクエストを送信します。

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

{
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
    "INSTANCE_SELECTION": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2"
          ...
        ]
      }
    }
  }
}

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

  • PROJECT_ID: 実際のプロジェクト ID
  • REGION: MIG が配置されているリージョン。
  • INSTANCE_GROUP_NAME: インスタンスの柔軟性を追加する MIG の名前。
  • INSTANCE_SELECTION: マシンタイプのリストの名前。
  • MACHINE_TYPE: MIG で構成するマシンタイプ(例: "n1-standard-16","n2-standard-16","e2-standard-16")。
  • RANK: 優先順位を表す数。値が小さいほど、優先度が高くなります。

複数のマシンタイプと優先度を追加する

コンソール

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

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

  2. 複数のマシンタイプを設定する MIG の名前をクリックします。

  3. [編集] をクリックします。

  4. [インスタンスの選択] セクションで、[インスタンスの選択を追加] をクリックします。

    [インスタンスの選択] ウィンドウが開きます。 MIG に追加するインスタンスの選択ごとに、次の手順を繰り返します。

    1. [インスタンスの選択の追加] をクリックします。

    2. [新しいインスタンスの選択] セクションで、次の操作を行います。

      1. [名前] フィールドに、インスタンスの選択の名前を入力します。

      2. [ランク] フィールドに、MIG に追加するインスタンスの選択の優先順位を入力します。

      3. [マシンタイプ] セクションで [マシンタイプを追加] をクリックし、インスタンスの選択に追加するマシンタイプを選択して、[完了] をクリックします。

        インスタンスの選択に追加するマシンタイプごとに、この手順を繰り返します。

      4. マシンタイプをインスタンスの選択に追加したら、[完了] をクリックします。

  5. インスタンスの選択の追加が完了したら、[完了] をクリックします。

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

gcloud

既存の MIG に複数のマシンタイプと優先度を追加するには、instance-groups managed update コマンドを使用します。

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --region REGION \
    --instance-selection "name=INSTANCE_SELECTION_1,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2,rank=RANK_1" \
    --instance-selection "name=INSTANCE_SELECTION_2,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4,rank=RANK_2"

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

  • INSTANCE_GROUP_NAME: インスタンスの柔軟性を追加する MIG の名前。
  • REGION: MIG が配置されているリージョン。
  • INSTANCE_SELECTION: マシンタイプのリストの名前。優先度の異なる複数のリストを追加できます。
  • MACHINE_TYPE: MIG で構成するマシンタイプ。

REST

既存の MIG に複数のマシンタイプと優先度を追加するには、regionInstanceGroupManagers.patch メソッドPATCH リクエストを送信します。

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

{
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION_1": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2"
        ],
        "rank": RANK_1
      },
      "INSTANCE_SELECTION_2": {
        "machineTypes": [
          "MACHINE_TYPE_3",
          "MACHINE_TYPE_4"
        ],
        "rank": RANK_2
      }
    }
  }
}

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

  • PROJECT_ID: 実際のプロジェクト ID
  • REGION: MIG が配置されているリージョン。
  • INSTANCE_GROUP_NAME: MIG の名前。
  • INSTANCE_SELECTION: マシンタイプのリストの名前。優先度の異なる複数のリストを追加できます。
  • MACHINE_TYPE: MIG で構成するマシンタイプ。

次のステップ