高级用例

本页面介绍了如何将服务扩展与应用负载平衡器搭配使用,以实现高级用例。

动态转发

借助动态转发,您可以将数千甚至数百万个租户绑定到单个虚拟机 (VM) 实例或一组虚拟机。您可以使用服务扩展程序以编程方式确定单个租户映射到的虚拟机,而无需更新网址映射。这有助于您大幅突破现有网址映射的限制。

您可以通过以下应用负载平衡器使用流量和路由调用来配置动态转发:区域级外部应用负载平衡器、区域级内部应用负载平衡器和跨区域内部应用负载平衡器。

本部分将引导您完成一个示例,其中您将配置流量扩展,以在两个虚拟机之间随机路由流量。使用提供的示例值。

  1. 配置一个名为lb-network 的网络、一个名为 backend-subnet 的子网和一个位于 us-west1 区域中的代理专用子网。

  2. us-west1配置两个虚拟机,以表示可动态路由的端点。

    将 IP 地址分别指定为 10.1.2.110.1.2.2。确保两个虚拟机都与标记 load-balanced-backend 相关联。

  3. 配置防火墙规则 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
    
  4. 创建后端服务 l7-ilb-backend-service,并启用动态转发和日志记录:

    gcloud beta compute backend-services create l7-ilb-backend-service \
        --ip-port-dynamic-forwarding \
        --enable-logging \
        --region=us-west1
    
  5. 为后端服务创建网址映射 (l7-ilb-map)。

    gcloud compute url-maps create l7-ilb-map \
        --default-service=l7-ilb-backend-service \
        --region=us-west1
    
  6. 创建目标代理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
    
  7. 创建转发规则为应用负载平衡器预留 IP 地址

    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
    
  8. 为流量扩展程序设置调用后端服务

    对于扩展服务,请使用 Service Extensions GitHub 代码库中的动态转发示例。

  9. 创建一个 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
    

配置扩展程序后,流量将根据扩展程序服务器实现进行路由。

后续步骤