配置用户管理的调用后端服务

借助 Service Extensions,受支持的应用负载平衡器可以从数据处理路径发送标注,以调用用户管理的标注后端服务。这有助于应用负载平衡器在处理路径中使用自定义逻辑。本页介绍了如何配置用户管理的插桩后端服务。

如需大致了解应用负载平衡器扩展程序,请参阅 Cloud Load Balancing 扩展程序概览

准备工作

  1. 确保您拥有项目的 Owner 或 Editor 角色,或者拥有以下 Compute Engine IAM 角色

  2. 启用以下 API:Compute Engine API 和 Network Services API。

    控制台

    1. 在 Google Cloud 控制台中,前往启用对 API 的访问权限页面。

      前往“启用对 API 的访问权限”部分

    2. 按照说明操作。

    gcloud

    使用 gcloud services enable 命令:

    gcloud services enable compute.googleapis.com networkservices.googleapis.com
    
  3. 创建并配置支持扩展的应用负载平衡器。 在此示例中,设置具有虚拟机实例组后端的区域级内部应用负载平衡器。 使用提及的示例值。

  4. 创建客户端虚拟机以进行测试

  5. 仅适用于路线扩展服务。设置额外的后端服务,并更新网址映射以添加主机匹配器,该匹配器会将 HTTP 主机满足指定条件的所有流量路由到此后端服务。

    控制台

    1. 在 Google Cloud 控制台中,前往创建实例页面。

      转到“创建实例”

      指定以下示例值:

      • 名称l7-ilb-backend2-vm
      • 标记allow-sshload-balanced-backend
      • 可用区us-west1-a
      • 网络lb-network
      • 子网backend-subnet
      • 图片debian-11
      • 家庭debian-cloud
      • 高级选项 > 管理 > 自动化

        '#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        echo "Page served from second backend service" | tee /var/www/html/index.html
        systemctl restart apache2'
        
    2. 创建非托管式实例组

      指定以下示例值:

      • 名称l7-ilb-backend-service2-ig
      • 可用区us-west1-a
    3. 将新虚拟机添加到实例组

      对于虚拟机实例,请指定 l7-ilb-backend2-vm

    4. 在 Google Cloud 控制台中,前往负载均衡页面。

      转到“负载均衡”

    5. 通过创建后端服务并向其中添加后端来更新负载均衡器

      对于后端服务,请指定以下示例值:

      • 名称l7-ilb-backend-service2
      • 协议HTTP
      • 健康检查 > 名称l7-ilb-basic-check
      • 健康检查 > 区域us-west1

      对于后端,请指定以下示例值:

      • 实例组l7-ilb-backend-service2-ig
      • 平衡模式Utilization
    6. 向后端服务的网址映射添加主机匹配器

      指定以下示例值:

      • 名称l7-ilb-map
      • 主机service-extensions.com
      • 路径callouts
      • 协议HTTP
      • 后端l7-ilb-backend-service2

    gcloud

    1. 创建虚拟机实例。 使用 gcloud compute instances create 命令,并提供以下示例值:

      gcloud compute instances create l7-ilb-backend2-vm \
        --zone=us-west1-a \
        --network=lb-network \
        --subnet=backend-subnet \
        --tags=allow-ssh,load-balanced-backend \
        --image-family=debian-11 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
            apt-get update
            apt-get install apache2 -y
            a2ensite default-ssl
            a2enmod ssl
            echo "Page served from second backend service" | tee /var/www/html/index.html
            systemctl restart apache2'
      
    2. 创建非托管实例组。使用 gcloud compute instance-groups unmanaged create 命令,并提供以下示例值:

      gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \
        --zone us-west1-a
      
    3. 将新虚拟机添加到实例组。使用 gcloud compute instance-groups unmanaged add-instances 命令,并提供以下示例值:

      gcloud compute instance-groups unmanaged add-instances l7-ilb-backend-service2-ig \
        --zone=us-west1-a \
        --instances=l7-ilb-backend2-vm
      
    4. 创建后端服务。使用 gcloud compute backend-services create 命令,并提供以下示例值:

      gcloud compute backend-services create l7-ilb-backend-service2 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTP \
        --health-checks=l7-ilb-basic-check \
        --health-checks-region=us-west1 \
        --region=us-west1
      
    5. 将后端添加到后端服务。使用 gcloud compute backend-services add-backend 命令,并提供以下示例值:

      gcloud compute backend-services add-backend l7-ilb-backend-service2 \
        --balancing-mode=UTILIZATION \
        --instance-group=l7-ilb-backend-service2-ig \
        --instance-group-zone=us-west1-a \
        --region=us-west1
      
    6. 向后端服务的网址映射添加主机匹配器。 使用 gcloud compute url-maps add-path-matcher 命令,并提供以下示例值:

      gcloud compute url-maps add-path-matcher l7-ilb-map \
        --path-matcher-name=callouts \
        --default-service=l7-ilb-backend-service2 \
        --new-hosts=service-extensions.com \
        --region=us-west1
        

