Service Extensions 可讓支援的應用程式負載平衡器,從資料處理路徑傳送呼叫至使用者管理的呼叫後端服務。這有助於應用程式負載平衡器在處理路徑中使用自訂邏輯。本頁說明如何設定使用者管理的叫用後端服務。
如要瞭解應用程式負載平衡器擴充功能,請參閱「Cloud Load Balancing 擴充功能總覽」。
事前準備
請確認您具有專案擁有者或編輯者角色,或是下列 Compute Engine IAM 角色:
- 如要建立執行個體,請執行
compute.instanceAdmin.v1。 - 如要建立 Cloud Load Balancing 元件,請按照下列步驟操作:
compute.networkAdmin
- 如要建立執行個體,請執行
啟用下列 API:Compute Engine API 和 Network Services API。
控制台
前往 Google Cloud 控制台的「Enable access to APIs」(啟用 API 存取權) 頁面。
按照畫面上的指示操作。
gcloud
使用
gcloud services enable指令:gcloud services enable compute.googleapis.com networkservices.googleapis.com
建立並設定支援擴充功能的應用程式負載平衡器。 在本範例中,請設定具有 VM 執行個體群組後端的區域內部應用程式負載平衡器。 使用上述範例值。
僅適用於路線擴充功能。設定額外的後端服務,並更新網址對應,新增主機比對器,將 HTTP 主機符合指定條件的所有流量,轉送至這個後端服務。
控制台
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
指定下列範例值:
- Name (名稱):
l7-ilb-backend2-vm - 標記:
allow-ssh和load-balanced-backend - Zone (可用區):
us-west1-a - Network (網路):
lb-network - Subnetwork (子網路):
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'
- Name (名稱):
-
指定下列範例值:
- Name (名稱):
l7-ilb-backend-service2-ig - Zone (可用區):
us-west1-a
- Name (名稱):
-
將「VM instances」(VM 執行個體) 指定為
l7-ilb-backend2-vm。 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
更新負載平衡器:建立後端服務,並在其中新增後端。
請為後端服務指定下列範例值:
- Name (名稱):
l7-ilb-backend-service2 - Protocol (通訊協定):
HTTP - 「健康檢查」 >「名稱」:
l7-ilb-basic-check - 「健康狀態檢查」 >「區域」:
us-west1
後端請指定下列範例值:
- 執行個體群組:
l7-ilb-backend-service2-ig - 平衡模式:
Utilization
- Name (名稱):
-
指定下列範例值:
- Name (名稱):
l7-ilb-map - 主辦方:
service-extensions.com - 路徑:
callouts - Protocol (通訊協定):
HTTP - 後端:
l7-ilb-backend-service2
- Name (名稱):
gcloud
建立 VM 執行個體。使用
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
將新的 VM 新增至執行個體群組。使用
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。這個伺服器的 Docker 容器位於 us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main,在 Service Extensions GitHub 存放區中。 Google Cloud這個存放區包含其他 Python 和 Go 伺服器範例,可執行標頭變動和主體變動等工作。ext_proc
如要建立及設定回呼後端服務,請按照下列步驟操作:
為執行 Python 擴充功能伺服器範例的叫用後端服務,建立虛擬機器 (VM) 執行個體。
控制台
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
指定下列範例值:
- Name (名稱):
callouts-vm - Zone (可用區):
us-west1-a - Network (網路):
lb-network - Subnetwork (子網路):
backend-subnet - 標記:
allow-ssh和load-balanced-backend - 容器映像檔:
us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main
- Name (名稱):
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
將 VM 新增至非代管執行個體群組。
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
指定下列範例值:
- Name (名稱):
callouts-ig - Zone (可用區):
us-west1-a
- Name (名稱):
-
在「Port mapping」(通訊埠對應) 中,指定下列通訊埠名稱和值:
http:80和grpc:443。 -
將「VM instances」(VM 執行個體) 指定為
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
將新的 VM 執行個體新增至非代管執行個體群組。使用
gcloud compute instance-groups unmanaged add-instances指令和下列範例值:gcloud compute instance-groups unmanaged add-instances callouts-ig \ --zone=us-west1-a \ --instances=callouts-vm
建立回呼後端服務,並新增後端。與其他後端伺服器一樣,呼叫伺服器可能需要防火牆規則,才能允許 Proxy 流量。
控制台
建立使用 HTTP/2 通訊協定且具有 HTTP 健康狀態檢查的插註後端服務。
前往 Google Cloud 控制台的 Cloud Load Balancing「後端」頁面。
使用下列範例值新增地區後端服務:
- Name (名稱):
l7-ilb-callout-service - Region (區域):
us-west1 - 負載平衡器類型:
Regional external Application Load Balancer (EXTERNAL_MANAGED) - Protocol (通訊協定):
HTTP2 - 「Port name」(通訊埠名稱):
grpc - 健康檢查 > 名稱:
callouts-hc - 「健康狀態檢查」 >「通訊埠編號」:
80 - Cloud Armor 後端安全性政策:
None
- Name (名稱):
將含有擴充伺服器的執行個體群組新增至後端服務,做為後端。執行個體群組會執行
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