非マネージド インスタンス グループの作成

非マネージド インスタンス グループは、単一ゾーン、VPC ネットワーク、サブネット内に存在する仮想マシン(VM)の集まりです。非マネージド インスタンス グループは、個々の構成やチューニングが必要な VM をグループ化する場合に便利です。

一貫した構成が必要な VM の場合は、マネージド インスタンス グループ(MIG)インスタンス テンプレートとともに使用します。可能であれば、非マネージド インスタンス グループの代わりにマネージド インスタンス グループの使用を検討してください。マネージド インスタンス グループの作成方法については、マネージド インスタンス グループの作成をご覧ください。

どちらのタイプのインスタンス グループもバックエンドとして Google Cloud ロードバランサに追加できます。詳細は、Cloud Load Balancing の概要を参照してください。Google Cloud がサポートするインスタンス グループあたりの VM の数については、インスタンス グループあたりの VM の数 を参照してください。

インスタンス グループの詳細については、インスタンス グループの概要をご覧ください。

始める前に

非マネージド インスタンス グループの操作

グループの作成

マネージド インスタンス グループとは異なり、非マネージド インスタンス グループは共通のインスタンス テンプレートを共有しない固有の VM からなっています。グループを作成した後、それぞれの VM をそのグループに追加するだけです。

Console

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

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

  2. [インスタンス グループを作成] をクリックします。
  3. [新しい非マネージド インスタンス グループ] をクリックします。
  4. 非マネージド インスタンス グループの名前を入力します。
  5. [ロケーション] でリージョンとゾーンを選択します。
  6. [ネットワーク] と [サブネットワーク] を選択します。
  7. [VM インスタンス] で、このグループに追加する VM を選択します。
  8. [作成] をクリックします。

gcloud

新しい非マネージド インスタンス グループを作成するには、instance-group unmanaged create コマンドを使用します。

gcloud compute instance-groups unmanaged create instance-group-name \
    --zone=zone

以下を置き換えます。

  • instance-group-name: 作成するグループの名前。
  • zone: グループを作成するゾーン。

API

API を使用して非マネージド インスタンス グループを作成するには、instanceGroups.insert メソッドを使用して POST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

{
   "name": "instance-group-name"
}

以下を置き換えます。

  • instance-group-name: 作成するグループの名前。
  • zone: グループを作成するゾーン。
  • project-id: グループを含むプロジェクトのプロジェクト ID。

gcloud コマンドライン ツールまたは API を使用して作成した新しい非マネージド インスタンス グループには、VM が自動的に追加されません。非マネージド インスタンス グループへの VM の追加は、手動で行います。

グループの一覧表示と説明

既存の非マネージド インスタンス グループのリストを取得します。

Console

Cloud Console では、インスタンス グループページに、既存の非マネージド インスタンス グループとマネージド インスタンス グループが一覧表示されます。

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

gcloud

gcloud コマンドライン ツールでプロジェクト内のすべての非マネージド インスタンス グループを一覧表示するには、インスタンス グループ非マネージド リストを使用します。

gcloud compute instance-groups unmanaged list

特定の非マネージド インスタンス グループに関する情報を表示するには、instance-groups unmanaged describe コマンドを使用します。

gcloud compute instance-groups unmanaged describe instance-group-name \
   --zone=zone

以下を置き換えます。

  • instance-group-name: 記述するグループの名前。
  • zone: グループのゾーン。

API

インスタンス グループを API で一覧表示するには、GET リクエストを instanceGroups.list メソッドを使用して送信します。

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

API を使用して特定の非マネージド インスタンス グループに関する情報を取得するには、GET リクエストを instanceGroups.get メソッドを使用して送信します。

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

以下を置き換えます。

  • instance-group-name: 記述するグループの名前。
  • zone: グループのゾーン。
  • project-id: グループを含むプロジェクトのプロジェクト ID。

グループの削除

マネージド インスタンス グループとは異なり、非マネージド インスタンス グループを削除してもそのグループ内の VM は削除されません。非マネージド インスタンス グループを削除すると、VM の論理グループのみが削除されます。

グループが Google Cloud ロードバランサのバックエンドである場合、インスタンス グループは削除できません。まずバックエンド サービスからバックエンドを削除する必要があります。

Console

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

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

  2. リストから 1 つ以上の非マネージド インスタンス グループを選択します。
  3. [削除] をクリックしてグループを削除します。グループは削除されますが、グループ内の VM は削除されません。

