ターゲット プール

ターゲット プールのリソースは、転送ルールから受信トラフィックを受け取る必要のあるインスタンスのグループを定義します。転送ルールがターゲット プールにトラフィックを振り向けるときに、Google Compute Engine は送信元 IP、ポート、宛先 IP、ポートのハッシュに基づき、これらのターゲット プールからインスタンスを選択します。トラフィックがインスタンスに分散される仕組みの詳細については、負荷分散アルゴリズムをご覧ください。

ターゲット プールとともに使用できる転送ルールは、TCPUDP のトラフィックを処理するものに限られます。その他のすべてのプロトコルには、ターゲット インスタンスを作成する必要があります。ターゲット プールを転送ルールと組み合わせて使用するには、その前にターゲット プールを新たに作成する必要があります。各プロジェクトには、最大 50 個のターゲット プールを設定できます。ターゲット プールに設定できるヘルスチェックは 1 つだけです。ネットワーク負荷分散は、httpHealthChecks のみをサポートします。

ネットワーク負荷分散は Compute Engine Autoscaler をサポートします。この機能により、ユーザーは CPU の使用率またはユーザー定義の Stackdriver Monitoring 指標に基づいて、ターゲット プール内のインスタンス グループに対して自動スケーリングを実行できるようになります。詳細については、ネットワーク負荷分散に基づくスケーリングをご覧ください。

ターゲット プールのプロパティ

ターゲット プールは次のプロパティで構成されます。

name
(必須)このターゲット プールの名前。名前はこのプロジェクト内で固有であり、63 文字以内の長さで、正規表現 [a-z]([-a-z0-9]*[a-z0-9])? と一致している必要があります。この正規表現は、先頭文字には小文字を使用し、残りの文字には、ダッシュ、小文字、数字を使用する必要があることを示しています。ただし最後の文字にはダッシュを使用できません。
description
(省略可)このターゲット プールのユーザー定義の説明。
region

(必須)このターゲット プールが設定されるリージョンの完全修飾 URL。これは必要とするインスタンスが設定されるリージョンと同じリージョンを示す必要があります。次に例を示します。

"region" : "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]"
healthChecks[ ]

(省略可)このターゲット プールのヘルスチェックの省略可能リスト。特定のターゲット プールに設定できるヘルスチェックは 1 つだけです。詳しくは、ヘルスチェックをご覧ください。

instances[ ]

(必須)このターゲット プールのトラフィックを処理するインスタンス URL のリスト。すべてのインスタンスは、ターゲット プールと同じリージョンに存在している必要がありますが、インスタンスは単一のリージョン内の異なるゾーンに属することができます。次に例を示します。

"instances" : [
  "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE]",
  "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE-2]"
]

sessionAffinity

(省略可)バックエンドの仮想マシン インスタンスを選択するために使用する方法を制御します。この値は、ターゲット プールの作成時にのみ設定できます。設定した値は変更できません。ハッシュ方式は、以下の 5 つの値のサブセットに基づいてバックエンドを選択します。

  • 送信元 IP / 宛先 IP
  • 送信元ポート / 宛先ポート
  • レイヤ 4 プロトコル(TCP、UDP)

設定可能なハッシュは以下のとおりです。

NONE (ハッシュ値が指定されていない)(デフォルト)
送信元 IP、宛先 IP、送信元ポート、宛先ポート、プロトコルを使用する 5 タプルハッシュ。新しい接続はそれぞれどのインスタンスになってもかまいませんが、所定の接続のすべてのトラフィックは、インスタンスが正常に保たれている場合は同じインスタンスに留まります。
CLIENT_IP_PROTO
送信元 IP、宛先 IP、プロトコルを使用する 3 タプルハッシュ。クライアントからのすべての接続は、同じプロトコルを使用し、インスタンスが正常に保たれている限りは、同じインスタンスになります。
CLIENT_IP
送信元 IP と宛先 IP を使用する 2 タプルハッシュ。クライアントからのすべての接続は、インスタンスが正常に保たれている限りは、どのプロトコルでも同じインスタンスになります。

5 タプルハッシュにより、多くの仮想マシンにまたがる優れたトラフィックの分散が実現します。ただし、同じクライアントからの 2 番目のセッションは、送信元ポートが変わる可能性があるため、別のインスタンスに到達することがあります。バックエンドの正常性が保たれている限り、同じクライアントのすべてのセッションが同じバックエンドに到達できるようにしたい場合、CLIENT_IP_PROTO オプションまたは CLIENT_IP オプションを指定します。

一般的に、3 タプル方式または 2 タプル方式を選択した場合、デフォルトの 5 タプル方式よりも優れたセッション アフィニティが実現しますが、トラフィック全体は均等に分散されない可能性があります。

断片化された UDP パケット: 断片化される可能性がある UDP トラフィックの負荷を分散する場合、セッション アフィニティを CLIENT_IP_PROTO または CLIENT_IP に設定します。NONE(5 タプルハッシュ)は使用しないでください。これは、UDP フラグメントには、最初のフラグメントを除き、ポート番号が含まれないため、ロードバランサがポートのないフラグメントをドロップする可能性があるためです。詳しくは、負荷分散と断片化された UDP パケットをご覧ください。

