借助 Service Extensions,受支持的应用负载平衡器可以从数据处理路径发送标注,以调用用户管理的标注后端服务。这有助于应用负载平衡器在处理路径中使用自定义逻辑。本页介绍了如何配置用户管理的插桩后端服务。
如需大致了解应用负载平衡器扩展程序,请参阅 Cloud Load Balancing 扩展程序概览。
准备工作
确保您拥有项目的 Owner 或 Editor 角色,或者拥有以下 Compute Engine IAM 角色:
- 如需创建实例,请执行以下操作:
compute.instanceAdmin.v1 - 如需创建 Cloud Load Balancing 组件,请执行以下操作:
compute.networkAdmin
- 如需创建实例,请执行以下操作:
启用以下 API:Compute Engine API 和 Network Services API。
控制台
在 Google Cloud 控制台中,前往启用对 API 的访问权限页面。
按照说明操作。
gcloud
使用
gcloud services enable命令:gcloud services enable compute.googleapis.com networkservices.googleapis.com
创建并配置支持扩展的应用负载平衡器。 在此示例中,设置具有虚拟机实例组后端的区域级内部应用负载平衡器。 使用提及的示例值。
仅适用于路线扩展服务。设置额外的后端服务,并更新网址映射以添加主机匹配器,该匹配器会将 HTTP 主机满足指定条件的所有流量路由到此后端服务。
控制台
在 Google Cloud 控制台中,前往创建实例页面。
指定以下示例值:
- 名称:
l7-ilb-backend2-vm - 标记:
allow-ssh和load-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'
- 名称:
-
指定以下示例值:
- 名称:
l7-ilb-backend-service2-ig - 可用区:
us-west1-a
- 名称:
-
对于虚拟机实例,请指定
l7-ilb-backend2-vm。 在 Google Cloud 控制台中,前往负载均衡页面。
通过创建后端服务并向其中添加后端来更新负载均衡器。
对于后端服务,请指定以下示例值:
- 名称:
l7-ilb-backend-service2 - 协议:
HTTP - 健康检查 > 名称:
l7-ilb-basic-check - 健康检查 > 区域:
us-west1
对于后端,请指定以下示例值:
- 实例组:
l7-ilb-backend-service2-ig - 平衡模式:
Utilization
- 名称:
-
指定以下示例值:
- 名称:
l7-ilb-map - 主机:
service-extensions.com - 路径:
callouts - 协议:
HTTP - 后端:
l7-ilb-backend-service2
- 名称:
gcloud
创建虚拟机实例。 使用
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'创建非托管实例组。使用
gcloud compute instance-groups unmanaged create命令,并提供以下示例值:gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \ --zone us-west1-a
将新虚拟机添加到实例组。使用
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
创建后端服务。使用
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
将后端添加到后端服务。使用
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
向后端服务的网址映射添加主机匹配器。 使用
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 服务器示例,用于执行标头突变和正文突变等任务。
如需创建和设置附加宣传信息后端服务,请按以下步骤操作:
为正在运行示例 Python 扩展服务器的回调后端服务创建虚拟机 (VM) 实例。
控制台
在 Google Cloud 控制台中,前往创建实例页面。
指定以下示例值:
- 名称:
callouts-vm - 可用区:
us-west1-a - 网络:
lb-network - 子网:
backend-subnet - 标记:
allow-ssh和load-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
将虚拟机添加到非代管式实例组。
控制台
在 Google Cloud 控制台中,前往实例群组页面。
指定以下示例值:
- 名称:
callouts-ig - 可用区:
us-west1-a
- 名称:
-
对于端口映射,请指定以下端口名称和值:
http:80和grpc:443。 -
对于虚拟机实例,请指定
callouts-vm。
gcloud
创建非托管实例组。使用
gcloud compute instance-groups unmanaged create命令,并提供以下示例值:gcloud compute instance-groups unmanaged create callouts-ig \ --zone=us-west1-a
为实例组设置端口。使用
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
将新虚拟机实例添加到非托管式实例组。使用
gcloud compute instance-groups unmanaged add-instances命令和以下示例值:gcloud compute instance-groups unmanaged add-instances callouts-ig \ --zone=us-west1-a \ --instances=callouts-vm
创建回拨后端服务并添加后端。与其他后端服务器一样,调用服务器可能需要防火墙规则来允许代理流量。
控制台
创建使用 HTTP/2 协议且具有 HTTP 健康检查的回调后端服务。
在 Google Cloud 控制台中,前往 Cloud Load Balancing 后端页面。
添加具有以下示例值的区域后端服务:
- 名称:
l7-ilb-callout-service - 区域:
us-west1 - 负载平衡器类型:
Regional external Application Load Balancer (EXTERNAL_MANAGED) - 协议:
HTTP2 - 端口名称:
grpc - 健康检查 > 名称:
callouts-hc - 健康检查 > 端口号:
80 - Cloud Armor 后端安全政策:
None
- 名称:
将包含扩展服务器的实例组作为后端添加到后端服务。实例组运行
ext_proc服务。指定以下示例值:
- 实例组:
callouts-ig - 平衡模式:
Utilization
- 实例组:
gcloud
为实例创建基本的 HTTP 健康检查。使用
gcloud compute health-checks create http命令,并提供以下示例值:gcloud compute health-checks create http callouts-hc \ --region=us-west1 \ --port=80
创建使用 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
将包含扩展服务器的实例组作为后端添加到后端服务。实例组运行
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