自動クロスリージョン フェイルオーバー用に複合ヘルスを構成する

このページでは、サービス プロデューサーが公開サービスの自動クロスリージョン フェイルオーバーをサポートするように複合ヘルスを構成する方法について説明します。

始める前に

必要なロール

複合ヘルスを構成するために必要な権限を取得するには、プロジェクトに対する 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 つ以上のヘルス集約ポリシーを作成します。

ヘルス集計ポリシーは、バックエンド サービスが正常と見なされる基準を定義する再利用可能なリソースです。複数のバックエンド サービスに同じポリシーを適用することも、異なるヘルス要件を持つサービスに対して異なるポリシーを作成することもできます。

コンソール

  1. コンソールで、[複合ヘルス] ページに移動します。 Google Cloud

    [複合ヘルス] に移動

  2. [ヘルス集計ポリシー] をクリックします。

  3. [ヘルス集計ポリシーを作成] をクリックします。

  4. ヘルス集約ポリシーの名前を入力します。

  5. (省略可)ポリシーの説明を入力します。

  6. [**リージョン**] をクリックして、ヘルス集約 ポリシーのリージョンを選択します。

  7. [次へ] をクリックします。

  8. [正常な割合のしきい値] ボックスに、ヘルスソースが正常と見なされるために正常である必要があるバックエンド サービス内のエンドポイントの最小割合(例: 75)を入力します。

  9. [正常な最小しきい値] ボックスに、ヘルスソースが正常と見なされるために、バックエンド サービスで正常である必要があるエンドポイントの最小数を入力します。

  10. [作成] をクリックします。

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 つ以上のヘルスソースからヘルス状態を集計して、サービスの最終的な複合ヘルス状態を生成します。

コンソール

  1. コンソールで、[複合ヘルス] ページに移動します。 Google Cloud

    [複合ヘルス] に移動

  2. [ヘルスソース] をクリックします。

  3. [ヘルスソースを作成] をクリックします。

  4. ヘルスソースの名前を入力します。

  5. (省略可)ヘルスソースの説明を入力します。

  6. [**リージョン**] をクリックして、ヘルスソースのリージョンを選択します。

  7. [次へ] をクリックします。

  8. [Source] をクリックして、 ヘルス ソースに関連付けるバックエンド サービスを選択します。

  9. [次へ] をクリックします。

  10. [**ヘルス集計ポリシー**] をクリックして、このヘルス 集計ポリシーをこのヘルスソースに適用します。

  11. [作成] をクリックします。

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: このヘルスソースに適用するヘルス集約ポリシーの名前。

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

公開されたサービスの各リージョン インスタンスの複合ヘルスチェックを作成します。

複合ヘルスチェックは、関連付けられたヘルスソースのヘルス状態を集計して、最終的な複合ヘルス状態を作成します。最終的なヘルス状態は、正常性の宛先として指定した転送ルールに関連付けられているリージョン公開サービスに適用されます。

コンソール

  1. コンソールで、[複合ヘルス] ページに移動します。 Google Cloud

    [複合ヘルス] に移動

  2. [複合ヘルスチェック] をクリックします。

  3. [複合ヘルスチェックを作成] をクリックします。

  4. 複合ヘルスチェックの名前を入力します。

  5. (省略可)複合ヘルスチェックの説明を入力します。

  6. [**リージョン**] をクリックして、複合ヘルス チェックのリージョンを選択します。

  7. [次へ] をクリックします。

  8. [**ヘルスソース**] をクリックして、複合ヘルスチェックに関連付けるヘルスソースを選択します。[ヘルスソースを追加] をクリックして別のヘルスソースを選択すると、ヘルスソースを追加できます。

  9. [次へ] をクリックします。

  10. [**ロードバランサ タイプ**] をクリックして、ヘルス宛先として使用するロード バランサのタイプを選択します。

  11. [**ロードバランサ**] をクリックして、ヘルス宛先として使用するロードバランサを選択します。

  12. ロードバランサが複数の転送ルールに関連付けられている場合は、 [転送ルール] をクリックして、ヘルス宛先として使用する転送ルール を選択します。

  13. [作成] をクリックします。

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 である必要があります。
    • 複合ヘルスチェックと同じリージョンに存在する必要があります。

次のステップ