進階用途

本頁說明如何搭配應用程式負載平衡器設定 Service Extensions,以因應進階用途。

動態轉送

動態轉送功能可協助您將數千甚至數百萬個房客繫結至個別虛擬機器 (VM) 執行個體或 VM 集合。您可以使用服務擴充功能,以程式輔助方式判斷個別租戶對應的 VM,不必更新網址對應。這有助於您大幅擴展,超越現有網址對應的限制。

您可以使用流量和路徑回呼,透過下列應用程式負載平衡器設定動態轉送:區域外部應用程式負載平衡器、區域內部應用程式負載平衡器,以及跨區域內部應用程式負載平衡器。

本節將逐步說明範例,您將設定流量擴充功能,在兩個 VM 之間隨機轉送流量。使用提供的樣本值。

  1. 設定名為 lb-network 的網路、名為 backend-subnet 的子網路,以及 us-west1 地區中僅限 Proxy 的子網路。

  2. 設定兩個 VM,代表可動態路由傳送的端點。us-west1

    請分別將 IP 位址指定為 10.1.2.110.1.2.2。確認兩個 VM 都與 load-balanced-backend 標記建立關聯。

  3. 設定防火牆規則 fw-allow-proxies,允許流量從 Proxy 子網路傳送至網路中的 VM。

    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. 建立目標 Proxyl7-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. 設定流量擴充功能的呼叫後端服務

    如要使用擴充功能伺服器,請參閱服務擴充功能 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
            allowDynamicForwarding: 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 beta service-extensions lb-traffic-extensions import traffic-ext \
        --source=dynamic-ext.yaml \
        --location=us-west1
    

設定擴充功能後,系統會根據擴充功能伺服器實作方式傳送流量。

後續步驟