ヘルスチェックの作成

Google Cloud にはヘルスチェックのメカニズムがあり、VM インスタンスがトラフィックに適切に反応しているかどうかが判定されます。このドキュメントでは、ロードバランサのヘルスチェックの作成と使用の方法について説明します。

このページでは、次のコンセプトを理解していることを前提としています。

ヘルスチェックのカテゴリ、プロトコル、ポート

Google Cloud では、ヘルスチェックがカテゴリとプロトコル別にまとめられています。

ヘルスチェックには、ヘルスチェックレガシー ヘルスチェックの 2 つのカテゴリがあります。それぞれのカテゴリで、対応するプロトコル セットと、ヘルスチェックに使用するポートの指定方法が異なります。

ロードバランサの大半で非レガシー ヘルスチェックが使用されますが、ネットワーク負荷分散ではレガシー ヘルスチェックを使用する必要があります。適切なカテゴリ、プロトコル、ポートの指定方法の決定については、ヘルスチェックのコンセプトのページのヘルスチェックを選択するをご覧ください。

ヘルスチェックに選択したプロトコルをロードバランサで使用されるプロトコルと一致させる必要はありません。また、一致させることが不可能な場合もあります。詳細は、プロトコルとロードバランサをご覧ください。

「ヘルスチェック」という用語は、レガシー ヘルスチェックを指すものではありません。このドキュメントでレガシー ヘルスチェックを指す場合は、はっきり「レガシー ヘルスチェック」と表記します。

ヘルスチェックの一覧表示