设置调用后端服务

在此示例中,我们提供了一个基于 Python 的基本扩展服务器,该服务器实现了 Envoy 的 ext_proc gRPC API。 Google Cloud的 Service Extensions GitHub 代码库中的 us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main 包含此服务器的 Docker 容器。此代码库包含多个其他 Python 和 Go ext_proc 服务器示例,用于执行标头突变和正文突变等任务。

如需创建和设置附加宣传信息后端服务,请按以下步骤操作:

  1. 为正在运行示例 Python 扩展服务器的回调后端服务创建虚拟机 (VM) 实例。

    控制台

    使用容器映像创建实例

    1. 在 Google Cloud 控制台中,前往创建实例页面。

      转到“创建实例”

    2. 指定以下示例值:

      • 名称callouts-vm
      • 可用区us-west1-a
      • 网络lb-network
      • 子网backend-subnet
      • 标记allow-sshload-balanced-backend
      • 容器映像us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main

    gcloud

    使用容器映像创建实例。使用 gcloud compute instances create-with-container 命令,并提供以下示例值:

    gcloud compute instances create-with-container callouts-vm \
      --container-image=us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main \
      --network=lb-network \
      --subnet=backend-subnet \
      --zone=us-west1-a \
      --tags=allow-ssh,load-balanced-backend
    
  2. 将虚拟机添加到非代管式实例组。

    控制台

    创建非托管式实例组

    1. 在 Google Cloud 控制台中,前往实例群组页面。

      进入“实例组”

      指定以下示例值:

      • 名称callouts-ig
      • 可用区us-west1-a
    2. 为实例组设置端口

      对于端口映射,请指定以下端口名称和值:http:80grpc:443

    3. 将新虚拟机添加到实例组

      对于虚拟机实例,请指定 callouts-vm

    gcloud

    1. 创建非托管实例组。使用 gcloud compute instance-groups unmanaged create 命令,并提供以下示例值:

      gcloud compute instance-groups unmanaged create callouts-ig \
        --zone=us-west1-a
      
    2. 为实例组设置端口。使用 gcloud compute instance-groups unmanaged set-named-ports 命令,并提供以下示例值:

      gcloud compute instance-groups unmanaged set-named-ports callouts-ig \
        --named-ports=http:80,grpc:443 \
        --zone=us-west1-a
      
    3. 将新虚拟机实例添加到非托管式实例组。使用 gcloud compute instance-groups unmanaged add-instances 命令和以下示例值:

      gcloud compute instance-groups unmanaged add-instances callouts-ig \
        --zone=us-west1-a \
        --instances=callouts-vm
      
  3. 创建回拨后端服务并添加后端。与其他后端服务器一样,调用服务器可能需要防火墙规则来允许代理流量。

    控制台

    创建使用 HTTP/2 协议且具有 HTTP 健康检查的回调后端服务。

    1. 在 Google Cloud 控制台中,前往 Cloud Load Balancing 后端页面。

      前往“后端”

    2. 添加具有以下示例值的区域后端服务:

      • 名称l7-ilb-callout-service
      • 区域us-west1
      • 负载平衡器类型Regional external Application Load Balancer (EXTERNAL_MANAGED)
      • 协议HTTP2
      • 端口名称grpc
      • 健康检查 > 名称callouts-hc
      • 健康检查 > 端口号80
      • Cloud Armor 后端安全政策None
    3. 将包含扩展服务器的实例组作为后端添加到后端服务。实例组运行 ext_proc 服务。

      指定以下示例值:

      • 实例组callouts-ig
      • 平衡模式Utilization

    gcloud

    1. 为实例创建基本的 HTTP 健康检查。使用 gcloud compute health-checks create http 命令,并提供以下示例值:

      gcloud compute health-checks create http callouts-hc \
        --region=us-west1 \
        --port=80
      
    2. 创建使用 HTTP/2 协议的回调后端服务。使用 gcloud compute backend-services create 命令

      gcloud compute backend-services create l7-ilb-callout-service \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTP2 \
        --port-name=grpc \
        --health-checks=callouts-hc \
        --health-checks-region=us-west1 \
        --region=us-west1
      
    3. 将包含扩展服务器的实例组作为后端添加到后端服务。实例组运行 ext_proc 服务。使用 gcloud compute backend-services add-backend 命令和以下示例值:

      gcloud compute backend-services add-backend l7-ilb-callout-service \
        --balancing-mode=UTILIZATION \
        --instance-group=callouts-ig \
        --instance-group-zone=us-west1-a \
        --region=us-west1
      

设置后端服务后,您可以配置路由授权流量扩展程序。

后续步骤