注: クライアントの大部分がプロキシ サーバーの背後にある場合は、CLIENT_IP_PROTO または CLIENT_IP を使用しないでください。使用した場合、これらのクライアントからのすべてのトラフィックが同じインスタンスに送信されることになります。

backupPool

(省略可)別のターゲット プールのリソースの完全修飾 URL。この機能を使用するには、failoverRatio を定義する必要があります。プライマリ ターゲット プール内の正常な仮想マシンの比率が failoverRatio を下回った場合、Compute Engine からトラフィックがバックアップ プールに送信されます。プライマリ ターゲット プールごとに提供できるバックアップ プールは 1 つだけです。バックアップ プールは、プライマリ ターゲット プールと同じリージョンに置かれる必要があります。プライマリ ターゲット プール内の正常なインスタンスの比率がフェイルオーバーの比率を下回った場合は、トラフィックをルーティングするため、Google Compute Engine は以下のルールを使用します。

  1. プライマリ ターゲット プールが正常でない(フェイルオーバーの比率を下回った)とされた場合、バックアップ プールの正常なインスタンスにトラフィックが送信されます。
  2. プライマリ ターゲット プールが正常でないとされたが、バックアップ プールに正常なインスタンスが残っていない場合、プライマリ プールに残っている正常なインスタンスにトラフィックが送信されます。
  3. プライマリ プールが正常でなく、どちらのプールにも正常なインスタンスが残っていない場合、トラフィックをドロップしないように、プライマリ プールのすべてのインスタンスにトラフィックが送信されます。
  4. プライマリ プールにインスタンスが含まれず、バックアップ プールのインスタンスのいずれも正常でない場合、トラフィックをドロップしないように、バックアップ プールのすべてのインスタンスにトラフィックが送信されます。

サポートの対象となるフェイルオーバーのレベルは 1 つだけです。たとえば、ターゲット プール A にバックアップ プール B があり、バックアップ プール B にバックアップ プール C がある場合、ターゲット プール A を対象とするトラフィックは、バックアップ プール C ではなく B のみに到達できます。

注: バックアップ ターゲット プールを使用する場合、ヘルスチェックが有効になっていないと、バックアップ ターゲット プールが正しく機能しないため、ヘルスチェックをセットアップする必要があります。

failoverRatio

(省略可)このターゲット プールが正常ではないと宣言する基準となる、0.01.0 の範囲の浮動小数点数を指定します。たとえば、この値が .1 に設定されていると、正常なインスタンス数が .1(10%)未満の場合、このターゲット プールは正常ではないと宣言されます。フェイルオーバー比が 0.0 の場合、正常であるとみなされるには、少なくとも 1 つのバックエンドが正常である必要があります。フェイルオーバー比が 1.0 に設定されている場合、正常と見なされるには、すべてのインスタンスが正常である必要があります。backupPool フィールドを定義する場合は、これを定義する必要があります。

下の図は、フェイルオーバーの比率とバックアップ プールが連携してどのように機能するかを示したものです。

フェイルオーバーの比率とバックアップ プールの表示

ターゲット プールの追加

gcloud compute を使用してターゲット プールを追加するには、target-pools create コマンドを使用します。

gcloud compute target-pools create TARGET_POOL \
    [--backup-pool BACKUP_POOL] \
    [--description DESCRIPTION] \
    [--failover-ratio FAILOVER_RATIO] \
    [--http-health-check HEALTH_CHECK] \
    [--session-affinity SESSION_AFFINITY; default="NONE"]

API でターゲット プールを作成するには、次の URI に HTTP POST リクエストを実行します。

https://www.googleapis.com/v1/compute/projects/[PROJECT_ID]/regions/[REGION]/targetPools

{
  "name": name,
  "instances": [
     "https://www.googleapis.com/v1/compute/project/[PROJECT_ID]/[ZONE]/[ZONE]/instances/[INSTANCE]",
     "https://www.googleapis.com/v1/compute/project/[PROJECT_ID]/[ZONE]/[ZONE]/instances/[INSTANCE-2]",
  ]
}

ターゲット プールのインスタンスの追加または削除

gcloud compute を使用してターゲット プールにインスタンスを追加するには、target-pools add-instances コマンドを使用します。

gcloud compute target-pools add-instances TARGET_POOL \
    --instances INSTANCE,[INSTANCE,...]

インスタンスを削除するには、target-pools remove-instances コマンドを使用します。

gcloud compute target-pools remove-instances TARGET_POOL \
    --instances INSTANCE,[INSTANCE,...]

API の場合は、POST リクエストを次の URI に送信します。

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/removeInstance
https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/addInstance

リクエストの本文の中で、追加または削除するインスタンスの完全修飾 URI を指定する必要があります。

{
 "instances": [
    {"instance": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE]"},
    {"instance": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE-2]"}
  ]
}

