インスタンス グループをロードバランサに追加する

Google Cloud Platform(GCP)の負荷分散では、マネージド インスタンス グループと非マネージド インスタンス グループの両方を使用してトラフィックが処理されます。使用しているロードバランサのタイプに応じて、ターゲット プールまたはバックエンド サービスにインスタンス グループを追加できます。負荷分散の詳細については、ロードバランサの選択をご覧ください。

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

始める前に

マネージド インスタンス グループをバックエンド サービスに追加する

バックエンド サービスは、HTTP(S)、SSL プロキシ、TCP プロキシ、内部ロードバランサの作成に必要です。バックエンド サービスには複数のバックエンドを含めることができます。インスタンス グループとは、バックエンドの一種です。インスタンス グループ内のインスタンスがロードバランサからのトラフィックにレスポンスします。それにより、バックエンド サービスは使用できるインスタンス、処理可能なトラフィック数、現在処理しているトラフィック数を認識するようになります。また、バックエンド サービスはヘルスチェックをモニタリングし、異常なインスタンスにはトラフィックを送信しません。

インスタンス グループをバックエンド サービスに追加する手順については、バックエンド サービスへのインスタンス グループの追加をご覧ください。

マネージド インスタンス グループをターゲット プールに追加する

ターゲット プールは、1 つ以上の仮想マシン インスタンスが含まれるオブジェクトです。ターゲット プールはネットワーク負荷分散で使用され、ネットワーク ロードバランサによって接続されているターゲット プールにユーザー リクエストが転送されます。このターゲット プールに含まれるインスタンスによってこれらのリクエストが処理され、レスポンスが返されます。インスタンス グループに対してインスタンスが追加または削除されると、その変更に合わせてターゲット プールが自動的に更新されるように、マネージド インスタンス グループをターゲット プールに追加できます。

マネージド インスタンス グループをターゲット プールに追加する前に、ターゲット プールを用意しておく必要があります。詳細については、ターゲット プールの追加に関するドキュメントをご覧ください。

既存のマネージド インスタンス グループをターゲット プールに追加する手順は次のとおりです。この操作を行うと、マネージド インスタンス グループに含まれるすべての VM インスタンスがターゲット プールに追加されます。

Console

  1. GCP Console の [ターゲット プール] ページに移動します。

    [ターゲット プール] ページに移動

  2. インスタンス グループを追加するターゲット プールをクリックします。
  3. [編集] ボタンをクリックします。
  4. [VM インスタンス] セクションまで下にスクロールして、[インスタンス グループを選択] をクリックします。
  5. プルダウン メニューからインスタンス グループを選択します。
  6. 変更を保存します。

gcloud

gcloud コマンドライン ツールでは、set-target-pools コマンドを使用します。

gcloud compute instance-groups managed set-target-pools [INSTANCE_GROUP] \
        --target-pools [TARGET_POOL,..] [--zone ZONE]

ここで

  • [INSTANCE_GROUP] はインスタンス グループの名前です。
  • [TARGET_POOL] は、このインスタンス グループの追加先である 1 つ以上のターゲット プールの名前です。
  • [ZONE] はインスタンス グループのゾーンです。

API

API では、次の URI に POST リクエストを送ります。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

ここで

  • [PROJECT_ID] は、このリクエストのプロジェクト ID です。
  • [ZONE] はインスタンス グループのゾーンです。
  • [INSTANCE_GROUP] はインスタンス グループの名前です。

リクエストの本文には、このグループを追加するターゲット プールの URI のリストを含める必要があります。次に例を示します。

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

マネージド インスタンス グループへの名前付きポートの割り当て

名前付きポートは、サービス名とそのサービスが実行されるポート番号を表すキー値のペアです。名前付きポートは、個別のインスタンスでトラフィックを特定のポートに転送するために負荷分散サービスで使用されます。たとえば、名前付きポートを http:80 に設定して http という名前のポートにトラフィックを送信するようにバックエンドを構成した場合、負荷分散によってインスタンス グループの一部である個別のインスタンスのポート 80 にトラフィックが転送されます。

名前付きポートは、負荷分散で使用されるシンプルなメタデータです。名前付きポートは Compute Engine のネットワークまたはファイアウォールのリソースを制御しません。

各サービス名に複数のポートを割り当てることができ、各ポートに複数のサービス名を割り当てることができます。ただし、特定のバックエンド サービスはトラフィックを一度に 1 つの名前付きポートにしか送信できないことに留意してください。

Console

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

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

  2. 名前付きポートを指定するインスタンス グループの名前をクリックします。インスタンス グループのプロパティが記載されたページが表示されます。
  3. [グループを編集] をクリックして、このマネージド インスタンス グループを変更します。
  4. [ポート名のマッピングを指定する] をクリックして、名前付きポートのオプションを展開します。
  5. [項目を追加] をクリックして、希望するポート名とその名前に関連付けるポート番号を入力します。さらに項目が必要な場合は、[項目を追加] をもう一度クリックして項目を追加します。
  6. [保存] をクリックして、変更を保存し、マネージド インスタンス グループ内のインスタンスに名前付きポートを適用します。

gcloud

次の set-named-ports コマンドを使用して、1 つ以上の名前付きポートを設定します。

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
      --named-ports [PORT_NAME]:[PORT],[PORT_NAME]:[PORT]

次に例を示します。

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
      --named-ports name1:80,name2:8080

各サービス名に複数のポートを割り当てる、または各サービスに複数の名前を割り当てるには、各名前またはポートに 1 つ以上の項目を作成します。たとえば、name1 をポート 102080 に割り当てます。その後、name2name3 の両方をポート 80 に割り当てます。最後に、ポート 9000name4 に割り当てます。

gcloud compute instance-groups managed set-named-ports [INSTANCE_GROUP] \
      --named-ports name1:10,name1:20,name1:80,\
                    name2:8080,name3:8080,\
                    name4:9000

get-named-ports コマンドを使用して、マネージド インスタンス グループに対する名前付きポートの割り当てを確認します。

gcloud compute instance-groups managed get-named-ports [INSTANCE_GROUP]
NAME  PORT
name1 10
name1 20
name1 80
name2 8080
name3 8080
name4 9000

API

instanceGroupManagers API は、setNamedPorts API メソッドを提供していません。このタスクを実行するには、代わりに instanceGroups API を使用してください。

InstanceGroups API へのリクエストを作成し、インスタンス グループの名前を含めます。特定のグループに関する情報を取得して、その情報からグループの現在の fingerprint 値を取得します。リクエスト本文に fingerprint と 1 つ以上の namedPorts 値のペアを含めます。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroups/[INSTANCE_GROUP]/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  },
  {
   "name": "[PORT_NAME]",
   "port": [PORT_NUMBER]
  }
 ]
}

次に例を示します。

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 80
  },
  {
   "name": "name2",
   "port": 8080
  }
 ]
}

各サービス名に複数のポートを割り当てるには、そのサービス名の複数の項目を作成します。たとえば、ポート 102080name1 に割り当てることができます。さらに、ポート 8080name2 に割り当てます。

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 10
  },
  {
   "name": "name1",
   "port": 20
  }
  {
   "name": "name1",
   "port": 80
  }
  {
   "name": "name2",
   "port": 8080
  }
  {
   "name": "name3",
   "port": 80
  }
  {
   "name": "name4",
   "port": 8080
  }
 ]
}

マネージド インスタンス グループにすでに割り当てられている名前付きポートのリストを表示するには、そのグループを指す GET リクエストを作成します。

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント