Google Cloud にはヘルスチェックのメカニズムがあり、バックエンド インスタンスがトラフィックに適切に反応しているかどうかが判定されます。このドキュメントでは、ロードバランサと Cloud Service Mesh のヘルスチェックを作成および使用する方法について説明します。
このページでは、次のコンセプトを理解していることを前提としています。
ヘルスチェックを作成する
Google Cloud では、Google Cloud コンソールでロードバランサのバックエンド構成の完了時にヘルスチェックを作成または選択できます。
また、ロードバランサの構成とは別に Google Cloud コンソールでヘルスチェックを作成することもできます。これは、最初にヘルスチェックを作成する必要がある場合や、複数のロードバランサで同じヘルスチェックを使用する必要がある場合に実用的です。ヘルスチェックの作成には、Google Cloud コンソール、Google Cloud CLI、または REST API を使用できます。
コンソール
- Google Cloud コンソールの [ヘルスチェック] ページに移動します。
[ヘルスチェック] ページに移動 - [ヘルスチェックを作成] をクリックします。
- ヘルスチェックの作成ページで、次の情報を入力します。
- 名前: ヘルスチェックの名前を指定します。
- 説明: 必要に応じて、説明を入力します。
- スコープ: ロードバランサの種類に応じて、グローバルまたはリージョンのスコープを選択します。
- [リージョン] を選択した場合は、プルダウンから [リージョン] を選択します。
- プロトコル: ヘルスチェック プロトコルを選択します。
- ポート: ポート番号を指定します。Google Cloud コンソールでヘルスチェックを作成する場合は、ポート番号を使用してポートを指定する必要があります。
- プロキシ プロトコル: 必要に応じてヘルスチェック プローブ システムから送信されたリクエストにプロキシ ヘッダーを追加できます。
- リクエストパスとレスポンス: HTTP、HTTPS、HTTP2 のプロトコルの場合は、必要に応じてヘルスチェック プローブ システムが接続する URL パスを指定できます。詳細については、HTTP、HTTPS、HTTP/2 ヘルスチェックの追加フラグをご覧ください。
- リクエストとレスポンス: TCP および SSL プロトコルでは、送信する ASCII テキスト文字列とレスポンスの想定文字列を指定できます。詳細については、SSL、TCP ヘルスチェックの追加フラグをご覧ください。
- チェック間隔: プローブを開始してから次のブローブを開始するまでの時間を指定します。
- タイムアウト: Google Cloud がプローブに対するレスポンスを待つ時間を定義します。この値は、チェック間隔の値以下にする必要があります。
- 正常しきい値: VM インスタンスが正常であると判定するために必要になるプローブ成功の連続回数を定義します。
- 異常しきい値: VM インスタンスが正常でないと判定するために必要になるプローブ失敗の連続回数を定義します。
- [作成] をクリックします。
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
には、ヘルスチェックに使用されるプロトコルを指定します。有効なオプションはgrpc
、http
、https
、http2
、ssl
、tcp
です。NAME
は、ヘルスチェックの名前です。特定のプロジェクト内: 各グローバル ヘルスチェックには一意の名前を付ける必要があります。リージョン ヘルスチェックには、特定のリージョン内で一意の名前を付ける必要があります。REGION
: ヘルスチェックのリージョン。リージョン ロードバランサの場合、ヘルスチェックのリージョンはバックエンド サービスのリージョンと一致する必要があります。DESCRIPTION
は省略可能な説明です。CHECK_INTERVAL
は、1 回のヘルスチェック プローブ システムの接続の開始から次の接続の開始までの時間です。単位は秒です。省略した場合、Google Cloud では5s
(5 秒)の値が使用されます。TIMEOUT
は、Google Cloud がプローブに対するレスポンスを待つ時間です。TIMEOUT
の値はCHECK_INTERVAL
以下にする必要があります。単位は秒です。省略した場合、Google Cloud では5s
(5 秒)の値が使用されます。HEALTHY_THRESHOLD
とUNHEALTHY_THRESHOLD
は、VM インスタンスが正常であるか、正常でないかを判定するために必要になるプローブの成功または失敗の連続回数を示します。いずれのしきい値も省略されている場合は、デフォルトの2
が使用されます。PORT_SPECIFICATION
: ポート指定フラグのいずれかを使用してポート指定を定義します。ADDITIONAL_FLAGS
は、PROTOCOL
に固有のポートとオプションを指定するための追加フラグです。詳しくは、HTTP、HTTPS、HTTP/2 ヘルスチェックの追加フラグ、SSL および TCP ヘルスチェックの追加フラグ、gRPC ヘルスチェックの追加フラグをご覧ください。
Terraform
グローバル ヘルスチェックを作成するには、google_compute_health_check
リソースを使用します。
リージョン ヘルスチェックを作成するには、google_compute_region_health_check リソースを使用します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
API
グローバル ヘルスチェックを作成するには、healthChecks.insert を使用します。
リージョン ヘルスチェックを作成するには、regionHealthChecks.insert を使用します。
ヘルスチェックを変更する
ヘルスチェックを変更して、ヘルスチェックをレガシー ヘルスチェック(またはその逆)に変換することはできません。また、ヘルスチェックの名前やスコープを変更することもできません(例: グローバルからリージョンなど)。
Console
- Google Cloud コンソールの [ヘルスチェック] ページに移動します。
[ヘルスチェック] ページに移動 - ヘルスチェックをクリックすると詳細が表示されます。
- ヘルスチェックを変更する必要がある場合は、[編集] をクリックして次の操作を行います。
- 必要に応じてパラメータを変更します。
- [保存] をクリックします。
gcloud
ヘルスチェックの名前とスコープを特定します。手順については、ヘルスチェックを一覧表示するをご覧ください。
ヘルスチェックの名前、プロトコル、スコープを除き、共通フラグ、ポート指定フラグ、その他の追加フラグを変更できます。既存のヘルスチェックを変更するには、適切な
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
ヘルスチェックの名前とスコープを特定します。手順については、ヘルスチェックの一覧表示をご覧ください。
これらの API 呼び出しでは、ヘルスチェックの名前、プロトコル、スコープを除き、共通フラグ、ポート指定フラグ、その他の追加フラグを変更できます。
patch
API 呼び出しでは、リクエストで明示的に設定されていない事前構成が保持されます。グローバル ヘルスチェックを変更するには、healthChecks.update または healthChecks.patch を使用します。
リージョン ヘルスチェックを変更するには、regionHealthChecks.update または regionHealthChecks.patch を使用します。
ヘルスチェックの一覧表示
コンソール
- Google Cloud コンソールの [ヘルスチェック] ページに移動します。
[ヘルスチェック] ページに移動 - ヘルスチェックをクリックすると詳細が表示されます。
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 呼び出しを使用します。
グローバル ヘルスチェックを一覧表示する場合: healthChecks.list
リージョン ヘルスチェックを一覧表示する場合: regionHealthChecks.list
ヘルスチェックの現在の構成を記述するには、次のコマンドを使用します。
グローバル ヘルスチェックを記述する場合: healthChecks.get
リージョン ヘルスチェックを記述する場合: regionHealthChecks.get
追加フラグ
このセクションでは、ヘルスチェックを作成または変更するときに使用できるその他のフラグについて説明します。ポート指定などの一部のフラグは、gcloud
または API を使用して設定する必要があります。
ポート指定フラグ
Google Cloud CLI または API を使用してヘルスチェックを作成する場合、ヘルスチェックのポートを指定する方法が 2 つあります。次の表に、有効なロードバランサとバックエンドの組み合わせに対するポート指定オプションを示します。インスタンス グループという用語は、非マネージド インスタンス グループ、ゾーン マネージド インスタンス グループ、リージョン マネージド インスタンス グループを指します。
各ヘルスチェックで使用できるポート指定のタイプは 1 種類のみです。
プロダクト | バックエンド タイプ | ポート指定オプション |
---|---|---|
外部パススルー ネットワーク ロードバランサ | インスタンス グループとサポートされている NEG |
このロードバランサのバックエンド サービスは名前付きポートに登録しないため、内部パススルー ネットワーク ロードバランサに関連付けられたヘルスチェックでは |
ターゲット プール | ポート番号(--port )の指定をサポートするレガシー ヘルスチェック。 |
|
内部パススルー ネットワーク ロードバランサ | インスタンス グループとサポートされている NEG |
このロードバランサのバックエンド サービスは名前付きポートに登録しないため、内部パススルー ネットワーク ロードバランサに関連付けられたヘルスチェックでは |
グローバル外部アプリケーション ロードバランサ 従来のアプリケーション ロードバランサ リージョン外部アプリケーション ロードバランサ クロスリージョン内部アプリケーション ロードバランサ リージョン内部アプリケーション ロードバランサ グローバル外部プロキシ ネットワーク ロードバランサ 従来のプロキシ ネットワーク ロードバランサ リージョン外部プロキシ ネットワーク ロードバランサ クロスリージョン内部プロキシ ネットワーク ロードバランサ リージョン内部プロキシ ネットワーク ロードバランサ Cloud Service Mesh |
サポートされている NEG |
|
インスタンス グループ |
|
ヘルスチェックの作成時にポート指定を省略すると、Google Cloud は次のデフォルトを使用します。
- ヘルスチェックのプロトコルが
TCP
またはHTTP
の場合は、--port=80
を使用します。 - ヘルスチェックのプロトコルが
SSL
、HTTPS
、HTTP2
の場合は、--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
は、NONE
かPROXY_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
は、NONE
かPROXY_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 ヘルスサービスに登録するとします。
- 配信ステータスが
SERVING
のMyPackage.ServiceA
- 配信ステータスが
NOT_SERVING
のMyPackage.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_TYPE
はhttp-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_THRESHOLD
とUNHEALTHY_THRESHOLD
はそれぞれ、VM インスタンスが正常であるか、正常でないかを判定するために必要になるプローブの成功または失敗の連続回数を示します。いずれのしきい値も省略されている場合は、デフォルトの2
が使用されます。HOST
を使用すると、ホストの HTTP ヘッダーを指定できます。省略した場合は、ロードバランサの転送ルールの IP アドレスが使用されます。PORT
を使用すると、ポート番号を指定できます。省略した場合は、Google Cloud では80
が使用されます。REQUEST_PATH
には、ヘルスチェック リクエストの送信時に Google Cloud が使用する URL パスを指定します。省略すると、ヘルスチェック リクエストは/
に送信されます。
API
レガシー HTTP ヘルスチェックを作成するには、httpHealthChecks.insert API 呼び出しを使用します。
レガシー HTTPS ヘルスチェックを作成するには、httpsHealthChecks.insert を使用します。
Terraform
レガシー HTTP ヘルスチェック リソースを作成するには、
google_compute_http_health_check
リソースを使用します。レガシー HTTPS ヘルスチェック リソースを作成するには、
google_compute_https_health_check
リソースを使用します。
レガシー ヘルスチェックを変更する
コンソール
- Google Cloud コンソールの [ヘルスチェック] ページに移動します。
[ヘルスチェック] ページに移動 - ヘルスチェックをクリックすると詳細が表示されます。
- [編集]( )をクリックして変更を行い、[保存] をクリックします。
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 呼び出しでは、パッチ リクエストで明示的に設定されていない事前構成済みの設定が保持されます。
レガシー HTTP ヘルスチェックを変更するには、httpHealthChecks.update または httpHealthChecks.patch を使用します。
レガシー HTTPS ヘルスチェックを変更するには、httpsHealthChecks.update または httpsHealthChecks.patch を使用します。
レガシー ヘルスチェックの一覧表示
コンソール
- Google Cloud コンソールの [ヘルスチェック] ページに移動します。
[ヘルスチェック] ページに移動 - レガシー ヘルスチェックをクリックすると詳細が表示されます。
gcloud
レガシー HTTP ヘルスチェックを一覧表示するには、
compute http-health-checks list
コマンドを使用します。gcloud compute http-health-checks list
レガシー HTTPS ヘルスチェックを一覧表示するには、
compute https-health-checks list
コマンドを使用します。gcloud compute https-health-checks list
レガシー 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
レガシー ヘルスチェックを一覧表示するには:
httpHealthChecks.list を使用して、レガシー HTTP ヘルスチェックを一覧表示します。
httpsHealthChecks.list を使用して、レガシー HTTPS ヘルスチェックを一覧表示します。
レガシー ヘルスチェックを記述するには:
httpHealthChecks.get を使用して、レガシー HTTP ヘルスチェックを記述します。
httpsHealthChecks.get を使用して、レガシー HTTPS ヘルスチェックを記述します。
必要なファイアウォール ルールを作成する
ヘルスチェック プローバーの 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 での接続はできないことになります。
コンソール
- Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[ファイアウォール ポリシー] に移動 - [ファイアウォール ルールを作成] をクリックします。
- ファイアウォール ルールの作成ページで、次の情報を入力します。
- 名前: ルールの名前を指定します。この例では、
fw-allow-health-checks
を使用します。 - ネットワーク: VPC ネットワークを選択します。
- 優先度: 優先度の数値を入力します。数字が小さいほど優先度が高くなります。このファイアウォール ルールには、上りトラフィックを拒否する可能性があるその他のルールよりも高い優先度を設定してください。
- トラフィックの方向: [内向き(上り)] を選択します。
- 一致したときのアクション: [許可] を選択します。
- ターゲット: [指定されたターゲットタグ] を選択し、[ターゲットタグ] フィールドにタグを入力します。この例では、
allow-health-checks
を使用します。 - ソースフィルタ: [IP 範囲] を選択します。
- ソース IP の範囲: ロードバランサの種類、トラフィック タイプ、ヘルスチェックのタイプに応じて、ソース IP の範囲を入力します。プローブの IP 範囲とファイアウォール ルールをご覧ください。
- 許可対象プロトコルとポート:
tcp
と、ヘルスチェックで構成されているポートを使用します。TCP は、すべてのヘルスチェック プロトコルの基礎となるプロトコルです。 - [作成] をクリックします。
- 名前: ルールの名前を指定します。この例では、
- 負荷分散対象の各インスタンスで、ネットワーク タグを追加して、新しい上り(内向き)ファイアウォール ルールが適用されるようにします。この例では、ネットワーク タグに
allow-health-checks
を使用します。
gcloud
次の
gcloud
コマンドを使用して、Google Cloud ヘルスチェック システムから VPC ネットワーク内のインスタンスへの受信 TCP 接続をallow-health-checks
タグで許可するファイアウォール ルールをfw-allow-health-checks
という名前で作成します。ロードバランサのタイプに基づいて、バックエンドへの IPv6 トラフィックに対して、異なるプローブ IP 範囲とファイアウォール ルールのセットがサポートされます。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 範囲とファイアウォール ルールをご覧ください。
ロードバランスされる各インスタンスで、ネットワーク タグを追加して、新しい上り(内向き)ファイアウォール ルールが適用されるようにします。この例では、ネットワーク タグに
allow-health-checks
を使用します。
詳細については、gcloud
ファイアウォール ルールのドキュメントと API ドキュメントをご覧ください。
関連ドキュメント:
- ファイアウォール ルールのターゲットの指定の詳細については、「ファイアウォール ルールの概要」のターゲットの説明とネットワーク タグの構成をご覧ください。
- ロードバランサに必要なすべてのファイアウォール ルールの詳細については、ファイアウォール ルールをご覧ください。
ヘルスチェックをロードバランサに関連付ける
まだ確認していない場合は、ヘルスチェックの概要: ヘルスチェックを選択するを確認します。
ヘルスチェックを新しいロードバランサに関連付けるには、それぞれのロードバランサの設定ガイドをご覧ください。このセクションでは、既存のロードバランサのバックエンド サービスにヘルスチェックを関連付ける方法について説明します。
このセクションは、すでに以下の処理が行われていることを前提としています。
- ロードバランサが作成されていること。
- ヘルスチェックを作成している。
必要なファイアウォール ルールを作成している。
コンソール
ヘルスチェックを既存のロードバランサに関連付けるには、次のようにします。
- Google Cloud コンソールの [ロード バランシング] ページに移動します。
[ロード バランシング] ページに移動 - ロードバランサをクリックして、その詳細を表示します。
- 編集アイコン をクリックしてから、[バックエンドの構成] をクリックします。
- [ヘルスチェック] メニューからいずれかのヘルスチェックを選択します。
- [更新] をクリックします。
gcloud
ヘルスチェックを既存のバックエンド サービスに関連付ける手順は、次のとおりです。
バックエンド サービスの名前とスコープを特定します。パススルー ネットワーク ロードバランサとプロキシ ネットワーク ロードバランサには、ロードバランサごとに 1 つのバックエンド サービスしかありません。アプリケーション ロードバランサには、単一の URL マップに関連付けられた 1 つ以上のバックエンド サービスがあります。
内部パススルー ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。
gcloud compute backend-services list \ --region=REGION \ --filter="loadBalancingScheme=INTERNAL"
外部パススルー ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。
gcloud compute backend-services list \ --region=REGION \ --filter="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 \ --global \ --filter="loadBalancingScheme=INTERNAL_MANAGED" \ --filter="protocol=(SSL,TCP)"
リージョン外部プロキシ ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。
gcloud compute backend-services list \ --region=REGION \ --filter="loadBalancingScheme=EXTERNAL_MANAGED" \ --filter="protocol=(SSL,TCP)"
リージョン内部プロキシ ネットワーク ロードバランサのバックエンド サービスを一覧表示するには、次のコマンドを実行します。
gcloud compute backend-services list \ --region=REGION \ --filter="loadBalancingScheme=INTERNAL_MANAGED" \ --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
ヘルスチェックを特定します。ヘルスチェックの一覧表示をご覧ください。
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
バックエンド サービスを一覧表示するには、backendServices.list API 呼び出しを使用します。
ヘルスチェックを表示します。
ヘルスチェックをバックエンド サービスに関連付けるには、次のいずれかの API 呼び出しを使用します。
レガシー ヘルスチェックをターゲット プール ベースの外部パススルー ネットワーク ロードバランサに関連付ける
レガシー ヘルスチェックを新しい外部パススルー ネットワーク ロードバランサに関連付けるには、ターゲット プールを使用した外部パススルー ネットワーク ロードバランサを設定するをご覧ください。このセクションでは、レガシー ヘルスチェックをターゲット プール ベースの外部パススルー ネットワーク ロードバランサに関連付ける方法について説明します。
このセクションは、すでに以下の処理が行われていることを前提としています。
- ターゲット プール ベースの外部パススルー ネットワーク ロードバランサを作成している。
- レガシー ヘルスチェックを作成している。
必要なファイアウォール ルールを作成している。
コンソール
ヘルスチェックを既存のターゲット プール ベースの外部パススルー ネットワーク ロードバランサに関連付けるには、次のようにします。
- Google Cloud コンソールの [ロード バランシング] ページに移動します。
[ロード バランシング] ページに移動 - ロードバランサをクリックして、その詳細を表示します。
- 編集アイコン をクリックしてから、[バックエンドの構成] をクリックします。
- [ヘルスチェック] メニューからいずれかのレガシー ヘルスチェックを選択します。(有効なレガシー ヘルスチェックのみが表示されています)。
- [更新] をクリックします。
gcloud
ヘルスチェックを既存のターゲット プール ベースの外部パススルー ネットワーク ロードバランサに関連付けるには、次のようにします。
ターゲット プールを特定します。外部パススルー ネットワーク ロードバランサには、少なくとも 1 つのターゲット プールがあり、セカンダリ バックアップ プールがある場合があります。
gcloud compute target-pools list
HTTP
プロトコルを使用して、レガシー ヘルスチェックを特定します。必要に応じて、レガシー ヘルスチェックを表示します。レガシー ヘルスチェックとターゲット プールを関連付けます。次のコマンドの
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
ターゲット プールを一覧表示するには、targetPools.list API 呼び出しを使用します。
レガシー ヘルスチェックを表示して、レガシー HTTP ヘルスチェックを確認します。
レガシー HTTP ヘルスチェックをターゲット プールに関連付けるには、targetPools.addHealthCheck API 呼び出しを使用します。
ヘルスチェックのステータスを確認する
ヘルスチェックをバックエンド サービスまたはターゲット プールに関連付けると、ロードバランサのバックエンドの最新のヘルスチェック状態を取得できます。
Console
- 負荷分散の概要ページに移動します。
[負荷分散] ページに移動 - ロードバランサの名前をクリックします。
- [バックエンド] で [正常] 列を調べます。ヘルス ステータスは、バックエンド インスタンス グループまたはネットワーク エンドポイント グループごとに報告されます。
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 を使用します