將執行個體群組新增至負載平衡器

Google Cloud Platform (GCP) 負載平衡功能會使用代管與非代管執行個體群組來提供流量。視您使用的負載平衡器類型而定,您可以將執行個體群組新增至目標集區或後端服務。如要進一步瞭解負載平衡,請參閱選擇負載平衡器一文。

如要進一步瞭解執行個體群組,請參閱執行個體群組總覽一文。

事前準備

將代管執行個體群組新增至後端服務

建立 HTTP(S)、SSL Proxy、TCP Proxy 或內部負載平衡器時不能缺少後端服務。後端服務可包含多個後端。執行個體群組是一種後端類型。執行個體群組中的執行個體會回應負載平衡器的流量,因此後端服務知道它可以使用哪些執行個體、執行個體能夠處理的流量,以及目前處理中的流量為多少。此外,後端服務會監控健康狀態檢查,停止向健康狀態不良的執行個體傳送新連線。

請參閱新增執行個體群組至後端服務一文,瞭解如何將執行個體群組新增至後端服務。

新增代管執行個體群組至目標集區

目標集區是包含一或多個虛擬機器執行個體的物件。目標集區用於網路負載平衡,其中網路負載平衡器會將使用者的要求轉送至連結的目標集區。屬於該目標集區的執行個體會處理這些要求並傳回回應。您可以新增代管執行個體群組至目標集區,這樣一來,在執行個體群組新增或移除執行個體時,目標集區也會隨著相關變更自動更新。

目標集區必須先存在,您才能新增代管執行個體群組至目標集區。如需詳細資訊,請參閱新增目標集區的說明文件。

如要新增現有的代管執行個體群組至目標集區,請按照以下操作說明進行。這種做法會將屬於代管執行個體群組的所有 VM 執行個體全數新增至目標集區。

Console

  1. 前往 GCP Console 的「Target Pools」(目標集區) 頁面。

    前往「Target Pools」(目標集區) 頁面

  2. 按一下您要新增執行個體群組的目標集區。
  3. 按一下 [Edit] (編輯) 按鈕。
  4. 向下捲動至「VM instances」(VM 執行個體) 部分,然後按一下 [Select instance groups] (選取執行個體群組)。
  5. 從下拉式選單中選擇一個執行個體群組。
  6. 儲存變更。

gcloud

透過 gcloud 指令列工具使用 set-target-pools 指令:

gcloud compute instance-groups managed set-target-pools [INSTANCE_GROUP] \
        --target-pools [TARGET_POOL,..] [--zone ZONE]

其中:

  • [INSTANCE_GROUP] 是執行個體群組的名稱。
  • [TARGET_POOL] 是要新增此執行個體群組的一或多個目標集區的名稱。
  • [ZONE] 是執行個體群組的區域。

API

在 API 中,對下列 URI 提出 POST 要求:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

其中:

  • [PROJECT_ID] 是這項要求的專案 ID。
  • [ZONE] 是執行個體群組的區域。
  • [INSTANCE_GROUP] 是執行個體群組的名稱。

要求內容應包含要新增此群組的目標集區的 URI 清單。例如:

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

將具名通訊埠指派至代管執行個體群組

已命名的通訊埠為鍵/值組合,代表服務名稱及執行服務的通訊埠編號。負載平衡服務會使用具名通訊埠引導流量傳向個別執行個體上的特定通訊埠。舉例來說,如果您將具名通訊埠設定為 http:80,然後設定後端服務傳送流量到名為 http 的通訊埠,負載平衡器則會將流量轉送到執行個體群組中個別執行個體的 80 通訊埠。

具名通訊埠是方便負載平衡使用的中繼資料,無法控制 Compute Engine 中的網路或防火牆資源。

您可以為每個服務名稱指派數個通訊埠,也可以為每個通訊埠指派數個服務名稱。然而請記住,指定的後端服務一次只能轉送流量至一個具名通訊埠。

Console

  1. 前往 GCP Console 的「Instance Groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組) 頁面

  2. 按一下您要指定具名通訊埠之執行個體群組的名稱。按一下名稱會開啟包含執行個體群組屬性的頁面。
  3. 按一下 [Edit Group] (編輯群組),修改這個代管執行個體群組。
  4. 按一下 [Specify port name mapping] (指定通訊埠名稱對應),展開具名通訊埠的選項。
  5. 按一下 [Add item] (新增項目),然後輸入您要的通訊埠名稱,以及要與該名稱建立關聯的通訊埠編號。如需更多項目,只要按一下 [Add item] (新增項目) 即可新增其他項目。
  6. 按一下 [Save] (儲存) 即可儲存您所做的變更,並將具名通訊埠套用至代管執行個體群組的執行個體。

gcloud

使用 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

如需為每個服務名稱指派數個通訊埠,或是為每個服務指派數個名稱,請為每個名稱或通訊埠建立一個以上的項目。舉例來說,指派 name1 至通訊埠 102080,接著指派 name2name3 至通訊埠 80,最後將通訊埠 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

API

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]
  }
 ]
}

例如:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
 "fingerprint": "42WmSpB8rSM=",
 "namedPorts": [
  {
   "name": "name1",
   "port": 80
  },
  {
   "name": "name2",
   "port": 8080
  }
 ]
}

如要指派數個通訊埠至每個服務名稱,請為該服務名稱建立數個項目。例如,您可以將通訊埠 102080 指派至 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]

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件