gcloud

非マネージド インスタンス グループを削除するには、instance-group unmanaged delete コマンドを使用します。

gcloud compute instance-groups unmanaged delete instance-group-name \
    --zone=zone

以下を置き換えます。

  • instance-group-name: 削除するグループの名前。
  • zone: グループのゾーン。

API

API を使用して非マネージド インスタンス グループを削除するには、DELETE リクエストを instanceGroups.delete メソッドを使用して送信します。

DELETE https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

以下を置き換えます。

  • instance-group-name: 削除するグループの名前。
  • zone: グループのゾーン。
  • project-id: グループを含むプロジェクトのプロジェクト ID。

グループ メンバー

VM の追加

非マネージド インスタンス グループを作成したら、グループに VM を追加できます。

Console

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

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

  2. リストの [名前] 列で、VM を追加するインスタンス グループの名前をクリックします。ページが開き、インスタンス グループのプロパティとすでにグループに含まれている VM のリストが表示されます。
  3. この非マネージド インスタンス グループを変更するには、[グループを編集] をクリックします。
  4. [VM インスタンス] から、グループに追加する既存の VM を 1 つ以上選択します。既存の VM と同じゾーン、VPC ネットワーク、サブネット内の VM のみを選択できます。
  5. 新しい VM をグループに追加するには、[保存] をクリックします。

gcloud

インスタンスを非マネージド インスタンス グループに追加するには、instance-group unmanaged add-instances コマンドを使用します。

gcloud compute instance-groups unmanaged add-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

以下を置き換えます。

  • instance-group-name: VM を追加するグループの名前。
  • zone: グループのゾーン。
  • list-of-VM-names: 同じゾーン、VPC ネットワーク、サブネット内の VM のカンマ区切りリスト。

API

API を使用して非マネージド インスタンス グループに VM を追加するには、POST リクエストを instanceGroups.addInstances メソッドを使用して送信します。

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/addInstances

   {
      "instances": [
         {
         "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
         "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
         ....
         }
      ]
   }

以下を置き換えます。

  • instance-group-name: VM を追加するグループの名前。
  • zone: グループのゾーン。
  • project-id: グループを含むプロジェクトのプロジェクト ID。
  • instance-1-nameinstance-2-name: グループに追加する、同じゾーン、VPC ネットワーク、サブネット内の VM の名前。

VM のリスト

非マネージド インスタンス グループ内のメンバー VM のリストを取得できます。

Console

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

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

  2. リストの [名前] 列で、表示する非マネージド インスタンス グループの名前をクリックします。グループに含まれるインスタンスのリストが記載されたページが表示されます。

gcloud

非マネージド インスタンス グループの VM を一覧表示するには、instance-group unmanaged list-instances コマンドを使用します。

gcloud compute instance-groups unmanaged list-instances instance-group-name \
   --zone=zone

以下を置き換えます。

  • instance-group-name: リストするメンバーのグループの名前。
  • zone: グループのゾーン。

API

非マネージド インスタンス グループの VM を API で一覧表示するには、POST リクエストを instanceGroups.listInstances メソッドを使用して送信します。

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/listInstances

以下を置き換えます。

  • instance-group-name: リストするメンバーのグループの名前。
  • zone: グループのゾーン。
  • project-id: グループを含むプロジェクトのプロジェクト ID。

VM の削除

非マネージド インスタンス グループから VM を削除できます。インスタンス グループから VM を削除しても VM 自体は削除されません。

Console

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

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

  2. リストの [名前] 列で、VM を削除するインスタンス グループの名前をクリックします。ページが開き、インスタンス グループ プロパティと、グループに含まれる VM のリストが表示されます。
  3. リストで、グループから削除する 1 つ以上の VM を選択します。
  4. [グループから削除] をクリックします。非マネージド インスタンス グループから削除した VM は、停止または削除しない限り、引き続き存在し、実行されます。

gcloud

VM を非マネージド インスタンス グループから削除するには、instance-group unmanaged remove-instances コマンドを使用します。

gcloud compute instance-groups unmanaged remove-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

以下を置き換えます。

  • instance-group-name: 削除するインスタンスを含むグループの名前。
  • zone: グループのゾーン。
  • list-of-VM-names: グループから削除する VM のカンマ区切りリスト。

API

API を使用して非マネージド インスタンス グループから VM を削除するには、POST リクエストを instanceGroups.removeInstances メソッドを使用して送信します。次のように、複数の VM を同時に削除できます。

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/removeInstances
{
    "instances": [
        {
        "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
        "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
        ....
        }
    ]
}

