使用 PSC 为区域级故障切换配置主动健康检查

本页面适用于 Apigee,但不适用于 Apigee Hybrid

查看 Apigee Edge 文档。

本文档介绍了在您希望使用 Private Service Connect (PSC) 进行北向网络路由(从客户端到 Apigee 的流量)的情况下,如何配置 Apigee 以进行主动健康检查。主动健康检查有助于在发生区域级故障时防止网络流量丢失。

概览

如果您打算将 PSC 用于 Apigee 北向网络路由,请按照本文档中的说明配置主动健康检查。目前,PSC 不支持主动健康检查监控。如需解决 PSC 的此限制,您可以修改 Apigee 安装配置以使用托管式实例组 (MIG),该实例组可以提供主动健康检查功能。

您可以使用离群值检测进行运行状况监控;但是,在区域故障期间,您可能会定期丢失一定量的流量,因为离群值检测使用实时流量作为指标。离群值检测会定期重新路由部分实时流量,以检查故障区域的运行状况。

图 1 显示了建议的架构。服务端点连接到 Apigee 实例中的服务连接,MIG 将流量代理到服务端点。您可以针对该 MIG 启用健康检查监控功能。

图 1:不使用 VPC 对等互连进行主动健康检查的 Apigee 架构。

基于 MIG 的健康检查方法

前提条件

您可以将本文档中所述的技术应用于使用 VPC 对等互连或不使用 VPC 对等互连的 Apigee 安装。但是,对于 VPC 对等互连安装,仅当您将 PSC 用于路由配置时,此处介绍的主动健康检查技术才适用。

在执行本部分中的步骤之前,请先完成以下操作:

  • 对于非 VPC 对等互连安装:
    1. 对于基于订阅随用随付的安装,完成 Apigee 预配第 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 并具有 20GB 磁盘。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 代理相关联。

您可以使用以下命令创建凭据:

如需详细了解如何为 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

    您将使用此健康检查来确保后端服务正在运行。如需了解如何针对特定代理配置更高级的健康检查,请参阅执行健康检查

  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 代理
    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 预配完成。转到部署示例代理