PSC を使用したリージョン フェイルオーバー用のアクティブ ヘルスチェックを構成する

このページの内容は Apigee に適用されます。Apigee ハイブリッドには適用されません。

Apigee Edge のドキュメントはこちらをご覧ください。

このドキュメントでは、Northbound ネットワーク ルーティング(クライアントから Apigee へのトラフィック)に Private Service Connect(PSC)を使用する場合に、アクティブ ヘルスチェックを構成するように Apigee を構成する方法について説明します。アクティブ ヘルスチェックは、リージョン障害が発生した場合のネットワーク トラフィックの損失を防ぐうえで役立ちます。

概要

Apigee Northbound ネットワーク ルーティングに PSC を使用する場合は、このドキュメントの手順に沿ってアクティブ ヘルスチェックを構成します。現時点では、PSC はアクティブ ヘルスチェックのモニタリングをサポートしていません。PSC のこの制限を回避するには、アクティブ ヘルスチェックの機能を提供する MIG(マネージド インスタンス グループ)を使用するように Apigee のインストール構成を変更します。

ヘルス モニタリングには外れ値検出を使用できます。ただし、リージョンの障害では、外れ値検出がリアルタイムのトラフィックを指標として使用するため、定期的に一定量のトラフィックが失われる可能性があります。外れ値検出では、ライブ トラフィックの一部を定期的に再ルーティングして、障害が発生したリージョンの健全性を確認します。

図 1 に、推奨のアーキテクチャを示します。サービス エンドポイントが Apigee インスタンスのサービス アタッチメントに接続し、MIG がトラフィックをサービス エンドポイントにプロキシします。MIG でヘルスチェックのモニタリングを有効にします。

図 1. VPC ピアリングを使用しないアクティブ ヘルスチェックの Apigee アーキテクチャ。

MIG ベースのヘルスチェック アプローチ

前提条件

このドキュメントで説明する手法は、VPC ピアリングを使用する Apigee インストール、または VPC ピアリングを使用しない Apigee インストールに適用できます。ただし、VPC ピアリング インストールの場合、ここで説明するアクティブ ヘルスチェックの手法は、ルーティング構成に PSC を使用する場合にのみ適用されます。

このセクションの手順に沿って操作する前に、次のことを行います。

  • VPC 以外のピアリング インストールの場合:
    1. サブスクリプション ベースまたは従量課金制のインストール用に Apigee のプロビジョニング手順のステップ 1~6 を行います。現在のところ、コマンドライン インターフェースを使用してこれらの手順を実施することが唯一の選択肢です。
    2. ステップ 7 のルーティングの構成をスキップして、代わりに次の手順で操作します。
  • ルーティングに PSC を使用する VPC ピアリング インストールの場合:
    1. サブスクリプション ベースまたは従量課金制のインストール用に Apigee のプロビジョニング手順のステップ 1~7 を行います。現在のところ、コマンドライン インターフェースを使用してこれらの手順を実施することが唯一の選択肢です。
    2. ステップ 8 のルーティングの構成をスキップして、代わりに次の手順で操作します。

1. Apigee サービス アタッチメント用の PSC サービス エンドポイントを構成する

このステップでは、Apigee インスタンスのサービス アタッチメントを指す PSC Service Endpoint を作成します。

  1. 前の手順で作成した Apigee インスタンスからサービス アタッチメントを取得します。
    curl -i -X GET -H "Authorization: Bearer $AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    次のサンプル出力では、serviceAttachment 値が太字で表示されています。

    {
      "instances": [
        {
          "name": "us-west1",
          "location": "us-west1",
          "host": "10.82.192.2",
          "port": "443",
          "createdAt": "1645731488019",
          "lastModifiedAt": "1646504754219",
          "diskEncryptionKeyName": "projects/my-project/locations/us-west1/keyRings/us-west1/cryptoKeys/dek",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-7-0-20220228-190814",
          "ipRange": "10.82.192.0/22,10.82.196.0/28",
          "consumerAcceptList": [
            "875609189304"
          ],
          "serviceAttachment": "projects/bfac74a67a320c43a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw1"
        }
      ]
    }
  2. Private Service Connect エンドポイントを作成するの説明に従って、前の手順でインスタンス レスポンスの本文から取得したサービス アタッチメントを指す PSC サービス エンドポイントを作成します。

