本頁說明如何將現有的代管執行個體群組 (MIG) 新增至負載平衡器的後端服務或目標集區。
負載平衡器會分配使用者流量,有助於降低應用程式發生效能問題的風險。Cloud Load Balancing 會使用執行個體群組 (包括代管和非代管),提供流量。視您使用的負載平衡器類型而定,您可以將執行個體群組新增至目標集區或後端服務。
如要瞭解如何使用 MIG 後端建立特定類型的負載平衡器,請參閱 Cloud Load Balancing 說明文件。
事前準備
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
將代管執行個體群組新增至後端服務
建立大多數類型的負載平衡器時,都需要後端服務。
後端服務可包含多個後端。執行個體群組是一種後端類型。執行個體群組中的執行個體會回應來自負載平衡器的流量,因此後端服務知道它可以使用哪些執行個體、執行個體能夠處理的流量,以及目前處理中的流量為多少。此外,後端服務會監控健康狀態檢查,且不會向健康狀態不良的執行個體傳送新連線。
請按照這些操作說明,將代管執行個體群組新增至後端服務。
主控台
- 前往 Google Cloud 控制台的「Load balancing」(負載平衡) 頁面。
- 按一下要新增代管執行個體群組的後端服務名稱。
- 按一下 [編輯]。
- 按一下 [Add backend] (新增後端)。
- 選取要新增的執行個體群組。
- 視需要編輯選用設定。
- 儲存變更。
gcloud
使用
add-backend
指令:gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=INSTANCE_GROUP \ [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \ --balancing-mode=BALANCING_MODE
負載平衡模式支援情況會因負載平衡器類型而異。如需完整清單,請參閱各負載平衡器適用的平衡模式。
視受管理執行個體群組的平衡模式而定,可能還需要其他參數。詳情請參閱 SDK 中的
add-backend
指令。REST
如要使用 REST API 新增後端服務,請參閱 backendServices。
限制
負載平衡 搭配地區性 MIG 時,不支援
RATE
和UTILIZATION
平衡模式的max-rate
目標容量。如要進一步瞭解各負載平衡器的使用指南,請參閱「平衡模式和目標容量設定」。將代管執行個體群組新增至目標集區
目標集區是包含一或多個虛擬機器執行個體的物件。目標集區用於外部直通式網路負載平衡器,其中負載平衡器會將使用者的要求轉送至連結的目標集區。屬於該目標集區的執行個體會處理這些要求並傳回回應。您可以新增代管執行個體群組至目標集區,這樣一來,在執行個體群組新增或移除執行個體時,目標集區也會隨著相關變更自動更新。
目標集區必須先存在,您才能新增代管執行個體群組至目標集區。如需詳細資訊,請參閱新增目標集區的說明文件。
如要新增現有的代管執行個體群組至目標集區,請按照以下操作說明進行。這種做法會將屬於代管執行個體群組的所有 VM 執行個體全數新增至目標集區。
主控台
- 前往 Google Cloud 控制台的「目標集區」頁面。
- 按一下您要新增執行個體群組的目標集區。
- 按一下 [Edit] (編輯) 按鈕。
- 向下捲動至「VM instances」(VM 執行個體) 部分,然後按一下 [Select instance groups] (選取執行個體群組)。
- 從下拉式選單中選擇一個執行個體群組。
- 儲存變更。
gcloud
gcloud compute instance-groups managed set-target-pools INSTANCE_GROUP \ --target-pools TARGET_POOL,..
其中:
INSTANCE_GROUP
是執行個體群組的名稱。TARGET_POOL,..
是要新增此執行個體群組的一或多個目標集區名稱。
REST
呼叫區域 MIG 或可用區 MIG 的
setTargetPools
方法。 例如:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/regionInstanceGroupManagers/INSTANCE_GROUP/setTargetPools
其中:
PROJECT_ID
是這項要求的專案 ID。REGION
是執行個體群組的所在地區。INSTANCE_GROUP
是執行個體群組的名稱。
要求主體應包含要新增此群組之目標集區的 URI 清單。例如:
{ "targetPools": [ "regions/us-central1/targetPools/example-targetpool-1", "regions/us-central1/targetPools/example-targetpool-2" ] }
將具名通訊埠指派至代管執行個體群組
已命名的通訊埠為鍵/值組合,代表通訊埠的名稱和編號。連接埠名稱代表服務或應用程式的名稱。通訊埠編號代表服務或應用程式執行的通訊埠。
Cloud Load Balancing 會使用已命名通訊埠。做為 Proxy 的負載平衡器會在後端服務設定中訂閱單一具名連接埠。系統會根據各執行個體群組後端的已命名通訊埠對應,將通訊埠名稱轉換為通訊埠編號。
舉例來說,後端服務可以訂閱名為
http-port
的通訊埠。後端執行個體群組可以有名為http-port:80
的通訊埠。後端執行個體群組會指示負載平衡器使用通訊協定 (例如 TCP),將流量傳送至群組中通訊埠 80 的 VM。通訊協定是在負載平衡器的後端服務中定義。已命名通訊埠是Proxy 負載平衡器使用的簡單中繼資料,無法控制 Compute Engine 中的網路或防火牆資源。
已命名通訊埠的多個通訊埠編號
您可以為每個服務名稱指派數個通訊埠。您也可以為每個通訊埠指派數個服務名稱。
請注意下列幾點:
- 系統會在所有通訊埠名稱相同的通訊埠之間平衡流量。
- 一個後端服務一次只能轉送流量至一個已命名通訊埠。
如果您為已命名的通訊埠使用多個通訊埠號碼,這些通訊埠都必須用於同一個應用程式。
舉例來說,
http:80,http:8080
可行,但http:80,http:443
不可行,因為通訊埠 80 一般不支援 TLS。
您可以在執行個體群組中指派多個已命名通訊埠。舉例來說,假設後端服務訂閱了名為
http-port
的通訊埠,且有兩個後端執行個體群組:instance-group-a
,並具備名為http-port:80
的通訊埠instance-group-b
,並具備名為http-port:79
的通訊埠
這項後端服務會將流量傳送至
instance-group-a
中 VM 的通訊埠 80,以及instance-group-b
中 VM 的通訊埠 79。如果您將同一個執行個體群組新增至多個後端服務 (適用於多個負載平衡器),且執行個體群組在每個負載平衡器上提供不同的通訊埠,請勿將所有通訊埠號碼新增至單一已命名的通訊埠。請改為建立專屬的已命名通訊埠,並將其對應至每個後端服務應服務的一組通訊埠。
舉例來說,假設您有三個應用程式,每個應用程式都有自己的負載平衡器。每個應用程式都有專屬的通訊埠編號:
app1
為 81、app2
為 82,app3
則為 83。假設這三項後端服務都使用通用執行個體群組,請將此執行個體群組的已命名通訊埠指派為[app1:81, app2:82, app3:83]
。已命名的通訊埠和健康狀態檢查
如要讓後端服務上具有多個通訊埠編號的具名通訊埠,在外部應用程式負載平衡器或內部應用程式負載平衡器中運作,健康狀態檢查必須具有
--use-serving-port
標記,而非特定通訊埠編號。 Google Cloud 控制台不提供這個選項。如要設定--use-serving-port
,請使用 Google Cloud CLI 或 API。舉例來說,假設您有一個應用程式,可透過單一執行個體群組,在同一個後端服務上,對三個不同通訊埠 (81、82、83) 的流量進行負載平衡。您可以將這個執行個體群組的通訊埠指派為
[app:81, 82, 83]
。在這種情況下,健康狀態檢查必須有--use-serving-port
標記。詳情請參閱負載平衡健康狀態檢查說明文件。
具名通訊埠和防火牆規則
具名通訊埠不會建立或修改 Google Cloud 防火牆規則。如要允許流量進入後端 VM,您仍須建立必要的防火牆規則。
已命名的通訊埠和後端服務
除了執行個體群組設定外,您也必須設定後端服務。舉例來說,假設您在執行個體群組中設定的具名通訊埠名稱為
my-service-name
,通訊埠為8888
:gcloud compute instance-groups set-named-ports my-unmanaged-ig \ --named-ports=my-service-name:8888
然後,您必須在後端服務設定中參照具名連接埠,並將後端服務上的
--port-name
設為my-service-name
:gcloud compute backend-services update my-backend-service \ --port-name=my-service-name
建立具名通訊埠
主控台
- 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
- 按一下您要指定具名通訊埠之執行個體群組的名稱。按一下名稱會開啟包含執行個體群組屬性的頁面。
- 按一下「編輯」,修改這個代管執行個體群組。
- 在「Port mapping」(通訊埠對應) 專區中,按一下「Add port」(新增通訊埠),然後輸入所需的通訊埠名稱,以及要與該名稱建立關聯的通訊埠編號。如需更多項目,請再次按一下「新增連接埠」。
- 按一下 [Save] (儲存) 即可儲存您所做的變更,並將具名通訊埠套用至代管執行個體群組的執行個體。
gcloud
如果是代管執行個體群組,請使用
instance-groups managed set-named-ports
指令設定一或多個具名通訊埠。如果是非代管群組,請使用instance-groups set-named-ports
指令。gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports PORT_NAME:PORT,PORT_NAME:PORT
例如:
gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports name1:80,name2:8080
如需為每個服務名稱指派數個通訊埠,或是為每個服務指派數個名稱,請為每個名稱或通訊埠建立一個以上的項目。舉例來說,如果通訊埠
10
、20
和80
適用於同一個應用程式,您可以將name1
指派給所有這些通訊埠。此外,您也可以將兩個名稱name2
和name3
指派給通訊埠8080
。最後,您可以將通訊埠9000
指派到name4
,如以下範例所示:gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports name1:10,name1:20,name1:80,\ name2:8080,name3:8080,\ name4:9000
使用
get-named-ports
指令,檢查代管執行個體群組的具名通訊埠指派作業:gcloud compute instance-groups managed get-named-ports INSTANCE_GROUP
NAME PORT name1 10 name1 20 name1 80 name2 8080 name3 8080 name4 9000
REST
instanceGroupManagers
API 不提供setNamedPorts
API 方法,而是改用instanceGroups
API 來執行此工作。建構
instanceGroups
API 的要求,並加入執行個體群組的名稱。透過取得特定群組的相關資訊,取得執行個體群組目前的fingerprint
值。在要求主體中加入fingerprint
和一或多個namedPorts
值組合:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroups/INSTANCE_GROUP/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "PORT_NAME", "port": PORT_NUMBER }, { "name": "PORT_NAME", "port": PORT_NUMBER } ] }
舉例來說,如果通訊埠
10
、20
和80
適用於同一個應用程式,您可以將name1
指派至所有這些通訊埠。此外,您也可以將兩個名稱 (name2
和name3
) 指派至通訊埠8080
,最後,您可以將通訊埠9000
指派到name4
,如下列範例所示:POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "name1", "port": 8080 }, { "name": "name2", "port": 9000 } ] }
如要指派數個通訊埠至每個服務名稱,請為該服務名稱建立數個項目。例如,您可以將通訊埠
10
、20
和80
指派至name1
,同時將通訊埠8080
指派至name2
。POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "name1", "port": 10 }, { "name": "name1", "port": 20 } { "name": "name1", "port": 80 } { "name": "name2", "port": 8080 } { "name": "name3", "port": 80 } { "name": "name4", "port": 8080 } ] }
如要列出指派給代管執行個體群組的具名通訊埠,請建構指向該群組的
GET
要求:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP
後續步驟
- 請嘗試針對高可用性應用程式使用負載平衡教學課程。
- 建立執行個體範本以用於代管執行個體群組。
- 建立地區代管執行個體群組。
- 為您的代管執行個體群組啟用自動修復。
- 為您的代管執行個體群組啟用自動調度資源。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-31 (世界標準時間)。
-