ヘルスチェックを使用する

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

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

ヘルスチェックを作成する

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

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

コンソール

  1. Google Cloud コンソールの [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  2. [ヘルスチェックを作成] をクリックします。
  3. ヘルスチェックの作成ページで、次の情報を入力します。
    • 名前: ヘルスチェックの名前を指定します。
    • 説明: 必要に応じて、説明を入力します。
    • スコープ: ロードバランサの種類に応じてグローバルまたはリージョンのスコープを選択します。
      • [リージョン] を選択した場合は、プルダウンから [リージョン] を選択します。
    • プロトコル: ヘルスチェック プロトコルを選択します。
    • ポート: ポート番号を指定します。Google Cloud コンソールでヘルスチェックを作成する場合は、ポート番号を使用してポートを指定する必要があります。
    • プロキシ プロトコル: 必要に応じてヘルスチェック プローブ システムから送信されたリクエストにプロキシ ヘッダーを追加できます。
    • リクエストパスとレスポンス: 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 には、ヘルスチェックに使用されるプロトコルを指定します。有効なオプションは grpchttphttpshttp2ssltcp です。
  • NAME は、ヘルスチェックの名前です。特定のプロジェクト内: 各グローバル ヘルスチェックには一意の名前を付ける必要があります。リージョン ヘルスチェックには、特定のリージョン内で一意の名前を付ける必要があります。
  • REGION: リージョン外部アプリケーション ロードバランサとリージョン内部アプリケーション ロードバランサを除くすべてのロードバランサは、グローバル ヘルスチェック(--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 ヘルスチェックの追加フラグgRPC ヘルスチェックの追加フラグをご覧ください。

Terraform

グローバル ヘルスチェックを作成するには、google_compute_health_check リソースを使用します。

resource "google_compute_health_check" "health_check_tcp_with_logging" {
  provider = google-beta

  name = "health-check-tcp"

  timeout_sec        = 1
  check_interval_sec = 1

  tcp_health_check {
    port = "22"
  }

  log_config {
    enable = true
  }
}

リージョン ヘルスチェックを作成するには、google_compute_region_health_check リソースを使用します。

resource "google_compute_region_health_check" "default" {
  name               = "tcp-health-check-region-west"
  timeout_sec        = 5
  check_interval_sec = 5
  tcp_health_check {
    port = "80"
  }
  region = "us-west1"
}

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

API

ヘルスチェックを変更する

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

コンソール

  1. Google Cloud コンソールの [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  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 呼び出しでは、リクエストで明示的に設定されていない事前構成が保持されます。

ヘルスチェックを一覧表示する

コンソール

  1. Google Cloud コンソールの [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  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 呼び出しを使用します。

追加フラグ

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

ポート指定フラグ

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

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

プロダクト バックエンド タイプ ポート指定オプション
外部パススルー ネットワーク ロードバランサ インスタンス グループ --port: TCP ポートを 1 から 65535 の番号で指定します。
外部パススルー ネットワーク ロードバランサに関連付けられたヘルスチェックでは --use-serving-port フラグは無視されます。これは、外部パススルー ネットワーク ロードバランサのバックエンド サービスにはポート指定がないためです。
内部パススルー ネットワーク ロードバランサ インスタンス グループ --port: TCP ポートを 1 から 65535 の番号で指定します。
内部パススルー ネットワーク ロードバランサに関連付けられたヘルスチェックでは --use-serving-port フラグは無視されます。これは、内部パススルー ネットワーク ロードバランサのバックエンド サービスにはポート指定がないためです。
グローバル外部アプリケーション ロードバランサ

リージョン外部アプリケーション ロードバランサ

クロスリージョン内部アプリケーション ロードバランサ

リージョン内部アプリケーション ロードバランサ

グローバル外部プロキシネットワーク ロードバランサ

従来のプロキシ ネットワーク ロードバランサ

リージョン外部プロキシ ネットワーク ロードバランサ

リージョン内部プロキシ ネットワーク ロードバランサ

クロスリージョン内部プロキシ ネットワーク ロードバランサ

Traffic Director
ゾーン NEG --port: TCP ポートを 1 から 65535 の番号で指定します。
--use-serving-port: ネットワーク エンドポイント グループ内の各エンドポイントのポートを使用します。
インスタンス グループ --port: TCP ポートを 1 から 65535 の番号で指定します。
--use-serving-port: バックエンド サービスがサブスクライブするポートと同じインスタンス グループを使用します。

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

  • ヘルスチェックのプロトコルが TCP または HTTP の場合は、--port=80 を使用します。
  • ヘルスチェックのプロトコルが SSLHTTPSHTTP2 の場合は、--port=443 を使用します。
  • ヘルスチェックのプロトコルが GRPC の場合、暗黙のデフォルトはありません。ポート指定を含める必要があります。

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 フラグとともに使用する場合は、返されるレスポンスがレスポンスの想定文字列と完全に一致する必要があります。

gRPC ヘルスチェックの追加フラグ

gRPC ヘルスチェック プロトコルで説明されている手順に沿って、バックエンド gRPC サーバーは gRPC ヘルスチェック サービスを実装する必要があります。Google Cloud は、バックエンドのヘルスサービスの Check メソッドを呼び出すことで、HealthCheckRequest メッセージをバックエンドに送信します。gRPC サービス名が未指定の場合、リクエストのサービス パラメータは空の文字列に設定されます。

gRPC ヘルスチェックでは、gRPC サービスのステータスを確認できます。最長 1,024 文字の ASCII 文字を含めることができます。これは、バックエンド VM または NEG で実行される特定の gRPC サービスの名前です。gRPC ヘルスチェックに次のオプションのフラグを使用して、ステータスを確認します。

--grpc-service-name=GRPC_SERVICE_NAME

たとえば、バックエンド サーバーが、次のサービスとステータスをバックエンドの gRPC ヘルスサービスに登録するとします。

  • 配信ステータスが SERVINGMyPackage.ServiceA
  • 配信ステータスが NOT_SERVINGMyPackage.ServiceB
  • 配信ステータスが NOT_SERVING の空のサービス名

次のように MyPackage.ServiceA のヘルスチェックを作成する場合、サービスのステータスが SERVING のため、ヘルスチェック プローブは HEALTHY を返します。

gcloud beta compute health-checks create grpc MyGrpcHealthCheckServiceA \
    --grpc-service-name=MyPackage.ServiceA

MyPackage.ServiceB のヘルスチェックを作成する場合、サービスのステータスが NOT_SERVING のため、ヘルスチェック プローブは UNHEALTHY を返します。

gRPC Health サービスに登録されていない MyPackage.ServiceC のヘルスチェックを作成すると、ヘルスチェック プローブは gRPC ステータス NOT_FOUND を返します。これは、UNHEALTHY に相当します。

空のサービス名のヘルスチェックを作成すると、空のサービス名が NOT_SERVING で登録されるため、ヘルスチェック プローブは UNHEALTHY のステータスを返します。

レガシー ヘルスチェック

このセクションでは、レガシー HTTP および HTTPS ヘルスチェックの作成、変更、一覧表示を行う方法について説明します。レガシー ヘルスチェックをヘルスチェックに変換することはできません。また、ヘルスチェックをレガシー ヘルスチェックに変換することもできません。

レガシー ヘルスチェックをサポートするロードバランサの種類については、ロードバランサ ガイドをご覧ください。

レガシー ヘルスチェックを作成する

コンソール

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

Google Cloud コンソールでレガシー ヘルスチェックを作成できるのは、ターゲット プールベースの外部パススルー ネットワーク ロードバランサを作成する場合のみです。レガシー ヘルスチェックのみを作成するには、このセクションの 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 を使用します。

Terraform

レガシー ヘルスチェックを変更する

コンソール

  1. Google Cloud コンソールの [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  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 呼び出しでは、パッチ リクエストで明示的に設定されていない事前構成済みの設定が保持されます。

レガシー ヘルスチェックを一覧表示する

コンソール

  1. Google Cloud コンソールの [ヘルスチェック] ページに移動します。
    [ヘルスチェック] ページに移動
  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. レガシー ヘルスチェックを記述するには:

必要なファイアウォール ルールを作成する

ヘルスチェック プローバーの 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 での接続はできないことになります。

コンソール

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

gcloud

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

    gcloud compute firewall-rules create fw-allow-health-checks \
        --network=NETWORK_NAME \
        --action=ALLOW \
        --direction=INGRESS \
        --source-ranges=SOURCE_IP_RANGE \
        --target-tags=allow-health-checks \
        --rules=tcp:PORT

    SOURCE_IP_RANGE の値は、ロードバランサの種類、トラフィック タイプ、ヘルスチェックのタイプによって異なります。プローブの IP 範囲とファイアウォール ルールをご覧ください。

  2. ロードバランスされる各インスタンスで、ネットワーク タグを追加して、新しい上り(内向き)ファイアウォール ルールが適用されるようにします。この例では、ネットワーク タグに allow-health-checks を使用します。

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

関連ドキュメント:

ヘルスチェックをロードバランサに関連付ける

まだ確認していない場合は、ヘルスチェックの概要: ヘルスチェックを選択するを確認します。

ヘルスチェックを新しいロードバランサに関連付けるには、それぞれのロードバランサの設定ガイドをご覧ください。このセクションでは、既存のロードバランサのバックエンド サービスにヘルスチェックを関連付ける方法について説明します。

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

コンソール

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

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

gcloud

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

  1. バックエンド サービスの名前とスコープを特定します。外部パススルー ネットワーク ロードバランサ、内部パススルー ネットワーク ロードバランサ、リージョン内部プロキシ ネットワーク ロードバランサ、外部プロキシ ネットワーク ロードバランサには、ロードバランサごとに 1 つのバックエンド サービスしかありません。外部アプリケーション ロードバランサと内部アプリケーション ロードバランサには、単一の URL マップに関連付けられた 1 つ以上のバックエンド サービスがあります。

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

      gcloud compute backend-services list \
          --filter="region:( REGION1 REGION2 ... ) AND loadBalancingScheme=INTERNAL"
      
    • 外部パススルー ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。各 REGION は、クエリ対象の Google Cloud リージョンに置き換えます。

      gcloud compute backend-services list \
          --filter="region:( REGION1 REGION2 ... ) AND loadBalancingScheme=EXTERNAL"
      
    • グローバル外部プロキシ ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL_MANAGED" \
          --filter="protocol=(SSL,TCP)"
      
    • 従来のプロキシ ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=(SSL,TCP)"
      
    • リージョン外部プロキシ ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。

      gcloud compute backend-services list \
          --region=REGION \
          --filter="loadBalancingScheme=EXTERNAL_MANAGED" \
          --filter="protocol=(SSL,TCP)"
      
    • リージョン内部プロキシ ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。REGION_LIST は、クエリ対象の Google Cloud リージョンのカンマ区切りリストに置き換えます。

      gcloud beta compute backend-services list \
          --filter="region:( REGION1 REGION2 ... ) AND loadBalancingScheme=INTERNAL_MANAGED"
      
    • SSL を使用して外部プロキシ ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。これらのロードバランサのバックエンド サービスは、ネットワーク サービス ティアに関係なく常にグローバルです。

      gcloud compute backend-services list \
          --global \
          --filter="loadBalancingScheme=EXTERNAL" \
          --filter="protocol=(SSL,TCP)"
      
    • 外部アプリケーション ロードバランサのバックエンド サービスを特定するには、まず URL マップを特定してから、そのマップの説明を取得します。外部アプリケーション ロードバランサまたはクロスリージョン内部アプリケーション ロードバランサの URL マップとバックエンド サービスは、ネットワーク サービス ティアに関係なく常にグローバルです。URL_MAP_NAME は、URL マップの名前に置き換えます。ロードバランサによって使用されるバックエンド サービスがレスポンスに含まれます。

      gcloud compute url-maps list \
          --global
      
      gcloud compute url-maps describe URL_MAP_NAME \
          --global
      
    • リージョン外部アプリケーション ロードバランサまたはリージョン内部アプリケーション ロードバランサのバックエンド サービスを特定するには、まず URL マップを特定してから、そのマップの説明を取得します。これらのロードバランサの 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 をバックエンド サービス、ヘルスチェック、または両方の Google Cloud リージョンに置き換えます。

    • 内部パススルー ネットワーク ロードバランサのヘルスチェックを変更する場合: 内部パススルー ネットワーク ロードバランサのバックエンド サービスはリージョンです。グローバルまたはリージョンのヘルスチェックを参照できます。次の例は、リージョンのヘルスチェックのリファレンスを示しています。内部パススルー ネットワーク ロードバランサでグローバル ヘルスチェックを使用している場合は、--health-checks-region ではなく --global-health-checks を使用します。

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --region=REGION \
          --health-checks=HEALTH_CHECK_NAME \
          --health-checks-region=REGION
      
    • バックエンド サービスベースの外部パススルー ネットワーク ロードバランサのヘルスチェックを変更する場合: 外部パススルー ネットワーク ロードバランサのバックエンド サービスはリージョンです。リージョン ヘルスチェックを参照できます。

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --region=REGION \
          --health-checks=HEALTH_CHECK_NAME \
          --health-checks-region=REGION
      
    • グローバル外部プロキシ ネットワーク ロードバランサ、従来のプロキシ ネットワーク ロードバランサ、グローバル外部アプリケーション ロードバランサ、従来のアプリケーション ロードバランサ、またはクロスリージョン内部アプリケーション ロードバランサのヘルスチェックを変更する場合: バックエンド サービスとヘルスチェックは、これらのロードバランサに対してどちらもグローバルです。アプリケーション ロードバランサが複数のバックエンド サービスを参照している場合、複数のヘルスチェックが参照される可能性があります。

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
          --global \
          --health-checks HEALTH_CHECK_NAME \
          --global-health-checks
      
    • リージョン外部アプリケーション ロードバランサ、リージョン外部プロキシ ネットワーク ロードバランサ、リージョン内部プロキシ ネットワーク ロードバランサ、またはリージョン内部アプリケーション ロードバランサのいずれかのヘルスチェックを変更する場合: バックエンド サービスとヘルスチェックはどちらもリージョンです。一部のロードバランサが複数のバックエンド サービスを参照できる場合、複数のヘルスチェックが参照される可能性があります。

      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 呼び出しを使用します。

レガシー ヘルスチェックをターゲット プール ベースの外部パススルー ネットワーク ロードバランサに関連付ける

レガシー ヘルスチェックを新しい外部パススルー ネットワーク ロードバランサに関連付けるには、ターゲット プールを使用した外部パススルー ネットワーク ロードバランサを設定するをご覧ください。このセクションでは、レガシー ヘルスチェックをターゲット プール ベースの外部パススルー ネットワーク ロードバランサに関連付ける方法について説明します。

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

コンソール

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

  1. Google Cloud コンソールの [ロード バランシング] ページに移動します。
    [ロード バランシング] ページに移動
  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 呼び出しを使用します。

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

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

コンソール

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

gcloud

  • ターゲット プールベースの外部パススルー ネットワーク ロードバランサを除くロードバランサの場合は、バックエンド サービスの名前とスコープ(グローバルまたはリージョン)を特定します。ロードバランサとスコープの完全なリストについては、バックエンド サービスをご覧ください。

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

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

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

      gcloud compute backend-services get-health REGIONAL_BACKEND_SERVICE_NAME \
          --region=REGION
      
  • ターゲット プールベースの外部パススルー ネットワーク ロードバランサの場合は、ロードバランサのターゲット プールの名前とリージョンを特定したうえで、compute target-pools get-health コマンドを使用し、NAME をターゲット プールの名前に、REGION をそのリージョンに置き換えます。

    gcloud compute target-pools get-health TARGET_POOL_NAME \
        --region=REGION
    

API

  • ターゲット プールベースの外部パススルー ネットワーク ロードバランサを除くロードバランサの場合は、バックエンド サービスの名前とスコープ(グローバルまたはリージョン)を特定します。ロードバランサとスコープの完全なリストについては、バックエンド サービスをご覧ください。

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

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

  • ターゲット プールベースの外部パススルー ネットワーク ロードバランサの場合は、targetPools.getHealth を使用します。