以下を置き換えます。

  • instance-group-name: 削除するインスタンスを含むグループの名前。
  • zone: グループのゾーン。
  • project-id: グループを含むプロジェクトのプロジェクト ID。
  • instance-1-nameinstance-2-name: グループとの関連付けを解除する VM の名前。

名前付きポートの操作

名前付きポートとは、ポートの名前と番号を表す Key-Value ペアです。これは、Google Cloud ロードバランサと組み合わせて使用します。プロキシとして機能するロードバランサは、そのバックエンド サービスの構成内で、単一の名前付きポートに登録されます。ポート名は、各インスタンス グループのバックエンドの名前付きポート マッピングに基づいて、ポート番号に変換されます。

たとえば、バックエンド サービスは、http-port という名前のポートに登録できます。バックエンド インスタンスのグループには、http-port:80 という名前のポートを含めることができます。バックエンド インスタンスのグループは、TCP などのプロトコルを使用して、ポート 80 上のグループ内の VM にトラフィックを送信するようにロードバランサに指示します。プロトコルは、ロードバランサのバックエンド サービスで定義されます。

インスタンス グループに複数の名前付きポートを定義できます。ただし、ロードバランサのバックエンド サービスは 1 つの名前付きポートにのみ登録されます。同じバックエンド サービス上のバックエンド インスタンスのグループは、異なる名前付きポート マッピングを使用できます。名前付きポート http-port に登録され、2 つのバックエンド インスタンスのグループを持つ、バックエンド サービスの例を見てみましょう。

  • 名前付きポート http-port:80 を持つ instance-group-a
  • 名前付きポート http-port:79 を持つ instance-group-b

このバックエンド サービスは、instance-group-a の VM にはポート 80 に、instance-group-b の VM にはポート 79 にトラフィックを送信します。

Console

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

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

  2. リストの [名前] 列で、名前付きポートを指定するインスタンス グループの名前をクリックします。インスタンス グループのプロパティが記載されたページが表示されます。
  3. この非マネージド インスタンス グループを変更するには、[グループを編集] をクリックします。
  4. [ポート名のマッピング(省略可)] セクションで、[項目を追加] をクリックして、ポート名と番号を入力します。必要に応じて、他の名前付きポートを追加または削除します。
  5. [保存] をクリックして、非マネージド インスタンス グループの名前付きポートのリストを更新します。

gcloud

非マネージド インスタンス グループに名前付きポートを追加するには、instance-group unmanaged set-named-port コマンドを使用します。

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=port-name:port-number,...

非マネージド インスタンス グループの名前付きポートを一覧表示するには、instance-groups unmanaged get-named-ports を使用します。

gcloud compute instance-groups unmanaged get-named-ports instance-group-name \
    --zone=zone

gcloud コマンドライン ツールを使用して非マネージド インスタンス グループからすべての名前付きポートを削除するには、名前付きポートのリストが空の状態で instance-groups unmanaged set-named-ports を使用します。

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=""

上記のすべての例で、次を置換します(存在する場合)。

  • instance-group-name: インスタンス グループの名前。
  • zone: グループのゾーン。
  • port-nameport-number: ポート名とポート番号は、選択した名前からポート番号へのマッピングを表します。複数のマッピングはカンマで区切って指定できます。たとえば、port-one:80,port-two:8080 は名前付きポートの有効なリストです。

API

  1. インスタンス グループを記述して fingerprint をメモします。

  2. API で名前付きポートを追加するには、POST リクエストを instanceGroups.setNamedPorts メソッドを使用して送信します。すべての名前付きポートを削除する場合は、namedPorts を空のリストに設定します。

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/setNamedPorts
    
    {
        "fingerprint": "fingerprint",
        "namedPorts": [
            {
            "name": "port-name",
            "port": port-number
            },
            {
            "name": "port-name",
            "port": port-number
            },
            ....
        ]
    }
    

    以下を置き換えます。

    • instance-group-name: インスタンス グループの名前。
    • zone: グループのゾーン。
    • project-id: グループを含むプロジェクトのプロジェクト ID。
    • port-nameport-number: ポート名とポート番号は、選択した名前からポート番号へのマッピングを表します。
    • fingerprint: 前のステップでメモしたフィンガープリントです。
  3. 再度インスタンス グループを記述し、構成された名前付きポートをメモします。

次のステップ