詳細については、API リファレンス ドキュメントで targetPools.addInstance メソッドと targetPools.removeInstance メソッドを参照してください。

ターゲット プールの一覧表示

gcloud compute を使用して既存のターゲット プールの一覧を表示するには、target-pools list コマンドを使用します。

gcloud compute target-pools list

詳細出力を得るには、describe コマンドを使用してプール名を指定します。

gcloud compute target-pools describe TARGET_POOL

API の場合は、次の URI に GET リクエストを送信します。

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools

ターゲット プールの取得

gcloud compute を使用して単一のターゲット プールに関する情報を取得するには、target-pools describe コマンドを使用します。

gcloud compute target-pools describe TARGET_POOL

API の場合は、空の GET リクエストを次の URI に送信します。

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]

インスタンスの正常性状況の取得

ターゲット プール内の 1 つまたはすべてのインスタンスの現在の正常性を調べるには、gcloud compute target-pools get-health コマンドを使用します。

gcloud compute を使用してターゲット プール内の 1 つまたはすべてのインスタンスの現在の正常性を調べるには、target-pools get-health コマンドを使用します。

gcloud compute target-pools get-health TARGET_POOL \
    [--fields FIELDS [FIELDS ...]] \
    [--format FORMAT; default="yaml"] \
    [--limit LIMIT] \
    [--raw-links] \
    [--sort-by SORT_BY]

設定済みのヘルスチェックの指定に従い、コマンドから正常性状況が正常または異常のいずれかで戻されます。

API の場合は、リクエスト ボディに指定したインスタンスを使用して、HTTP POST リクエストを次の URI に対して実行します。

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/getHealth

{
  "instance": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE]"
}

ターゲット プールの削除

ターゲット プールを削除するには、そのターゲット プールがどの転送ルールでも参照されていないことを確認する必要があります。転送ルールが現在ターゲット プールを参照している場合、その転送ルールを削除して、参照を削除する必要があります。

gcloud compute を使用してターゲット プールを削除するには、target-pools delete コマンドを使用します。

gcloud compute target-pools delete TARGET_POOL

API の場合は、空の DELETE リクエストを次の URI に送信します。

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]

ターゲット プールのヘルスチェックの追加または削除

ヘルスチェック オブジェクトは、ターゲット プールとの関連付けまたは関連付けの解除が可能なスタンドアロンのグローバル リソースです。

ターゲット プールに関連付けられているヘルスチェックがない場合、Google Compute Engine はすべてのインスタンスを正常とみなし、ターゲット プール内のすべてのインスタンスにトラフィックを送信します。ただし、ヘルスチェックなしでターゲット プールの正常性状況を照会すると、ターゲット プールにヘルスチェックが備わっていないことを示す unhealthy 状況が戻されます。インスタンスの管理をサポートするため、ターゲット プールにヘルスチェックを関連付けることを推奨します。

gcloud compute を使用してターゲット プールにヘルスチェックを追加するには、target-pools add-health-checks コマンドを使用します。

gcloud compute target-pools add-health-checks TARGET_POOL \
    --http-health-check HEALTH_CHECK

ヘルスチェックを削除するには、target-pools remove-health-checks コマンドを使用します。

gcloud compute target-pools remove-health-checks TARGET_POOL \
  --http-health-check HEALTH_CHECK

API を使用してヘルスチェックの関連付けまたは関連付けの解除を行うには、該当する URI に対して HTTP POST リクエストを行います。

https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/removeHealthCheck
https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/addHealthCheck

リクエストの本文には、関連付けるまたは関連付けを解除するヘルスチェックが含まれている必要があります。

{
  "healthCheck": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/httpHealthChecks/HEALTH_CHECK"
}

詳細については、API リファレンス ドキュメントで targetPools.addHealthChecktargetPools.removeHealthCheck を参照してください。

バックアップ ターゲット プールの追加または削除

ターゲット プールを初めて作成するときに、プライマリ ターゲット プールが正常でなくなる場合にトラフィックを受け取るバックアップ ターゲット プールを適用することができます。

バックアップ ターゲット プールを一度もセットアップしたことがない場合は、機能が正しく動作するようにヘルスチェックもセットアップする必要があります。

gcloud compute を使用してバックアップ プールリソースを更新するには、target-pools set-backup コマンドを使用します。

gcloud compute target-pools set-backup TARGET_POOL \
    --backup-pool BACKUP_POOL \
    --failover-ratio FAILOVER_RATIO

API を使用してバックアップ プールを更新または削除するリクエストを実行するには、次の URI に POST リクエストを送信します。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/[TARGET_POOL]/setBackup?failoverRatio=FAILOVER

{
  "target": "https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/targetPools/BACKUP_POOL"
}

空のターゲットを定義した場合、またはフェイルオーバーの比率を定義しなかった場合、バックアップ プールの動作はこのターゲット プールで無効になります。

詳細については、API リファレンス ドキュメントで targetPools.setBackup を参照してください。

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

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

Compute Engine ドキュメント