本页面介绍了如何将服务扩展与应用负载平衡器搭配使用,以实现高级用例。
动态转发
借助动态转发,您可以将数千甚至数百万个租户绑定到单个虚拟机 (VM) 实例或一组虚拟机。您可以使用服务扩展程序以编程方式确定单个租户映射到的虚拟机,而无需更新网址映射。这有助于您大幅突破现有网址映射的限制。
您可以通过以下应用负载平衡器使用流量和路由调用来配置动态转发:区域级外部应用负载平衡器、区域级内部应用负载平衡器和跨区域内部应用负载平衡器。
本部分将引导您完成一个示例,其中您将配置流量扩展,以在两个虚拟机之间随机路由流量。使用提供的示例值。
配置一个名为
lb-network的网络、一个名为backend-subnet的子网和一个位于us-west1区域中的代理专用子网。在
us-west1中配置两个虚拟机,以表示可动态路由的端点。将 IP 地址分别指定为
10.1.2.1和10.1.2.2。确保两个虚拟机都与标记load-balanced-backend相关联。配置防火墙规则
fw-allow-proxies,以允许从代理子网到您网络中的虚拟机的流量。gcloud compute firewall-rules create fw-allow-proxies \ --network=df-network \ --action=allow \ --direction=ingress \ --source-ranges=source-range \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080创建后端服务
l7-ilb-backend-service,并启用动态转发和日志记录:gcloud beta compute backend-services create l7-ilb-backend-service \ --ip-port-dynamic-forwarding \ --enable-logging \ --region=us-west1为后端服务创建网址映射 (
l7-ilb-map)。gcloud compute url-maps create l7-ilb-map \ --default-service=l7-ilb-backend-service \ --region=us-west1创建目标代理,
l7-ilb-proxy。gcloud compute target-http-proxies create l7-ilb-proxy \ --url-map=l7-ilb-map \ --url-map-region=us-west1 \ --region=us-west1-
gcloud compute forwarding-rules create l7-ilb-forwarding-rule \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=backend-subnet \ --subnet-region=us-west1 \ --ports=80 \ --region=us-west1 \ --target-http-proxy=l7-ilb-proxy \ --target-http-proxy-region=us-west1 为流量扩展程序设置调用后端服务。
对于扩展服务,请使用 Service Extensions GitHub 代码库中的动态转发示例。
创建一个 YAML 文件
dynamic-ext.yaml,其中包含以下内容:name: traffic-ext forwardingRules: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/l7-ilb-forwarding-rule loadBalancingScheme: INTERNAL_MANAGED extensionChains: - name: "chain1" matchCondition: celExpression: 'request.host == "example.com"' extensions: - name: 'ext11' authority: ext11.com allowedDynamicForwarding: true service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/l7-ilb-callout-service failOpen: false timeout: 0.1s supportedEvents: - REQUEST_HEADERS将
PROJECT_ID替换为项目 ID。将流量扩展程序导入到转发规则中:
gcloud service-extensions lb-traffic-extensions import traffic-ext \ --source=dynamic-ext.yaml \ --region=us-west1
配置扩展程序后,流量将根据扩展程序服务器实现进行路由。
后续步骤
- 管理扩展程序
- 在 Service Extensions GitHub 代码库(适用于调用)中查看
ext-proc服务器的 Python 和 Go 示例。