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

本頁內容適用於 Apigee,但不適用於 Apigee Hybrid

查看 Apigee Edge 說明文件。

本文說明如何在使用 Private Service Connect (PSC) 進行北向網路路由 (從用戶端到 Apigee 的流量) 時,使用 Apigee 設定主動健康狀態檢查。主動式健康狀態檢查有助於避免發生地區性故障時,網路流量遺失的情況。

總覽

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

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

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

圖 1. 不使用 VPC 對等互連的有效健康狀態檢查 Apigee 架構。

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

必要條件

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

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

  • 對於非虛擬私有雲對等互連安裝作業:
    1. 完成訂閱式即付即用安裝的 Apigee 佈建步驟 1 至 6。目前只能使用指令列介面執行這些步驟。
    2. 略過步驟 7:設定轉送,改為執行下列步驟。
  • 如果虛擬私有雲對等互連安裝作業使用 PSC 進行轉送:
    1. 完成 Apigee 佈建步驟 1 至 7,適用於訂閱制即付即用安裝。目前只能使用指令列介面執行這些步驟。
    2. 略過步驟 8:設定轉送,改為執行下列步驟。

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

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

  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,透過 Proxy 將流量傳送至服務端點。然後在 MIG 上啟用主動健康狀態檢查。

2A. 為虛擬私有雲網路的子網路啟用 Private Google Access

如要為虛擬私有雲網路的子網路啟用私人 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。這些 VM 執行 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」。