2. サービス エンドポイントを参照する MIG を構成する

この手順では、トラフィックをサービス エンドポイントにプロキシする MIG を作成します。その後、MIG でアクティブ ヘルスチェックを有効にできます。

2A. VPC ネットワークのサブネットで限定公開の Google アクセスを有効にする

VPC ネットワークのサブネットで限定公開の Google アクセスを有効にするには、限定公開の Google アクセスを有効にするに記載された手順に沿ってください。

2B. 環境変数を設定する

このセクションの手順では、環境変数を使用して、繰り返し使用される文字列を参照します。続行する前に、これらを設定することをおすすめします。

MIG_NAME=YOUR_MIG_NAME  # A name you provide for the MIG
VPC_NAME=default       # If you are using a shared VPC, use the shared VPC name
VPC_SUBNET=default     # Private Google Access must be enabled for this subnet
REGION=RUNTIME_REGION        # The same region as your Apigee runtime instance
SERVICE_ENDPOINT_IP=YOUR_SERVICE_ENDPOINT_IP.  ## The endpoint IP of the service endpoint you just created

これらの変数は、残りのプロセスで複数回使用します。複数のリージョンを構成する場合は、固有の値を持つ変数を各リージョンに作成します。

2C. マネージド インスタンス グループを作成する

この手順では、マネージド インスタンス グループ(MIG)を作成して構成します。

  1. 次のコマンドを実行して、インスタンス テンプレートを作成します。
    gcloud compute instance-templates create $MIG_NAME \
    --project $PROJECT_ID \
    --region $REGION \
    --network $VPC_NAME \
    --subnet $VPC_SUBNET \
    --tags=https-server,apigee-mig-proxy,gke-apigee-proxy \
    --machine-type e2-medium --image-family debian-10 \
    --image-project debian-cloud --boot-disk-size 20GB \
    --no-address \
    --metadata ENDPOINT=$SERVICE_ENDPOINT_IP,startup-script-url=gs://apigee-5g-saas/apigee-envoy-proxy-release/latest/conf/startup-script.sh

    このコマンドからわかるように、マシンのタイプは e2-medium です。Debian 10 を実行し、20 GB のディスク容量があります。startup-script.sh スクリプトは、ロードバランサから Apigee インスタンスにインバウンド トラフィックを転送するように MIG を構成します。

  2. 次のコマンドを実行して、マネージド インスタンス グループを作成します。
    gcloud compute instance-groups managed create $MIG_NAME \
    --project $PROJECT_ID --base-instance-name apigee-mig \
    --size 2 --template $MIG_NAME --region $REGION
  3. 次のコマンドを実行して、グループの自動スケーリングを構成します。
    gcloud compute instance-groups managed set-autoscaling $MIG_NAME \
    --project $PROJECT_ID --region $REGION --max-num-replicas 3 \
    --target-cpu-utilization 0.75 --cool-down-period 90
  4. 次のコマンドを実行して、名前付きポートを定義します。
    gcloud compute instance-groups managed set-named-ports $MIG_NAME \
    --project $PROJECT_ID --region $REGION --named-ports https:443

3. ヘルスチェック モニタリングを使用してロードバランサを構成する

次の手順では、ヘルスチェック モニタリングを使用してロードバランサを構成します。

3A. ロードバランサの SSL 証明書と鍵を作成する

単一リージョンとマルチリージョンのどちらにインストールする場合でも、認証情報を作成する必要があるのは 1 回だけです。後のステップで、これらの認証情報をロードバランサのターゲット HTTPS プロキシに関連付けます。

認証情報は以下を使用して作成できます。

Google Cloud ロードバランサの SSL 証明書の作成と使用の詳細については、SSL 証明書SSL 証明書の概要をご覧ください。

