使用 PSC 為地區容錯功能設定有效的健康狀態檢查

本頁面適用於 Apigee,但不適用於 Apigee Hybrid

查看 Apigee Edge 說明文件。

本文件說明如何使用 Apigee 設定主動健康狀態檢查,以便使用 Private Service Connect (PSC) 進行北向網路路由 (從用戶端傳送至 Apigee 的流量)。主動式健康狀態檢查可在發生區域性故障時,避免網路流量遺失。

總覽

如果您打算使用 PSC 為 Apigee 的北向網路路由設定,請按照本文件中的操作說明設定有效的健康狀態檢查。PSC 目前不支援主動健康狀態檢查監控功能,但您可以修改 Apigee 設定,使用可提供主動健康狀態檢查功能的代管執行個體群組 (MIG)。

您可以使用異常值偵測功能監控健康狀態;不過,在區域性故障期間,您可能會定期流失部分流量,因為異常值偵測功能會使用即時流量做為指標。異常情況偵測會定期重新路由部分即時流量,以便檢查失敗區域的健康狀況。

圖 1 顯示建議的架構。服務端點會連線至 Apigee 執行個體中的服務附件,而 MIG 會將流量代理至服務端點。您在 MIG 上啟用健康狀態檢查監控功能。

圖 1. 不需虛擬私有雲對等連線,即可進行主動健康狀態檢查的 Apigee 架構。

以 MIG 為準的健康狀態檢查方法

必要條件

您可以將本文所述的技術套用至使用或不使用 VPC 對等互連的 Apigee 安裝作業。不過,如果是 VPC 對等安裝作業,則只有在您使用 PSC 進行路由設定時,才適用本文所述的有效健康檢查技術。

執行本節中的步驟前,請先完成下列事項:

  • 非虛擬私有雲對等互連安裝:
    1. 完成 Apigee Provisioning 步驟 1 至 6,以便訂閱即付即用安裝。目前唯一的做法是使用指令列介面執行這些步驟。
    2. 請略過步驟 7:設定轉送,改為執行下列步驟。
  • 針對使用 PSC 進行路由的 VPC 對等互連安裝作業:
    1. 完成 Apigee 佈建步驟 1 至 7,適用於訂閱即付即用安裝。目前唯一的做法是使用指令列介面執行這些步驟。
    2. 請略過步驟 8:設定路由,改為執行下列步驟。

1. 為 Apigee 服務連結設定 PSC 服務端點

在這個步驟中,您會建立 PSC 服務端點,指向 Apigee 執行個體中的服務連結:

  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. 建立 PSC 服務端點,指向您在先前步驟中從執行個體回應主體取得的服務附件,如「建立 Private Service Connect 端點」一文所述。

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-12 \
    --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 12,且磁碟空間為 20 GB。startup-script.sh 指令碼會設定 MIG,將負載平衡器的入站流量轉送至 Apigee 執行個體。

  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 憑證和金鑰

無論是在單一或多個區域安裝,您只需建立一次憑證。在後續步驟中,您將這些憑證與負載平衡器的目標 HTTPS Proxy 建立關聯。

您可以使用下列方式建立憑證:

如要進一步瞭解如何為 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

    佈建憑證最多可能需要一小時的時間。如要檢查佈建狀態,請執行下列指令:

    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

    您將使用這項健康狀態檢查,確保後端服務正在執行。如要針對特定 Proxy 設定更進階的健康狀態檢查,請參閱「執行健康狀態檢查」一文。

  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. 使用下列指令建立負載平衡網址對應
    gcloud compute url-maps create MIG_PROXY_MAP_NAME \
    --project $PROJECT_ID --default-service PROXY_BACKEND_NAME
  5. 使用下列指令建立負載平衡目標 HTTPS Proxy
    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. 為負載平衡器保留 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 值。詳情請參閱「 更新 DNS A 和 AAAA 記錄,指向負載平衡器的 IP 位址」。
  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 負載平衡器的來源 IP 位址範圍。這項防火牆規則可讓 Google Cloud Load Balancing 向 MIG 提出健康狀態檢查要求。

Apigee 佈建程序已完成。請參閱「部署範例 Proxy」一文。