Console

  1. Google Cloud Console の [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  2. ヘルスチェックをクリックすると詳細が表示されます。

gcloud

ヘルスチェックを一覧表示するには、compute health-checks list コマンドを使用します。

  • グローバル ヘルスチェックを一覧表示するには:

    gcloud compute health-checks list \
       --global
    
  • リージョン ヘルスチェックを一覧表示する場合は、region-list を対象の Google Cloud リージョンのカンマ区切りリストに置き換えます。

    gcloud compute health-checks list \
       --regions=region-list
    

ヘルスチェックの名前とスコープがわかったら、compute health-checks describe コマンドを使用して現在の構成を表示します。

  • グローバル ヘルスチェックを記述するには、name をその名前に置き換えます。

    gcloud compute health-checks describe name \
       --global
    
  • リージョン ヘルスチェックを記述するには、name をその名前に、region をそのリージョンに置き換えます。

    gcloud compute health-checks describe name \
       --region=region
    

API

ヘルスチェックを一覧表示するには、次の API 呼び出しを使用します。

ヘルスチェックの現在の構成を記述するには、次の API 呼び出しを使用します。

ヘルスチェックの作成

Google Cloud では、Cloud Console でロードバランサのバックエンド構成の完了時にヘルスチェックを作成または選択できます。

また、ロードバランサの構成とは別に Cloud Console でヘルスチェックを作成することもできます。これは、最初にヘルスチェックを作成する必要がある場合や、複数のロードバランサで同じヘルスチェックを使用する必要がある場合に実用的です。ヘルスチェックの作成には、Cloud Console、gcloud コマンドライン ツール、REST API を使用できます。

Console

  1. Google Cloud Console の [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  2. [ヘルスチェックを作成] をクリックします。
  3. ヘルスチェックの作成ページで、次の情報を入力します。
    • 名前: ヘルスチェックの名前を指定します。
    • 説明: 必要に応じて、説明を入力します。
    • プロトコル: ヘルスチェック プロトコルを選択します。
    • ポート: ポート番号を指定します。Cloud Console でヘルスチェックを作成する場合は、ポート番号を使用してポートを指定する必要があります。
    • プロキシ プロトコル: 必要に応じてヘルスチェック プローブ システムから送信されたリクエストにプロキシ ヘッダーを追加できます。
    • リクエストパスとレスポンス: HTTP、HTTPS、HTTP2 のプロトコルの場合は、必要に応じてヘルスチェック プローブ システムが接続する URL パスを指定できます。詳細については、HTTP、HTTPS、HTTP/2 ヘルスチェックの追加フラグをご覧ください。
    • リクエストレスポンス: TCP および SSL プロトコルでは、送信する ASCII テキスト文字列とレスポンスの想定文字列を指定できます。詳細については、SSL、TCP ヘルスチェックの追加フラグをご覧ください。
    • チェック間隔: プローブを開始してから次のブローブを開始するまでの時間を指定します。
    • タイムアウト: Google Cloud がプローブに対するレスポンスを待つ時間を定義します。この値は、チェック間隔の値以下にする必要があります。
    • 正常しきい値: VM インスタンスが正常であると判定するために必要になるプローブ成功の連続回数を定義します。
    • 異常しきい値: VM インスタンスが正常でないと判定するために必要になるプローブ失敗の連続回数を定義します。
  4. [作成] をクリックします。

gcloud

  • グローバル ヘルスチェックを作成するには、適切な compute health-checks create コマンドを使用します。

    gcloud compute health-checks create protocol name \
        --global \
        --description=description \
        --check-interval=check-interval \
        --timeout=timeout \
        --healthy-threshold=healthy-threshold \
        --unhealthy-threshold=unhealthy-threshold \
        port specification \
        ...additional flags
    
  • リージョン ヘルスチェックを作成するには、適切な compute health-checks create コマンドを使用します。

    gcloud compute health-checks create protocol name \
        --region=region \
        --description=description \
        --check-interval=check-interval \
        --timeout=timeout \
        --healthy-threshold=healthy-threshold \
        --unhealthy-threshold=unhealthy-threshold \
        port specification \
        ...additional flags
    

ここで

  • protocol には、ヘルスチェックに使用されるプロトコルを指定します。有効なオプションは httphttpshttp2ssltcpです。
  • name は、ヘルスチェックの名前です。特定のプロジェクト内: 各グローバル ヘルスチェックには一意の名前を付ける必要があります。リージョン ヘルスチェックには、特定のリージョン内で一意の名前を付ける必要があります。
  • region: 内部 HTTP(S) ロードバランサを除くすべてのロードバランサは、グローバル ヘルスチェック(--global)を使用します。リージョンはバックエンド サービスのリージョンと一致する必要があります。
  • description は省略可能な説明です。
  • check-interval は、1 回のヘルスチェック プローブ システムの接続の開始からその次の回の開始までの時間です。単位は秒です。省略した場合、Google Cloud では 5s(5 秒)の値が使用されます。
  • timeout は、Google Cloud がプローブに対するレスポンスを待つ時間です。timeout の値は check-interval 以下にする必要があります。単位は秒です。省略した場合、Google Cloud では 5s(5 秒)の値が使用されます。
  • healthy-thresholdunhealthy-threshold はそれぞれ、VM インスタンスが正常であるか、正常でないかを判定するために必要になるプローブの成功または失敗の連続回数を示します。いずれのしきい値も省略されている場合は、デフォルトの 2 が使用されます。
  • port specification: ポート指定フラグのいずれかを使用してポート指定を定義します。
  • ...additional flags は、protocol に固有のポートとオプションを指定するための追加フラグです。HTTP、HTTPS、HTTP/2 ヘルスチェックの追加フラグまたは SSL、TCP ヘルスチェックの追加フラグをご覧ください。

API

ヘルスチェックの変更

ヘルスチェックを変更して、ヘルスチェックをレガシー ヘルスチェック(またはその逆)に変換することはできません。また、ヘルスチェックの名前やスコープを変更することもできません(例: グローバルからリージョンなど)。

Console

  1. Google Cloud Console の [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  2. ヘルスチェックをクリックすると詳細が表示されます。
  3. ヘルスチェックを変更する必要がある場合は、[編集] をクリックして次の操作を行います。
    • 必要に応じてパラメータを変更します。
    • [保存] をクリックします。

gcloud

  1. ヘルスチェックの名前とスコープを指定します。手順については、ヘルスチェックの一覧表示をご覧ください。

  2. ヘルスチェックの名前、プロトコル、スコープを除き、共通フラグポート指定フラグオプション フラグを変更できます。既存のヘルスチェックを変更するには、適切な compute health-checks update コマンドを使用します。省略したフラグには事前構成の値が使用されます。

    • グローバル ヘルスチェックの変更例: 次のコマンドは、hc-http-port-80 という名前のグローバル HTTP ヘルスチェックのチェック間隔、タイムアウト、リクエストパスを変更します。

      gcloud compute health-checks update http hc-http-port-80 \
          --global \
          --check-interval=20s \
          --timeout=15s \
          --request-path="/health"
      
    • リージョン ヘルスチェックの変更例: 次のコマンドは、hc-west1-tcp-ldap という名前の us-west1 でリージョン TCP ヘルスチェックのポート指定を変更します。

      gcloud compute health-checks update tcp hc-west1-tcp-ldap \
          --region=us-west1 \
          --port=631
      

API

  1. ヘルスチェックの名前とスコープを特定します。手順については、ヘルスチェックの一覧表示をご覧ください。

  2. これらの API 呼び出しでは、ヘルスチェックの名前、プロトコル、スコープを除き、共通フラグポート指定フラグオプション フラグを変更できます。patch API 呼び出しでは、リクエストで明示的に設定されていない事前構成が保持されます。

追加フラグ

このセクションでは、ヘルスチェックを作成または変更するときに使用できるその他のフラグについて説明します。ポート指定などの一部のフラグは、gcloud または API を使用して設定する必要があります。

ポート指定フラグ

gcloud コマンドライン ツールまたは API を使用してヘルスチェックを作成する場合、ヘルスチェックのポートを指定するオプションが 2 つあります。次の表に、有効なロードバランサとバックエンドの組み合わせに対するポート指定オプションを示します。インスタンス グループという用語は、非マネージド インスタンス グループ、ゾーンのマネージド インスタンス グループ、リージョンのマネージド インスタンス グループを指します。

各ヘルスチェックで使用できるポート指定のタイプは 1 種類のみです。

ロードバランサ バックエンド タイプ ポート指定オプション
内部 TCP/UDP 負荷分散 インスタンス グループ --port: TCP ポートを 1 から 65535 の数値で指定します。
内部 TCP/UDP ロードバランサのバックエンド サービスにはポートの指定がないため、内部 TCP/UDP ロードバランサと関連付けられたヘルスチェックに --use-serving-port フラグは使用できません。
内部 HTTP(S) 負荷分散
TCP プロキシ負荷分散
SSL プロキシ負荷分散
外部 HTTP(S) 負荷分散
ゾーン NEG --port: TCP ポートを 1 から 65535 の番号で指定します。
--use-serving-port: ネットワーク エンドポイント グループ内の各エンドポイントのポートを使用します。
インスタンス グループ --port: TCP ポートを 1 から 65535 の番号で指定します。
--use-serving-port: バックエンド サービスがサブスクライブするポートと同じインスタンス グループを使用します。

ポート指定を省略すると、Google Cloud は次のデフォルトを使用します。

  • ヘルスチェックのプロトコルが TCP または HTTP の場合は、--port=80 を使用します。
  • ヘルスチェックのプロトコルが SSLHTTPSHTTP2 の場合は、--port=443 を使用します。

HTTP、HTTPS、HTTP/2 ヘルスチェックの追加フラグ

HTTP、HTTPS、HTTP/2 のヘルスチェックには、共通のフラグとポートの指定に加えて、次のオプションのフラグも使用できます。次の例では、間隔、タイムアウト値、正常性しきい値基準にデフォルト値を使用し、ポート 80 を使用する hc-http-port-80 という名前の HTTP ヘルスチェックを作成します。

gcloud compute health-checks create http-protocol hc-http-port-80 \
    common flags... \
    port specification \
    --host=host \
    --proxy-header=proxy-header \
    --request-path=request-path \
    --response=response
  • http-protocol: http(TLS なしの HTTP/1.1)、https(TLS を使用する HTTP/1.1)、http2(TLS を使用する HTTP/2)のいずれかです。
  • common flags...: 共通フラグを定義します。作成手順をご覧ください。
  • port specification: ポート指定フラグのいずれかを使用してポート指定を定義します。
  • host を使用すると、Host HTTP ヘッダーを指定できます。省略した場合は、ロードバランサの転送ルールの IP アドレスが使用されます。
  • proxy-header は、NONEPROXY_V1 のいずれかにする必要があります。省略した場合は、Google Cloud では NONE が使用されます。PROXY_V1 の値には、ヘッダー PROXY UNKNOWN\r\n が追加されます。
  • request-path には、ヘルスチェック リクエストの送信時に Google Cloud が使用する URL パスを指定します。省略すると、ヘルスチェック リクエストは / に送信されます。
  • response では、想定される任意のレスポンスを指定します。レスポンスの文字列は次のルールに従って表します。
    • レスポンス文字列は、ASCII 文字、数字、スペースで構成する必要があります。
    • レスポンス文字列は最長 1,024 文字です。
    • ワイルドカード マッチングはサポートされていません
    • コンテンツ ベースのチェックでは、たとえば、HAProxy における ! 演算子などの反転法はサポートされません。

Google Cloud が受信したレスポンス本文の最初の 1,024 バイトのうちのどこかで想定されるレスポンス文字列を検出し、さらに HTTP ステータスが 200(OK)の場合、プローブは正常終了と見なされます。

ヘルスチェック プローブの正常完了条件は、--request-path フラグと --response フラグによって変わります。

SSL、TCP ヘルスチェックの追加フラグ

SSL と TCP のヘルスチェックには、共通のフラグとポートの指定に加えて、次のオプションのフラグを使用できます。次の例では、間隔、タイムアウト値、正常性しきい値基準にデフォルト値を使用し、ポート 3268 を使用する hc-tcp-3268 という名前の TCP ヘルスチェックを作成します。

gcloud compute health-checks create tcp hc-tcp-3268 \
    common flags... \
    port specification \
    --proxy-header=proxy-header \
    --request=request-string \
    --response=response-string
  • プロトコルには、tcp(この例)または ssl を使用できます。
  • common flags...: 共通フラグを定義します。作成手順をご覧ください。
  • port specification: ポート指定フラグのいずれかを使用してポート指定を定義します。
  • proxy-header は、NONEPROXY_V1 のいずれかにする必要があります。省略した場合は、Google Cloud では NONE が使用されます。PROXY_V1 の値には、ヘッダー PROXY UNKNOWN\r\n が追加されます。
  • request-string: TCP または SSL セッションが確立されると送信される最長 1024 文字の ASCII 文字を指定できます。
  • response-string: レスポンスとして想定される最長 1,024 文字の ASCII 文字列を指定できます。

ヘルスチェック プローブの正常完了条件は、--request フラグと --response フラグによって変わります。--response フラグを単独、あるいは --request フラグとともに使用する場合は、返されるレスポンスがレスポンスの想定文字列と完全に一致する必要があります。

レガシー ヘルスチェック

このセクションでは、レガシー HTTP ヘルスチェックとレガシー HTTPS ヘルスチェックの両方を一覧表示、作成、変更する方法について説明します。ネットワーク ロードバランサで使用できるのはレガシー HTTP ヘルスチェックのみで、レガシー HTTPS ヘルスチェックは使用できません。

レガシー ヘルスチェックの一覧表示

Console

  1. Google Cloud Console の [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  2. レガシー ヘルスチェックをクリックすると詳細が表示されます。

gcloud

  1. レガシー HTTP ヘルスチェックを一覧表示するには、compute http-health-checks list コマンドを使用します。

    gcloud compute http-health-checks list
    

    レガシー HTTPS ヘルスチェックを一覧表示するには、compute https-health-checks list コマンドを使用します。

    gcloud compute https-health-checks list
    
  2. レガシー HTTP ヘルスチェックを記述するには、compute http-health-checks describe コマンドを使用して、name をその名前に置き換えます。

    gcloud compute http-health-checks describe name
    

    レガシー HTTPS ヘルスチェックを記述するには、compute https-health-checks describe コマンドを使用して、name をその名前に置き換えます。

    gcloud compute https-health-checks describe name
    

API

  1. レガシー ヘルスチェックを一覧表示するには:

    • httpHealthChecks.list を使用して、レガシー HTTP ヘルスチェックを一覧表示します。

    • httpsHealthChecks.list を使用して、レガシー HTTPS ヘルスチェックを一覧表示します。

  2. レガシー ヘルスチェックを記述するには:

レガシー ヘルスチェックの作成

Console

Cloud Console のヘルスチェック ページには、ヘルスチェックとレガシー ヘルスチェックの両方が表示され、編集できますが、Cloud Console のヘルスチェック ページから作成することはできません。

レガシー ヘルスチェックを作成するには、Cloud Console のネットワーク ロードバランサ ページを使用するか、このセクションの gcloud または API の手順を使用します。

gcloud

レガシー ヘルスチェックを作成するには、compute http-health-checks create コマンドを使用します。

gcloud compute legacy-check-type create name \
    --description=description \
    --check-interval=check-interval \
    --timeout=timeout \
    --healthy-threshold=healthy-threshold \
    --unhealthy-threshold=unhealthy-threshold \
    --host=host \
    --port=port \
    --request-path=request-path

ここで

  • レガシー HTTP ヘルスチェックの場合、legacy-check-typehttp-health-checks です。レガシー HTTPS ヘルスチェックの場合は https-health-checks です。ネットワーク ロードバランサのレガシー ヘルスチェックを作成する場合は、http-health-checks を使用する必要があります。
  • name は、レガシー ヘルスチェックの名前です。各レガシー ヘルスチェックにはプロジェクト内で一意の名前を付ける必要があります。
  • description は省略可能な説明です。
  • check-interval は、1 回のプローブの開始から次の回のブローブ開始までの時間です。単位は秒です。省略した場合、Google Cloud では 5s(5 秒)の値が使用されます。
  • timeout は、Google Cloud でプローブに対するレスポンスを待つ時間です。timeout の値は check-interval 以下にする必要があります。単位は秒です。省略した場合、Google Cloud では 5s(5 秒)の値が使用されます。
  • healthy-thresholdunhealthy-threshold はそれぞれ、VM インスタンスが正常であるか、正常でないかを判定するために必要になるプローブの成功または失敗の連続回数を示します。いずれのしきい値も省略されている場合は、デフォルトの 2 が使用されます。
  • host を使用すると、ホストの HTTP ヘッダーを指定できます。省略した場合は、ロードバランサの転送ルールの IP アドレスが使用されます。
  • port には、ポート番号を指定できます。省略した場合は、Google Cloud では 80 が使用されます。
  • request-path には、ヘルスチェック リクエストの送信時に Google Cloud が使用する URL パスを指定します。省略すると、ヘルスチェック リクエストは / に送信されます。

API

  • レガシー HTTP ヘルスチェックを作成するには、httpHealthChecks.insert API 呼び出しを使用します。

  • レガシー HTTPS ヘルスチェックを作成するには、httpsHealthChecks.insert を使用します。

レガシー ヘルスチェックの変更

Console

  1. Google Cloud Console の [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  2. ヘルスチェックをクリックすると詳細が表示されます。
  3. [編集]()をクリックし、変更を行い、[保存] をクリックします。

gcloud

  • レガシー HTTP ヘルスチェックを変更するには、compute http-health-checks update コマンドを使用します。name はその名前で置き換えます。gcloud を使用してレガシー ヘルスチェックを変更する場合、省略したフラグには事前構成された値が使用されます。...other options は、レガシー ヘルスチェックの作成で説明されているオプションです。

    gcloud compute http-health-checks update name \
      ...other options
    
  • レガシー HTTPS ヘルスチェックを変更するには、compute https-health-checks update コマンドを使用します。name はその名前で置き換えます。gcloud を使用してレガシー ヘルスチェックを変更する場合、省略したフラグには事前構成された値が使用されます。...other options は、レガシー ヘルスチェックの作成で説明されているオプションです。

    gcloud compute https-health-checks update name \
      ...other options
    

API

レガシー ヘルスチェックの名前とタイプを除き、その作成に使用するフラグのいずれも変更可能です。patch API 呼び出しでは、パッチ リクエストで明示的に設定されていない事前構成済みの設定が保持されます。

必要なファイアウォール ルール

ヘルスチェック プローバーの IP 範囲からのトラフィックを許可するには、負荷分散対象のすべての VM に適用される上り(内向き)ファイアウォール ルールを作成する必要があります。次の例では、ターゲットタグによって VM インスタンスに適用されるファイアウォール ルールを作成します。ファイアウォール ルールのターゲットの指定の詳細については、「ファイアウォール ルールの概要」のターゲットの説明ネットワーク タグの構成をご覧ください。

次の各例では、Google Cloud ヘルスチェック システムから VM インスタンスへのすべての TCP トラフィックが許可されます。この TCP トラフィックには SSL、HTTP、HTTPS、HTTP/2 のトラフィックが含まれます。必要に応じて、ポートを TCP プロトコルとともに指定することもできます。ただし、ポートを指定すると、ファイアウォール ルールが特定のヘルスチェックに限定される場合があります。プロトコルとポートに tcp:80 を使用すると、ポート 80 で TCP トラフィックが許可されます。このため Google Cloud は VM に HTTP を使用してポート 80 で接続できますが、HTTPS を使用したポート 443 での接続はできないことになります。

ヘルスチェックのファイアウォール ルール

次の例では、以下のロードバランサの上り(内向き)ファイアウォール ルールを作成します。

  • 内部 TCP / UDP 負荷分散(ヘルスチェック)
  • 内部 HTTP(S) 負荷分散(ヘルスチェック)
  • TCP プロキシ負荷分散(ヘルスチェック)
  • SSL プロキシ負荷分散(ヘルスチェック)
  • HTTP(S) 負荷分散(ヘルスチェックおよびレガシー ヘルスチェック)

これらのロードバランサの場合、ヘルスチェックのソース IP 範囲は次のようになります(HTTP(S) 負荷分散に使用する場合はレガシー ヘルスチェックを含む)。

  • 35.191.0.0/16
  • 130.211.0.0/22

内部 HTTP(S) 負荷分散の場合のみ、ソース IP 範囲はプロキシ専用サブネット内のすべての IP アドレスになります。

ネットワーク負荷分散のためのルールを作成する必要がある場合は、次のセクションのネットワーク負荷分散のためのルールをご覧ください。

Console

  1. Google Cloud Console の [ファイアウォール] ページに移動します。
    [ファイアウォール] ページに移動
  2. [ファイアウォール ルールを作成] をクリックします。
  3. ファイアウォール ルールの作成ページで、次の情報を入力します。
    • 名前: ルールの名前を指定します。この例では、fw-allow-health-checks を使用します。
    • ネットワーク: VPC ネットワークを選択します。
    • 優先度: 優先度の数値を入力します。数字が小さいほど優先度が高くなります。このファイアウォール ルールには、上りトラフィックを拒否する可能性があるその他のルールよりも高い優先度を設定してください。
    • トラフィックの方向: [上り] を選択します。
    • 一致したときのアクション: [許可] を選択します。
    • ターゲット: [指定されたターゲットタグ] を選択し、[ターゲットタグ] テキスト ボックスにタグを入力します。この例では、allow-health-checks を使用します。
    • ソースフィルタ: [IP 範囲] を選択します。
    • ソース IP の範囲: 35.191.0.0/16,130.211.0.0/22
    • 許可対象プロトコルとポート: tcpTCP は、すべてのヘルスチェック プロトコルの基礎となるプロトコルです。
    • [作成] をクリックします。
  4. 負荷分散対象の各インスタンスで、ネットワーク タグを追加して、新しい上り(内向き)ファイアウォール ルールが適用されるようにします。この例では、ネットワーク タグに allow-health-checks を使用します。

gcloud

  1. 次の gcloud コマンドを使用して、Google Cloud ヘルスチェック システムから VPC ネットワーク内のインスタンスへの受信 TCP 接続を allow-health-checks タグで許可する fw-allow-health-checks という名前のファイアウォール ルールを作成します。network-name は、VPC ネットワークの名前に置き換えます。

    gcloud compute firewall-rules create fw-allow-health-checks \
        --network=network-name \
        --action=ALLOW \
        --direction=INGRESS \
        --source-ranges=35.191.0.0/16,130.211.0.0/22 \
        --target-tags=allow-health-checks \
        --rules=tcp
  2. 負荷分散対象の各インスタンスで、ネットワーク タグを追加して、新しい上り(内向き)ファイアウォール ルールが適用されるようにします。この例では、ネットワーク タグに allow-health-checks を使用します。

詳細は、gcloud ファイアウォール ルールのドキュメントAPI ドキュメントをご覧ください。

ネットワーク負荷分散のルール

次の例では、レガシー ヘルスチェックを必要とするネットワーク負荷分散の上りファイアウォール ルールを作成します。ネットワーク負荷分散のレガシー ヘルスチェックのソース IP 範囲は次のとおりです。

  • 35.191.0.0/16
  • 209.85.152.0/22
  • 209.85.204.0/22

Console

  1. Google Cloud Console の [ファイアウォール] ページに移動します。
    [ファイアウォール] ページに移動
  2. [ファイアウォール ルールを作成] をクリックします。
  3. ファイアウォール ルールの作成ページで、次の情報を入力します。
    • 名前: ルールの名前を指定します。この例では、fw-allow-network-lb-health-checks を使用します。
    • ネットワーク: VPC ネットワークを選択します。
    • 優先度: 優先度の数値を入力します。数字が小さいほど優先度が高くなります。このファイアウォール ルールには、上りトラフィックを拒否する可能性があるその他のルールよりも高い優先度を設定してください。
    • トラフィックの方向: [上り] を選択します。
    • 一致したときのアクション: [許可] を選択します。
    • ターゲット: [指定されたターゲットタグ] を選択し、[ターゲットタグ] テキスト ボックスにタグを入力します。この例では、allow-network-lb-health-checks を使用します。
    • ソースフィルタ: [IP 範囲] を選択します。
    • ソース IP の範囲: 35.191.0.0/16, 209.85.152.0/22, 209.85.204.0/22
    • 許可対象プロトコルとポート: tcpTCP は、HTTP と HTTPS の基礎となるプロトコルです。
    • [作成] をクリックします。
  4. 負荷分散対象の各インスタンスで、ネットワーク タグを追加して、新しい上り(内向き)ファイアウォール ルールが適用されるようにします。この例では、ネットワーク タグに allow-network-lb-health-checks を使用します。

gcloud

  1. 次の gcloud コマンドを使用して、Google Cloud ヘルスチェック システムから VPC ネットワーク内のインスタンスへの受信 TCP 接続を allow-network-lb-health-checks タグで許可する fw-allow-network-lb-health-checks という名前のファイアウォール ルールを作成します。network-name は、VPC ネットワークの名前に置き換えます。

    gcloud compute firewall-rules create fw-allow-network-lb-health-checks \
        --network=network-name \
        --action=ALLOW \
        --direction=INGRESS \
        --source-ranges=35.191.0.0/16,209.85.152.0/22,209.85.204.0/22 \
        --target-tags=allow-network-lb-health-checks \
        --rules=tcp
  2. 負荷分散対象の各インスタンスで、ネットワーク タグを追加して、新しい上り(内向き)ファイアウォール ルールが適用されるようにします。この例では、ネットワーク タグに allow-network-lb-health-checks を使用します。

詳細は、gcloud ファイアウォール ルールのドキュメントAPI ドキュメントをご覧ください。

ロードバランサへの関連付け

プロトコルとロードバランサ

ロードバランサのバックエンド サービスまたはターゲット プールで使用されるプロトコルとプロトコルが一致するヘルスチェック(またはレガシー ヘルスチェック)を使用するのがおすすめの方法です。ただし、ヘルスチェック プロトコルとロードバランサ プロトコルは同じである必要はありません。次のような例が挙げられます。

  • 内部 TCP/UDP 負荷分散でバックエンド サービスのプロトコルに使用できるのは TCP または UDP だけです。内部 TCP/UDP ロードバランサの背後で VM からの HTTP トラフィックを処理する場合、HTTP プロトコルを使用したヘルスチェックを採用したほうが有益です。

  • ネットワーク ロードバランサでは、レガシー HTTP ヘルスチェックを使用する必要があります。レガシー HTTPS ヘルスチェックや最新のヘルスチェックは使用できません。TCP トラフィックの負荷分散にネットワーク ロードバランサを使用する場合は、負荷分散対象の VM で HTTP サービスを実行して、ヘルスチェック プローブへのレスポンスを可能にする必要があります。

バックエンド サービスのヘルスチェック

このセクションでは、次の種類のロードバランサで、ヘルスチェックをバックエンド サービスに関連付ける方法を説明します。

  • 内部 TCP/UDP 負荷分散
  • 内部 HTTP(S) 負荷分散
  • TCP プロキシ負荷分散
  • SSL プロキシ負荷分散
  • HTTP(S) 負荷分散

このセクションは、すでに以下の処理が行われていることを前提としています。

ヘルスチェックを新しい内部 TCP/UDP ロードバランサ、TCP プロキシ ロードバランサ、SSL プロキシ ロードバランサ、または外部 HTTP(S) ロードバランサに関連付けるには、それぞれのロードバランサの設定ガイドをご覧ください。

Console

ヘルスチェックを既存の内部 TCP/UDP ロードバランサ、TCP プロキシ ロードバランサ、SSL プロキシ ロードバランサ、または外部 HTTP(S) ロードバランサに関連付ける手順は次のとおりです。

  1. Google Cloud Console の [負荷分散] ページに移動します。
    [負荷分散] ページに移動
  2. いずれかのロードバランサをクリックして、その詳細を表示します。
  3. [編集]()をクリックしてから、[バックエンドの構成] をクリックします。
  4. [ヘルスチェック] メニューからいずれかのヘルスチェックを選択します。
  5. [更新] をクリックします。

gcloud

ヘルスチェックを既存のバックエンド サービスに関連付けるには、次の手順に従います。

  1. バックエンド サービスの名前とスコープを特定します。内部 TCP/UDP ロードバランサ、TCP プロキシ ロードバランサ、SSL プロキシ ロードバランサには、ロードバランサごとに 1 つのバックエンドしかありません。外部 HTTP(S) ロードバランサと内部 HTTP(S) ロードバランサには、1 つの URL マップに関連付けられた 1 つ以上のバックエンド サービスがあります。

    • 内部 TCP/UDP ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。region-list は、クエリ対象の Google Cloud リージョンのカンマ区切りリストに置き換えます。

      gcloud compute backend-services list \
          --regions=region-list \
          --filter="loadBalancingScheme=INTERNAL"
      
    • TCP プロキシ ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。TCP プロキシ ロードバランサのバックエンド サービスは、ネットワーク サービス階層に関係なく常にグローバルです。

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=TCP"
      
    • SSL プロキシ ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。SSL プロキシ ロードバランサのバックエンド サービスは、ネットワーク サービス階層に関係なく常にグローバルです。

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=SSL"
      
    • 外部 HTTP(S) ロードバランサのバックエンド サービスを特定するには、まず URL マップを特定してから、そのマップを記述します。外部 HTTP(S) ロードバランサの URL マップとバックエンド サービスは、ネットワーク サービス階層に関係なく常にグローバルです。url-map-name は、URL マップの名前に置き換えます。ロードバランサによって使用されるバックエンド サービスがレスポンスに含まれます。

      gcloud compute url-maps list \
          --global
      
      gcloud compute url-maps describe url-map-name \
          --global
      
    • 内部 HTTP(S) ロードバランサのバックエンド サービスを特定するには、まず URL マップを特定してから、そのマップを記述します。内部 HTTP(S) ロードバランサの URL マップとバックエンド サービスはリージョン単位です。region-list は、クエリ対象の Google Cloud リージョンのカンマ区切りリストに置き換えます。url-map-name は、URL マップの名前で置き換え、region はリージョンで置き換えます。ロードバランサによって使用されるバックエンド サービスがレスポンスに含まれます。

      gcloud compute url-maps list \
          --regions=region-list
      
      gcloud compute url-maps describe url-map-name \
          --region=region
      
  2. ヘルスチェックを特定します。ヘルスチェックの一覧表示をご覧ください。

  3. compute backend-services update コマンドを使用して、ヘルスチェックをバックエンド サービスに関連付けます。各バックエンド サービスは 1 つのヘルスチェックを参照する必要があります。次のコマンドで、backend-service-name をバックエンド サービスの名前に、health-check-name をヘルスチェックの名前に置き換えます。また、region var> は、バックエンド サービス、ヘルスチェック、またはその両方の Google Cloud リージョンに置き換えます。

    • 内部 TCP/UDP ロードバランサのヘルスチェックを変更する場合: 内部 TCP/UDP ロードバランサのバックエンド サービスはグローバル ヘルスチェックを参照する必要があります。

      gcloud compute backend-services update backend-service-name \
          --region=region \
          --health-checks=health-check-name \
          --global-health-checks
      
    • TCP プロキシ ロードバランサ、SSL プロキシ ロードバランサ、または外部 HTTP(S) ロードバランサのヘルスチェックを変更する場合: バックエンド サービスとヘルスチェックはどちらもグローバルです。複数のヘルスチェックが参照される場合、外部 HTTP(S) ロードバランサが複数のバックエンド サービスを参照する可能性があります。

      gcloud compute backend-services update backend-service-name \
          --global \
          --health-checks health-check-name \
          --global-health-checks
      
    • 内部 HTTP(S) ロードバランサのヘルスチェックを変更する場合: バックエンド サービスとヘルスチェックの両方がリージョンです。複数のヘルスチェックが参照される場合、内部 HTTP(S) ロードバランサが複数のバックエンド サービスを参照する可能性があります。

      gcloud compute backend-services update backend-service-name \
          --region=region \
          --health-checks=health-check-name \
          --health-checks-region=region
      

API

  1. バックエンド サービスを一覧表示するには、backendServices.list API 呼び出しを使用します。

  2. ヘルスチェックを表示します。

  3. ヘルスチェックをバックエンド サービスに関連付けるには、次のいずれかの API 呼び出しを使用します。

ネットワーク負荷分散のレガシー ヘルスチェック

このセクションでは、ネットワーク負荷分散のレガシー ヘルスチェックをターゲット プールに関連付ける方法について説明します。このセクションは、すでに以下の処理が行われていることを前提としています。

レガシー ヘルスチェックを新しいネットワーク ロードバランサに関連付けるには、ネットワーク負荷分散の設定をご覧ください。新しいネットワーク ロードバランサを作成するときは、レガシー ヘルスチェックをターゲット プールに関連付ける必要があります。

Console

ヘルスチェックを既存のネットワーク ロードバランサに関連付けるには、次のようにします。

  1. Google Cloud Console の [負荷分散] ページに移動します。
    [負荷分散] ページに移動
  2. いずれかのネットワーク ロードバランサをクリックして、その詳細を表示します。
  3. [編集]()をクリックしてから、[バックエンドの構成] をクリックします。
  4. [ヘルスチェック] メニューからいずれかのレガシー ヘルスチェックを選択します。(有効なレガシー ヘルスチェックのみが表示されています)。
  5. [更新] をクリックします。

gcloud

ヘルスチェックを既存のネットワーク ロードバランサに関連付けるには、次のようにします。

  1. ターゲット プールを特定します。ネットワーク ロードバランサには少なくとも 1 つのターゲット プールがあります。セカンダリ バックアップ プールがある場合もあります。

    gcloud compute target-pools list
    
  2. HTTP プロトコルを使用して、レガシー ヘルスチェックを特定します。必要に応じて、レガシー ヘルスチェックを表示します。

  3. レガシー ヘルスチェックとターゲット プールを関連付けます。次のコマンドの TARGET_POOL_NAME をターゲット プールの名前に、region をリージョンに、legacy-check-name をレガシー ヘルスチェックの名前にそれぞれ置き換えます。レガシー ヘルスチェックでは、HTTP プロトコルを使用する必要があります。

    • ターゲット プールからレガシー HTTP ヘルスチェックを削除するには、次のコマンドを実行します。

      gcloud compute target-pools remove-health-checks TARGET_POOL_NAME \
          --region=region \
          --http-health-check legacy-check-name
      
    • レガシー HTTP ヘルスチェックをターゲット プールに追加するには、次のコマンドを実行します。

      gcloud compute target-pools add-health-checks TARGET_POOL_NAME \
          --region=region \
          --http-health-check legacy-check-name
      

API

  1. ターゲット プールを一覧表示するには、targetPools.list API 呼び出しを使用します。

  2. レガシー ヘルスチェックを表示して、レガシー HTTP ヘルスチェックを確認します。

  3. レガシー HTTP ヘルスチェックをターゲット プールに関連付けるには、targetPools.addHealthCheck API 呼び出しを使用します。

ヘルスチェックのステータスの確認

ヘルスチェックをバックエンド サービスまたはターゲット プールに関連付けると、ロードバランサのバックエンドの最新のヘルスチェック状態を取得できます。

Console

  1. 負荷分散の概要ページに移動します。
    [負荷分散] ページに移動
  2. ロードバランサの名前をクリックします。
  3. [バックエンド] で [正常] 列を調べます。ヘルス ステータスは、バックエンド インスタンス グループまたはネットワーク エンドポイント グループごとに報告されます。

gcloud

  • ネットワーク ロードバランサを除くすべてのロードバランサについて、バックエンド サービスの名前とスコープを確認します。内部 TCP/UDP ロードバランサと内部 HTTP(S) ロードバランサは、リージョン バックエンド サービスを使用します。TCP プロキシ ロードバランサ、SSL プロキシ ロードバランサ、外部 HTTP(S) ロードバランサは、グローバル バックエンド サービスを使用します。

    compute backend-services get-health コマンドを使用します。必要に応じて、name をバックエンド サービスの名前に、region をそのリージョンに置き換えます。

    • グローバル バックエンド サービスの最新のヘルス ステータスを取得するには:

      gcloud compute backend-services get-health name \
          --global \
          --format=get(name, healthStatus)
      
    • リージョン バックエンド サービスの最新のヘルス ステータスを取得するには:

      gcloud compute backend-services get-health name \
          --region=region \
          --format=get(name, healthStatus)
      
  • ネットワーク ロードバランサの場合は、ロードバランサのターゲット プールの名前とリージョンを特定してから、compute target-pools get-health コマンドを使用します。name はターゲット プールの名前に置き換え、region はそのリージョンに置き換えます。

    gcloud compute target-pools get-health name \
            --region=region \
        --format=get(name, healthStatus)
    

API

  • ネットワーク ロードバランサを除くすべてのロードバランサについて、バックエンド サービスの名前とスコープを確認します。内部 TCP/UDP ロードバランサと内部 HTTP(S) ロードバランサは、リージョン バックエンド サービスを使用します。TCP プロキシ ロードバランサ、SSL プロキシ ロードバランサ、外部 HTTP(S) ロードバランサは、グローバル バックエンド サービスを使用します。

    • グローバル バックエンド サービスの最新のヘルス ステータスを取得するには、backendServices.getHealth を使用します

    • リージョン バックエンド サービスの最新のヘルス ステータスを取得するには、regionBackendServices.getHealth を使用します

  • ネットワーク ロードバランサの場合は、targetPools.getHealth を使用します。