自動クロスリージョン フェイルオーバー用に複合ヘルスを構成する
このページでは、サービス プロデューサーが公開サービスの自動クロスリージョン フェイルオーバーをサポートするように複合ヘルスを構成する方法について説明します。
始める前に
複合ヘルスについて確認します。
サポートする各リージョンで、次の要件を満たす ターゲット サービス を特定または作成します。
- 次のいずれかの内部ロードバランサを使用する必要があります。
- 次のいずれかのバックエンド タイプを使用する必要があります。
- ネットワーク エンドポイント タイプ
GCE_VM_IPまたはGCE_VM_IP_PORTのゾーン ネットワーク エンドポイント グループ(NEG) - インスタンス·グループ
- ネットワーク エンドポイント タイプ
ターゲット サービスを作成する手順は、選択したロードバランサとバックエンドのタイプによって異なります。ターゲット サービスの作成については、ロードバランサのドキュメントをご覧ください。
サービス アタッチメントを作成して、各ターゲット サービスを公開します。
フェイルオーバーに複合ヘルスを使用するには、 コンシューマーが クロスリージョン フェイルオーバーをサポートするロードバランサを使用してサービスにアクセスする必要があります。
プロジェクトで Compute Engine API を有効にします。
必要なロール
複合ヘルスを構成するために必要な権限を取得するには、プロジェクトに対する Compute ネットワーク管理者 (roles/compute.networkAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには 複合ヘルスを構成するために必要な権限が含まれています。必要とされる正確な権限については、必要な権限セクションを開いてご確認ください。
必要な権限
複合ヘルスを構成するには、次の権限が必要です。
-
compute.regionHealthAggregationPolicies.list -
compute.regionHealthAggregationPolicies.get -
compute.regionHealthAggregationPolicies.create -
compute.regionHealthAggregationPolicies.update -
compute.regionHealthAggregationPolicies.delete -
compute.regionHealthSources.list -
compute.regionHealthSources.get -
compute.regionHealthSources.create -
compute.regionHealthSources.update -
compute.regionHealthSources.delete -
compute.regionCompositeHealthChecks.list -
compute.regionCompositeHealthChecks.get -
compute.regionCompositeHealthChecks.create -
compute.regionCompositeHealthChecks.update -
compute.regionCompositeHealthChecks.delete
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
自動クロスリージョン フェイルオーバーをサポートするように複合ヘルスを構成する
以降のセクションでは、自動クロスリージョン フェイルオーバー用に複合ヘルスを構成する方法について説明します。
複合ヘルスは、サービス ユーザーによる構成は必要ありませんが、この機能は、コンシューマーがマルチリージョン デプロイでサポートされている Private Service Connect バックエンドを構成した場合にのみ機能します。 サービス ユーザーが複合ヘルスを使用するように VPC ネットワークを構成する方法については、 自動クロスリージョン フェイルオーバーをご覧ください。
ヘルス集計ポリシーを作成する
クロスリージョン フェイルオーバーをサポートする各リージョンに、1 つ以上のヘルス集約ポリシーを作成します。
ヘルス集計ポリシーは、バックエンド サービスが正常と見なされる基準を定義する再利用可能なリソースです。複数のバックエンド サービスに同じポリシーを適用することも、異なるヘルス要件を持つサービスに対して異なるポリシーを作成することもできます。
コンソール
コンソールで、[複合ヘルス] ページに移動します。 Google Cloud
[ヘルス集計ポリシー] をクリックします。
[ヘルス集計ポリシーを作成] をクリックします。
ヘルス集約ポリシーの名前を入力します。
(省略可)ポリシーの説明を入力します。
[**リージョン**] をクリックして、ヘルス集約 ポリシーのリージョンを選択します。
[次へ] をクリックします。
[正常な割合のしきい値] ボックスに、ヘルスソースが正常と見なされるために正常である必要があるバックエンド サービス内のエンドポイントの最小割合(例:
75)を入力します。[正常な最小しきい値] ボックスに、ヘルスソースが正常と見なされるために、バックエンド サービスで正常である必要があるエンドポイントの最小数を入力します。
[作成] をクリックします。
gcloud
gcloud compute health-aggregation-policies create コマンドを使用します。
gcloud compute health-aggregation-policies create POLICY \
--region=REGION \
--healthy-percent-threshold=PERCENT_HEALTHY \
--min-healthy-threshold=MINIMUM_HEALTHY
次のように置き換えます。
POLICY: ヘルス集約ポリシーの名前REGION: ヘルス集約ポリシーのリージョンPERCENT_HEALTHY: ヘルスソースが正常と見なされるために正常である必要があるバックエンド サービス内のエンドポイントの最小割合(例:75)デフォルトは
60です。エンドポイントは、インスタンス グループ内の VM またはネットワーク エンドポイント グループ(NEG)内のネットワーク エンドポイントにできます。MINIMUM_HEALTHY: ヘルスソースが正常と見なされるために、バックエンド サービスで正常である必要があるエンドポイントの最小数デフォルトは
1です。
API
リクエストを regionHealthAggregationPolicies.insert メソッドに送信します。
HTTP メソッドと URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/healthAggregationPolicies
リクエストの本文(JSON):
{
"name": "POLICY",
"policyType": "BACKEND_SERVICE_POLICY",
"healthyPercentThreshold": PERCENT_HEALTHY,
"minHealthyThreshold": MINIMUM_HEALTHY
}
次のように置き換えます。
PROJECT_ID: ヘルス集約ポリシーのプロジェクト ID。REGION: ヘルス集約ポリシーのリージョン。POLICY: ヘルス集約ポリシーの名前。PERCENT_HEALTHY: ヘルスソースが正常と見なされるために正常である必要があるバックエンド サービス内のエンドポイントの最小割合(例:75)。デフォルトは
60です。エンドポイントは、インスタンス グループ内の VM またはネットワーク エンドポイント グループ(NEG)内のネットワーク エンドポイントにできます。MINIMUM_HEALTHY: ヘルスソースが正常と見なされるために、バックエンド サービスで正常である必要があるエンドポイントの最小数。デフォルトは
1です。
ヘルスソースを作成する
公開されたサービスのリージョン インスタンスごとにヘルスソースを作成します。 公開サービス インスタンスが複数のバックエンド サービスの正常性に依存している場合は、バックエンド サービスごとに個別のヘルスソースを作成します。
ヘルスソースは、ヘルス集計ポリシーを特定のバックエンド サービスにリンクするリソースです。複合ヘルスチェックは、1 つ以上のヘルスソースからヘルス状態を集計して、サービスの最終的な複合ヘルス状態を生成します。
コンソール
コンソールで、[複合ヘルス] ページに移動します。 Google Cloud
[ヘルスソース] をクリックします。
[ヘルスソースを作成] をクリックします。
ヘルスソースの名前を入力します。
(省略可)ヘルスソースの説明を入力します。
[**リージョン**] をクリックして、ヘルスソースのリージョンを選択します。
[次へ] をクリックします。
[Source] をクリックして、 ヘルス ソースに関連付けるバックエンド サービスを選択します。
[次へ] をクリックします。
[**ヘルス集計ポリシー**] をクリックして、このヘルス 集計ポリシーをこのヘルスソースに適用します。
[作成] をクリックします。
gcloud
gcloud compute health-sources create コマンドを使用します。
gcloud compute health-sources create HEALTH_SOURCE \
--region=REGION \
--source-type=BACKEND_SERVICE \
--sources=BACKEND_SERVICE \
--health-aggregation-policy=POLICY
次のように置き換えます。
HEALTH_SOURCE: ヘルスソースの名前REGION: ヘルスソースのリージョンヘルス集約ポリシーは、ヘルスソースと同じリージョンに存在する必要があります。
BACKEND_SERVICE: ヘルスソースに関連付ける単一のバックエンド サービスの名前バックエンド サービスは次の要件を満たす必要があります。
- ロード バランシング スキームは
INTERNALまたはINTERNAL_MANAGEDである必要があります。 - 作成するヘルスソースと同じリージョンに存在する必要があります。
- バックエンドは、タイプ
GCE_VM_IPまたはGCE_VM_IP_PORTのインスタンス グループまたはネットワーク エンドポイント グループである必要があります。
- ロード バランシング スキームは
POLICY: このヘルスソースに適用するヘルス集約ポリシーの名前
API
リクエストを regionHealthSources.insert メソッドに送信します。
HTTP メソッドと URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/healthSources
リクエストの本文(JSON):
{
"name": "HEALTH_SOURCE",
"sourceType": "BACKEND_SERVICE",
"sources": [
"projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE"
],
"healthAggregationPolicy": "projects/PROJECT_ID/regions/REGION/healthAggregationPolicies/POLICY"
}
次のように置き換えます。
PROJECT_ID: ヘルスソースのプロジェクト ID。REGION: ヘルスソースのリージョン。ヘルス集約ポリシーは、ヘルスソースと同じリージョンに存在する必要があります。
HEALTH_SOURCE: ヘルスソースの名前。BACKEND_SERVICE: ヘルスソースに関連付ける単一のバックエンド サービスの名前。バックエンド サービスは次の要件を満たす必要があります。
- ロード バランシング スキームは
INTERNALまたはINTERNAL_MANAGEDである必要があります。 - 作成するヘルスソースと同じリージョンに存在する必要があります。
- バックエンドは、インスタンス グループまたは
タイプ
GCE_VM_IPまたはGCE_VM_IP_PORTのネットワーク エンドポイント グループである必要があります。
- ロード バランシング スキームは
POLICY: このヘルスソースに適用するヘルス集約ポリシーの名前。
複合ヘルスチェックを作成する
公開されたサービスの各リージョン インスタンスの複合ヘルスチェックを作成します。
複合ヘルスチェックは、関連付けられたヘルスソースのヘルス状態を集計して、最終的な複合ヘルス状態を作成します。最終的なヘルス状態は、正常性の宛先として指定した転送ルールに関連付けられているリージョン公開サービスに適用されます。
コンソール
コンソールで、[複合ヘルス] ページに移動します。 Google Cloud
[複合ヘルスチェック] をクリックします。
[複合ヘルスチェックを作成] をクリックします。
複合ヘルスチェックの名前を入力します。
(省略可)複合ヘルスチェックの説明を入力します。
[**リージョン**] をクリックして、複合ヘルス チェックのリージョンを選択します。
[次へ] をクリックします。
[**ヘルスソース**] をクリックして、複合ヘルスチェックに関連付けるヘルスソースを選択します。[ヘルスソースを追加] をクリックして別のヘルスソースを選択すると、ヘルスソースを追加できます。
[次へ] をクリックします。
[**ロードバランサ タイプ**] をクリックして、ヘルス宛先として使用するロード バランサのタイプを選択します。
[**ロードバランサ**] をクリックして、ヘルス宛先として使用するロードバランサを選択します。
ロードバランサが複数の転送ルールに関連付けられている場合は、 [転送ルール] をクリックして、ヘルス宛先として使用する転送ルール を選択します。
[作成] をクリックします。
gcloud
gcloud compute composite-health-checks create コマンドを使用します。
gcloud compute composite-health-checks create COMPOSITE_HEALTH_CHECK \
--region=REGION \
--health-sources=HEALTH_SOURCES \
--health-destination=HEALTH_DESTINATION
次のように置き換えます。
COMPOSITE_HEALTH_CHECK: 複合ヘルスチェックの名前REGION: 複合ヘルスチェックのリージョンHEALTH_SOURCES: 複合ヘルスチェックに関連付ける 1 つ以上のヘルスソースの名前複数のヘルスソースをカンマ区切りリストで指定できます。
HEALTH_DESTINATION: この複合ヘルスチェックから複合ヘルス状態を受信する転送ルールの URI(例:projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE)転送ルールは、複合ヘルスをサポートし、次の 要件を満たすプロデューサー ロードバランサ に関連付ける必要があります。
- ロード バランシング スキームは
INTERNALまたはINTERNAL_MANAGEDである必要があります。 - 複合ヘルスチェックと同じリージョンに存在する必要があります。
- ロード バランシング スキームは
API
リクエストを regionCompositeHealthChecks.insert メソッドに送信します。
HTTP メソッドと URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/compositeHealthChecks
リクエストの本文(JSON):
{
"name": "COMPOSITE_HEALTH_CHECK",
"healthSources": [
"projects/PROJECT_ID/regions/REGION/healthSources/HEALTH_SOURCE"
],
"healthDestination": "HEALTH_DESTINATION"
}
次のように置き換えます。
PROJECT_ID: 複合ヘルスチェックのプロジェクト ID。REGION: 複合ヘルスチェックのリージョン。COMPOSITE_HEALTH_CHECK: 複合ヘルスチェックの名前。HEALTH_SOURCE: 複合ヘルスチェックに関連付けるヘルスソースの名前。複数のヘルスソースをhealthSources配列に含めることができます。HEALTH_DESTINATION: この複合ヘルスチェックから複合ヘルス状態を受信する転送ルールの URI(例:projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE)転送ルールは、複合ヘルスをサポートし、次の 要件を満たすプロデューサー ロードバランサ に関連付ける必要があります。
- ロード バランシング スキームは
INTERNALまたはINTERNAL_MANAGEDである必要があります。 - 複合ヘルスチェックと同じリージョンに存在する必要があります。
- ロード バランシング スキームは
次のステップ
- 複合ヘルスで公開サービスをモニタリングするには、 複合ヘルスをモニタリングするをご覧ください。
- 複合ヘルス構成を管理するには、 複合ヘルス構成の表示、更新、削除をご覧ください。