次の例では、Google マネージド SSL 証明書を作成します。

  1. 次の環境変数を作成します。
    CERTIFICATE_NAME=YOUR_CERT_NAME
    DOMAIN_HOSTNAME=YOUR_DOMAIN_HOSTNAME 

    登録した有効なドメインホスト名に、DOMAIN_HOSTNAME を設定します。後のステップでは、ロードバランサの IP アドレスを取得し、そのアドレスを指すようにドメイン A レコードを更新します。たとえば、ドメインホスト名は foo.example.com のようになります。

  2. gcloud compute ssl-certificates create コマンドを実行します。
    gcloud compute ssl-certificates create $CERTIFICATE_NAME \
    --domains=$DOMAIN_HOSTNAME \
    --project $PROJECT_ID \
    --global

    証明書のプロビジョニングには最長で 1 時間かかることがあります。プロビジョニングのステータスを確認するには、次のコマンドを実行します。

    gcloud compute ssl-certificates describe $CERTIFICATE_NAME \
    --global \
    --format="get(name,managed.status, managed.Status)"

3B. ヘルスチェックの作成

  1. ヘルスチェックを作成します。
    gcloud compute health-checks create https HEALTH_CHECK_NAME \
    --project $PROJECT_ID --port 443 --global \
    --request-path /healthz/ingress

    このヘルスチェックを使用して、バックエンド サービスが実行されていることを確認します。特定のプロキシに対してより高度なヘルスチェックを構成する方法については、ヘルスチェックの実施をご覧ください。

  2. バックエンド サービスを作成します。
    gcloud compute backend-services create PROXY_BACKEND_NAME \
    --project $PROJECT_ID \
    --protocol HTTPS \
    --health-checks HEALTH_CHECK_NAME \
    --port-name https \
    --timeout 302s \
    --connection-draining-timeout 300s \
    --global
  3. 次のコマンドを使用して、バックエンド サービスに MIG を追加します。
    gcloud compute backend-services add-backend PROXY_BACKEND_NAME \
    --project $PROJECT_ID --instance-group $MIG_NAME \
    --instance-group-region $REGION \
    --balancing-mode UTILIZATION --max-utilization 0.8 --global
  4. 次のコマンドを使用して、ロード バランシング URL マップを作成します。
    gcloud compute url-maps create MIG_PROXY_MAP_NAME \
    --project $PROJECT_ID --default-service PROXY_BACKEND_NAME
  5. 次のコマンドを使用して、ロード バランシングのターゲット HTTPS プロキシを作成します。
    gcloud compute target-https-proxies create MIG_HTTPS_PROXY_NAME \
    --project $PROJECT_ID --url-map MIG_PROXY_MAP_NAME \
    --ssl-certificates $CERTIFICATE_NAME

3C. 予約済みの IP アドレスを取得してファイアウォール ルールを作成する

ロードバランサに IP アドレスを割り当ててから、ロードバランサが MIG へのアクセスを許可するルールを作成する必要があります。この手順は、インストールするリージョンが 1 つのリージョンかマルチリージョンかにかかわらず、1 回のみ行う必要があります。

  1. ロードバランサの IP アドレスを予約します。
    gcloud compute addresses create ADDRESSES_NAME \
    --project $PROJECT_ID \
    --ip-version=IPV4 \
    --global
  2. 次のコマンドを使用して、グローバル転送ルールを作成します。
    gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --project $PROJECT_ID --address ADDRESSES_NAME --global \
    --target-https-proxy MIG_HTTPS_PROXY_NAME --ports 443
  3. 次のコマンドを実行して、予約済みの IP アドレスを取得します。
    gcloud compute addresses describe ADDRESSES_NAME \
    --project $PROJECT_ID --format="get(address)" --global
  4. 重要な手順: DNS レコードが管理されているサイト、DNS ホスト、または ISP に移動し、ドメインの DNS レコードが Google Cloud ロードバランサの IP アドレスに解決されることを確認します。このアドレスは、最後のステップで返された IP 値です。詳細については、ロードバランサの IP アドレスを指すように DNS A および AAAA レコードを更新するをご覧ください。
  5. 次のコマンドを使用して、ロードバランサに MIG へのアクセスを許可するファイアウォール ルールを作成します。
    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --description "Allow incoming from GLB on TCP port 443 to Apigee Proxy" \
    --project $PROJECT_ID --network $VPC_NAME --allow=tcp:443 \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=gke-apigee-proxy

    IP アドレス範囲 130.211.0.0/2235.191.0.0/16 は、Google Cloud Load Balancing の送信元 IP アドレス範囲です。このファイアウォール ルールにより、Google Cloud Load Balancing から MIG へのヘルスチェック リクエストが可能になります。

Apigee のプロビジョニングが完了しました。サンプル プロキシをデプロイするに移動します。