本頁說明如何搭配應用程式負載平衡器設定 Service Extensions,以因應進階用途。
動態轉送
動態轉送功能可協助您將數千甚至數百萬個房客繫結至個別虛擬機器 (VM) 執行個體或 VM 集合。您可以使用服務擴充功能,以程式輔助方式判斷個別租戶對應的 VM,不必更新網址對應。這有助於您大幅擴展,超越現有網址對應的限制。
您可以使用流量和路徑回呼,透過下列應用程式負載平衡器設定動態轉送:區域外部應用程式負載平衡器、區域內部應用程式負載平衡器,以及跨區域內部應用程式負載平衡器。
本節將逐步說明範例,您將設定流量擴充功能,在兩個 VM 之間隨機轉送流量。使用提供的樣本值。
設定名為
lb-network的網路、名為backend-subnet的子網路,以及us-west1地區中僅限 Proxy 的子網路。設定兩個 VM,代表可動態路由傳送的端點。
us-west1請分別將 IP 位址指定為
10.1.2.1和10.1.2.2。確認兩個 VM 都與load-balanced-backend標記建立關聯。設定防火牆規則
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建立後端服務,並啟用動態轉送和記錄功能:
l7-ilb-backend-servicegcloud 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建立目標 Proxy,
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 -
如要使用擴充功能伺服器,請參閱服務擴充功能 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 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
設定擴充功能後,系統會根據擴充功能伺服器實作方式傳送流量。
後續步驟
- 管理擴充功能
- 前往 Service Extensions 的 GitHub 呼叫外掛程式存放區,查看
ext-proc伺服器的 Python 和 Go 範例。