後端服務總覽

後端服務可定義 Cloud Load Balancing 分配流量的方式。後端服務設定包含一組值,例如用於連線至後端的通訊協定、各種分配和工作階段設定、健康狀態檢查和逾時。這些設定可精細控管負載平衡器的行為。為方便您開始使用,大部分設定都有預設值,可快速完成設定。後端服務的範圍 區域。

負載平衡器、Envoy Proxy 和無 Proxy gRPC 用戶端會使用後端服務資源中的設定資訊,執行下列操作:

  • 將流量導向正確的「後端」,也就是執行個體群組或網路端點群組 (NEG)。
  • 根據「平衡模式」分配流量,這是各後端的設定。
  • 判斷哪個健康狀態檢查正在監控後端的健康狀態。
  • 指定工作階段相依性

建立後端服務或將後端新增至後端服務時,您可以設定這些值。

下表大致列出使用後端服務的負載平衡器。您使用的產品也會決定後端服務的數量上限、後端服務的範圍、支援的後端類型,以及後端服務的負載平衡機制。負載平衡架構是 Google 用來分類轉送規則和後端服務的 ID。每個負載平衡產品都會為轉送規則和後端服務使用一個負載平衡架構。部分架構會在產品間共用。

表格:後端服務和支援的後端類型
產品 後端服務數量上限 後端服務範圍 支援的後端類型 負載平衡架構
區域性外部應用程式負載平衡器 多個 區域 每個後端服務都支援下列其中一種後端組合:
  • 所有執行個體群組後端:一或多個代管、非代管,或代管和非代管執行個體群組後端的組合 *
  • 所有區域性 NEG:一或多個 GCE_VM_IP_PORT 類型區域性 NEG *
  • 所有混合式連線 NEG:一或多個 NON_GCP_PRIVATE_IP_PORT 類型 NEG
  • 可用區和混合式 NEG 的組合:GCE_VM_IP_PORTNON_GCP_PRIVATE_IP_PORT 類型的 NEG
  • 單一 Private Service Connect NEG
  • 外部後端的所有區域網際網路 NEG
EXTERNAL_MANAGED
區域性內部應用程式負載平衡器 多個 區域 每個後端服務都支援下列其中一種後端組合:
  • 所有執行個體群組後端:一或多個代管、非代管,或代管和非代管執行個體群組後端的組合 *
  • 所有區域性 NEG:一或多個 GCE_VM_IP_PORT 類型區域性 NEG *
  • 所有混合式連線 NEG:一或多個 NON_GCP_PRIVATE_IP_PORT 類型 NEG
  • 可用區和混合式 NEG 的組合:GCE_VM_IP_PORTNON_GCP_PRIVATE_IP_PORT 類型的 NEG
  • 單一 Private Service Connect NEG
  • 外部後端的所有區域網際網路 NEG
INTERNAL_MANAGED
區域性外部 Proxy 網路負載平衡器 1 區域 後端服務支援下列其中一種後端組合:
  • 所有執行個體群組後端:一或多個代管、非代管,或代管和非代管執行個體群組後端的組合 *
  • 所有區域性 NEG:一或多個 GCE_VM_IP_PORT 類型區域性 NEG *
  • 所有混合式連線 NEG:一或多個 NON_GCP_PRIVATE_IP_PORT 類型 NEG
  • 可用區和混合式 NEG 的組合:GCE_VM_IP_PORTNON_GCP_PRIVATE_IP_PORT 類型的 NEG
  • 外部後端的所有區域網際網路 NEG
  • 單一 Private Service Connect NEG
EXTERNAL_MANAGED
區域性內部 Proxy 網路負載平衡器 1 區域 後端服務支援下列其中一種後端組合:
  • 所有執行個體群組後端:一或多個代管、非代管,或代管和非代管執行個體群組後端的組合 *
  • 所有區域性 NEG:一或多個 GCE_VM_IP_PORT 類型區域性 NEG *
  • 所有混合式連線 NEG:一或多個 NON_GCP_PRIVATE_IP_PORT 類型 NEG
  • 可用區和混合式 NEG 的組合:GCE_VM_IP_PORTNON_GCP_PRIVATE_IP_PORT 類型的 NEG
  • 外部後端的所有區域網際網路 NEG
  • 單一 Private Service Connect NEG
INTERNAL_MANAGED
外部直通式網路負載平衡器 1 區域 後端服務支援下列其中一種後端組合:
  • 所有執行個體群組後端:一或多個代管、非代管,或代管和非代管執行個體群組後端的組合
  • 所有區域性 NEG:一或多個 GCE_VM_IP 類型的區域性 NEG
EXTERNAL
內部直通式網路負載平衡器 1 區域性 後端服務支援下列其中一種後端組合:
  • 所有執行個體群組後端:一或多個代管、非代管,或代管和非代管執行個體群組後端的組合
  • 所有區域性 NEG:一或多個 GCE_VM_IP 類型的區域性 NEG
  • 一個通訊埠對應 NEG
INTERNAL

負載平衡器命名

如果是 Proxy 網路負載平衡器和直通式網路負載平衡器,負載平衡器的名稱一律與後端服務的名稱相同。各 Trusted Cloud 介面的行為如下:

  • Trusted Cloud console. 如果您使用 Trusted Cloud 主控台建立 Proxy 網路負載平衡器或直通式網路負載平衡器,系統會自動將您為負載平衡器名稱輸入的名稱,指派給後端服務。
  • Google Cloud CLI 或 API。如果您使用 gcloud CLI 或 API 建立 Proxy 網路負載平衡器或直通式網路負載平衡器,請在建立後端服務時輸入您選擇的名稱。這個後端服務名稱隨後會反映在 Trusted Cloud 控制台中,做為負載平衡器的名稱。

如要瞭解應用程式負載平衡器的命名方式,請參閱網址對應總覽:負載平衡器命名

後端

後端是一或多個端點,會接收來自 Trusted Cloud by S3NS負載平衡器 或無 Proxy 的 gRPC 用戶端流量。後端類型如下:

您無法刪除與後端服務相關聯的後端執行個體群組或 NEG。刪除執行個體群組或 NEG 之前,請先從參照該群組或 NEG 的所有後端服務中,移除該群組或 NEG 做為後端。

執行個體群組

本節說明執行個體群組如何與後端服務搭配運作。

後端 VM 和外部 IP 位址

後端服務中的後端 VM 不需要外部 IP 位址:

  • 區域外部應用程式負載平衡器:用戶端會與代管負載平衡器外部 IP 位址的 Envoy Proxy 通訊。Envoy Proxy 會將封包傳送至建立的內部位址,與後端 VM 或端點通訊。這個內部位址是透過後端虛擬私有雲網路的 ID 和後端的內部 IPv4 位址聯結而成。

    • 如果是執行個體群組後端,內部 IPv4 位址一律是與 VM 的 nic0 介面相應的主要內部 IPv4 位址,且 nic0 必須與負載平衡器位於相同網路。
    • 如果是區域 NEG 中的 GCE_VM_IP_PORT 端點,您可以將端點的 IP 位址指定為與 VM 任何網路介面相關聯的主要 IPv4 位址,或是與 VM 任何網路介面相關聯的別名 IP 位址範圍中的任何 IPv4 位址,前提是網路介面與負載平衡器位於相同網路。
  • 外部直通式網路負載平衡器:用戶端會透過 Google 的 Maglev 直通式負載平衡基礎架構,直接與後端通訊。封包會保留原始來源和目的地 IP 位址,並路由及傳送至後端。後端會使用直接伺服器回傳回應用戶端。選取後端和追蹤連線的方法是可設定的。

    • 如果是執行個體群組後端,封包一律會傳送至 VM 的 nic0 介面。
    • 如果是區域 NEG 中的 GCE_VM_IP 端點,封包會遞送到與 NEG 相關聯的子網路中,VM 的網路介面。

已命名的通訊埠

後端服務的具名通訊埠屬性僅適用於使用執行個體群組後端的 Proxy 型負載平衡器 (應用程式負載平衡器和 Proxy 網路負載平衡器)。已命名的通訊埠會定義 Proxy (GFE 或 Envoy) 與後端執行個體之間的 TCP 連線所用的目的地通訊埠。

已命名的通訊埠設定如下:

  • 在每個執行個體群組後端,您必須使用鍵/值組合設定一或多個已命名的通訊埠。鍵代表您選擇的有意義通訊埠名稱,值則代表您指派給該名稱的通訊埠編號。名稱與號碼的對應關係會分別為每個執行個體群組後端建立。

  • 在後端服務中,您只需使用通訊埠名稱 (--port-name),即可指定單一已命名通訊埠。

後端服務會根據每個執行個體群組後端,將通訊埠名稱轉換為通訊埠編號。當執行個體群組的已命名通訊埠與後端服務的 --port-name 相符時,後端服務會使用這個通訊埠號碼與執行個體群組的 VM 通訊。

舉例來說,您可以在執行個體群組中設定名為 my-service-name 的已命名通訊埠,並將通訊埠設為 8888

gcloud compute instance-groups unmanaged 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

如果每個執行個體群組為同一個通訊埠名稱指定不同的通訊埠編號,後端服務與不同執行個體群組中的 VM 通訊時,可以使用不同的通訊埠編號。

Proxy 負載平衡器後端服務使用的已解析通訊埠號碼,不需與負載平衡器轉送規則使用的通訊埠號碼相符。Proxy 負載平衡器會偵聽傳送至轉送規則 IP 位址和目的地通訊埠的 TCP 連線。由於 Proxy 會開啟第二個 TCP 連線至後端,因此第二個 TCP 連線的目的地通訊埠可能不同。

已命名通訊埠僅適用於執行個體群組後端。具有 GCE_VM_IP_PORT 端點的區域 NEG、具有 NON_GCP_PRIVATE_IP_PORT 端點的混合 NEG,以及網際網路 NEG 會使用不同的機制定義通訊埠,也就是端點本身。

內部直通式網路負載平衡器和外部直通式網路負載平衡器不會使用具名連接埠。這是因為這些負載平衡器屬於直通式負載平衡器,會直接將連線路徑導向後端,而不是建立新連線。封包會傳遞至後端,並保留負載平衡器轉送規則的目的地 IP 位址和通訊埠。

如要瞭解如何建立具名連接埠,請參閱下列操作說明:

執行個體群組的限制和指引

為負載平衡器建立執行個體群組時,請留意以下限制和指引:

  • 請勿將 VM 放在多個負載平衡執行個體群組中。如果 VM 屬於兩個以上的非代管執行個體群組,或屬於一個代管執行個體群組和一或多個非代管執行個體群組, Trusted Cloud您一次只能使用其中一個執行個體群組,做為特定後端服務的後端。

    如要讓 VM 參與多個負載平衡器,您必須在每個後端服務上使用同一個執行個體群組做為後端。

  • 如果是 Proxy 負載平衡器,如要將流量分配到不同通訊埠,請在一個執行個體群組中指定所需的具名通訊埠,並讓每個後端服務訂閱不重複的具名通訊埠。

  • 您可以將同一個執行個體群組設為多個後端服務的後端。在這種情況下,後端必須使用相容的平衡模式。相容表示平衡模式必須相同,或是相容平衡模式的組合,例如 CONNECTIONRATE

    不相容的平衡模式組合如下:

    • CONNECTIONUTILIZATION
    • RATEUTILIZATION
    • CUSTOM_METRICSUTILIZATION
    • CUSTOM_METRICSRATE
    • CUSTOM_METRICSCONNECTION

    請見如下範例:

    • 您有兩個後端服務:external-https-backend-service 適用於外部應用程式負載平衡器,internal-tcp-backend-service 適用於內部直通式網路負載平衡器。
    • 您在 internal-tcp-backend-service 中使用名為 instance-group-a 的執行個體群組。
    • internal-tcp-backend-service 中,您必須套用 CONNECTION 平衡模式,因為內部直通式網路負載平衡器只支援 CONNECTION 平衡模式。
    • 如果您在 external-https-backend-service 中套用 RATE 平衡模式,也可以在 external-https-backend-service 中使用 instance-group-a
    • 您也無法external-https-backend-service中使用 instance-group-a,因為 UTILIZATION 平衡模式不支援這項功能。
  • 如要變更執行個體群組的平衡模式,該執行個體群組會做為多個後端服務的後端:

    • 從所有後端服務 (其中一項除外) 移除執行個體群組。
    • 在剩餘的後端服務中,變更後端的平衡模式。
    • 如果其餘後端服務支援新的負載平衡模式,請將執行個體群組重新新增為後端。
  • 如果執行個體群組與多個後端服務相關聯,每個後端服務可以參照執行個體群組上相同的已命名通訊埠,也可以參照不同的已命名通訊埠。

  • 建議不要將自動調度資源的代管執行個體群組新增至多個後端服務。這麼做可能會導致群組中的執行個體出現無法預測且不必要的調度資源作業,尤其是使用 HTTP 負載平衡使用率自動調度資源指標時。

    • 雖然不建議這麼做,但如果自動調度資源指標是「CPU 使用率」或與負載平衡器服務容量無關的「Cloud Monitoring 指標」,這個情境或許可行。使用其中一項自動調度資源指標,或許能避免調度資源不穩定的情況。

區域性網路端點群組

「網路端點」會透過 IP 位址或 IP 位址和通訊埠的組合來代表服務,而非參照執行個體群組中的 VM。網路端點群組 (NEG) 是網路端點的邏輯分組。

區域網路端點群組 (NEG) 為區域資源,代表單一子網路中 Trusted Cloud 資源的 IP 位址或 IP 位址與通訊埠組合集合。

使用區域 NEG 做為後端的後端服務,會在 VM「內」執行的應用程式或容器之間分配流量。

區域 NEG 有兩種網路端點類型:

  • GCE_VM_IP 端點 (僅支援內部直通式網路負載平衡器,以及以後端服務為基礎的外部直通式網路負載平衡器)。
  • GCE_VM_IP_PORT 端點。

如要瞭解哪些產品支援區域 NEG 後端,請參閱「表格:後端服務和支援的後端類型」。

詳情請參閱區域 NEG 總覽

網際網路網路端點群組

網際網路 NEG 是定義外部後端的資源。外部後端是指託管於內部部署基礎架構,或第三方提供的基礎架構中的後端。

網際網路 NEG 是主機名稱或 IP 位址,加上選用通訊埠的組合。網際網路 NEG 提供兩種網路端點:INTERNET_FQDN_PORTINTERNET_IP_PORT

網際網路 NEG 適用於區域範圍。如要查看哪些產品支援網際網路 NEG 後端,請參閱「表格:後端服務和支援的後端類型」。

詳情請參閱網際網路網路端點群組總覽

混合後端

將不同類型的後端新增至單一後端服務時,請注意下列使用考量事項:

  • 單一後端服務無法同時使用執行個體群組和區域 NEG。
  • 您可以在同一個後端服務上使用不同類型的執行個體群組。舉例來說,單一後端服務可以同時參照代管和非代管執行個體群組。如要瞭解哪些後端與哪些後端服務相容,請參閱上一節的表格。
  • 使用特定 Proxy 負載平衡器時,您可以結合區域 NEG (含 GCE_VM_IP_PORT 端點) 和混合式連線 NEG (含 NON_GCP_PRIVATE_IP_PORT 端點),設定混合式負載平衡。如要瞭解哪些負載平衡器具備這項功能,請參閱「表格:後端服務和支援的後端類型」。

後端的通訊協定

建立後端服務時,必須指定用於與後端通訊的通訊協定。每個後端服務只能指定一個通訊協定,無法指定次要通訊協定做為備用通訊協定。

有效通訊協定取決於負載平衡器類型。

表格:後端的通訊協定
產品 後端服務通訊協定選項
應用程式負載平衡器 HTTP、HTTPS、HTTP/2
Proxy 網路負載平衡器

TCP 或 SSL

區域性 Proxy 網路負載平衡器僅支援 TCP。

直通式網路負載平衡器 TCP、UDP 或 UNSPECIFIED

變更後端服務的通訊協定後,後端會暫時無法透過負載平衡器存取。

負載平衡器與後端之間的加密

如要瞭解負載平衡器與後端之間的加密,請參閱後端加密

流量分配

後端服務資源中的以下欄位值可決定後端行為的某些方面:

  • 平衡模式可定義負載平衡器如何評估後端是否準備好處理新要求或連線。
  • 目標容量會定義目標連線數上限、目標速率上限或目標 CPU 使用率上限。
  • 容量配置器可調整整體可用容量,但不會修改目標容量。

平衡模式

平衡模式會決定負載平衡器 的後端是否能處理額外流量,或是已完全負載。

Trusted Cloud 有四種平衡模式:

  • CONNECTION:根據後端可處理的連線總數,決定如何分散負載。
  • RATE:每秒要求 (查詢) 數上限目標 (RPS、QPS)。如果所有後端都達到或超過容量上限,目標每秒要求數/每秒查詢次數上限可能會超出。
  • UTILIZATION:根據執行個體群組中執行個體的使用率,決定如何分散負載。
  • CUSTOM_METRICS:根據使用者定義的自訂指標,決定如何分散負載。

每個負載平衡器可用的平衡模式

將後端新增至後端服務時,您會設定平衡模式。負載平衡器可用的平衡模式取決於負載平衡器類型和後端類型。

直通式網路負載平衡器需要 CONNECTION 平衡模式,但不支援設定任何目標容量

應用程式負載平衡器支援執行個體群組後端的 RATEUTILIZATIONCUSTOM_METRICS 平衡模式,以及區域 NEG (GCE_VM_IP_PORT 端點) 和混合式 NEG (NON_GCP_PRIVATE_IP_PORT 端點) 的 RATECUSTOM_METRICS 平衡模式。如為其他支援的後端類型,則必須省略平衡模式。

  • 如果是 ,系統會使用負載平衡模式的目標容量,計算應傳送至區域中各個後端 (執行個體群組或 NEG) 的要求比例。在每個執行個體群組或 NEG 中,負載平衡政策 (LocalityLbPolicy) 會決定流量在群組內執行個體或端點之間的分配方式。

Proxy 網路負載平衡器支援 CONNECTIONUTILIZATION 平衡模式 (適用於 VM 執行個體群組後端)、CONNECTION 平衡模式 (適用於具有 GCE_VM_IP_PORT 端點的區域 NEG),以及 CONNECTION 平衡模式 (適用於混合式 NEG,即 NON_GCP_PRIVATE_IP_PORT 端點)。如果是其他支援的後端類型,則必須省略平衡模式。

  • 如果是區域性外部 Proxy 網路負載平衡器和區域性內部 Proxy 網路負載平衡器,系統會使用負載平衡模式的目標容量,計算應將多少要求傳送至每個後端 (執行個體群組或 NEG) 的比例。在每個執行個體群組或 NEG 中,負載平衡政策 (localityLbPolicy) 會決定如何將流量分配給群組內的執行個體或端點。

下表摘要列出每個負載平衡器和後端組合可用的負載平衡模式。

表格:各負載平衡器適用的平衡模式
負載平衡器 後端 可用的平衡模式
應用程式負載平衡器 執行個體群組 RATEUTILIZATIONCUSTOM_METRICS
區域性 NEG (GCE_VM_IP_PORT 個端點) RATECUSTOM_METRICS
混合式 NEG (NON_GCP_PRIVATE_IP_PORT 端點) RATECUSTOM_METRICS

Proxy 網路負載平衡器

  • 區域性外部 Proxy 網路負載平衡器
  • 區域性內部 Proxy 網路負載平衡器
執行個體群組 CONNECTIONUTILIZATION
區域性 NEG (GCE_VM_IP_PORT 個端點) CONNECTION

混合式 NEG (NON_GCP_PRIVATE_IP_PORT 端點)

CONNECTION
直通式網路負載平衡器 執行個體群組 CONNECTION
區域性 NEG (GCE_VM_IP 個端點) CONNECTION

如果與後端服務相關聯的所有 VM 平均使用率低於 10%, Trusted Cloud 可能會優先選擇特定區域。當您使用地區代管執行個體群組、不同區域中的區域代管執行個體群組,以及區域非代管執行個體群組時,就可能發生這種情況。當系統將更多流量傳送至負載平衡器時,這種區域不平衡的情形將會自動解決。

詳情請參閱 gcloud compute backend-services add-backend

目標容量

每種平衡模式都有對應的目標容量,可定義下列其中一個目標上限:

  • 連線數量
  • 費率
  • CPU 使用率

在任何平衡模式下,目標容量都不是斷路器。在特定情況下,負載平衡器可能會超過上限,例如所有後端 VM 或端點都已達到上限。

連線平衡模式

如果是 CONNECTION 平衡模式,目標容量會定義公開連線的目標上限。除了內部直通式網路負載平衡器和外部直通式網路負載平衡器,您必須使用下列其中一項設定,指定目標連線數上限:

  • max-connections-per-instance (每個 VM):單一 VM 的目標平均連線數。
  • max-connections-per-endpoint (每個區域 NEG 中的端點):單一端點的目標平均連線數。
  • max-connections (適用於區域 NEG 和區域執行個體群組):整個 NEG 或執行個體群組的目標平均連線數。如果是地區代管執行個體群組,請改用 max-connections-per-instance

下表說明目標容量參數如何定義下列項目:

  • 整個後端的目標容量
  • 每個執行個體或端點的預期目標容量
表格:使用 CONNECTION 平衡模式的後端目標容量
後端類型 目標容量
如果指定 整個後端容量 每個執行個體或端點的預期容量
執行個體群組
N 執行個體、
H 正常
max-connections-per-instance=X X × N (X × N)/H
區域性 NEG
N 端點、
H 正常
max-connections-per-endpoint=X X × N (X × N)/H
執行個體群組
(地區代管執行個體群組除外)

H 狀況良好的執行個體
max-connections=Y Y Y/H

如圖所示,max-connections-per-instancemax-connections-per-endpoint 設定是計算整個 VM 執行個體群組或整個區域 NEG 目標連線數上限的代理:

  • 在具有 N 個執行個體的 VM 執行個體群組中,設定 max-connections-per-instance=X 與設定 max-connections=X × N 的意義相同。
  • 在具有 N 端點的區域 NEG 中,設定 max-connections-per-endpoint=X 與設定 max-connections=X × N 的意義相同。

速率平衡模式

如要使用 RATE 平衡模式,您必須使用下列其中一個參數定義目標容量:

  • max-rate-per-instance (每個 VM):提供單一 VM 的目標平均 HTTP 要求率。
  • max-rate-per-endpoint (每個區域 NEG 中的端點):提供單一端點的目標平均 HTTP 要求率。
  • max-rate (適用於區域性 NEG 和區域性執行個體群組):為整個 NEG 或執行個體群組提供目標平均 HTTP 要求率。如果是區域代管執行個體群組,請改用 max-rate-per-instance

下表說明目標容量參數如何定義下列項目:

  • 整個後端的目標容量
  • 每個執行個體或端點的預期目標容量
表格:使用 RATE 平衡模式的後端目標容量
後端類型 目標容量
如果指定 整個後端容量 每個執行個體或端點的預期容量
執行個體群組
N 執行個體、
H 正常
max-rate-per-instance=X X × N (X × N)/H
區域性 NEG
N 端點、
H 正常
max-rate-per-endpoint=X X × N (X × N)/H
執行個體群組
(地區代管執行個體群組除外)

H 狀況良好的執行個體
max-rate=Y Y Y/H

如圖所示,max-rate-per-instancemax-rate-per-endpoint 設定是計算整個執行個體群組或整個區域 NEG 的目標 HTTP 要求最高速率的 Proxy:

  • 在具有 N 個執行個體的執行個體群組中,設定 max-rate-per-instance=X 與設定 max-rate=X × N 的意義相同。
  • 在具有 N 個端點的可用區 NEG 中,設定 max-rate-per-endpoint=X 與設定 max-rate=X × N 的意義相同。

使用率平衡模式

UTILIZATION平衡模式沒有強制目標容量。您有多個選項,視後端類型而定,詳情請參閱下一節的表格摘要說明。

max-utilization 目標容量只能針對每個執行個體群組指定,無法套用至群組中的特定 VM。

UTILIZATION平衡模式沒有強制目標容量。使用 Trusted Cloud 控制台將後端執行個體群組新增至後端服務時,如果選取 UTILIZATION 平衡模式,Trusted Cloud 控制台會將 max-utilization 的值設為 0.8 (80%)。除了 max-utilizationUTILIZATION 平衡模式也支援更複雜的目標容量,詳情請參閱下一節的表格。

自訂指標平衡模式

CUSTOM_METRICS 平衡模式可讓您定義自己的自訂指標,用於判斷負載分配方式。自訂指標可讓您根據應用程式或基礎架構需求專屬的指標,而非Trusted Cloud的標準使用率或速率指標,設定負載平衡器的流量分配行為。

詳情請參閱應用程式負載平衡器的自訂指標

變更負載平衡器的平衡模式

如果負載平衡器或負載平衡器設定只能使用一種平衡模式,您就無法變更平衡模式。對於其他後端服務,您可以視使用的後端變更平衡模式,因為這些後端服務可使用多種模式。

如要查看各負載平衡器支援的平衡模式,請參閱「表格:各負載平衡器適用的平衡模式」。

平衡模式和目標容量設定

對於支援目標容量規格的產品,目標容量不是斷路器。如果特定可用區達到設定的目標容量上限,系統會將新的要求或連線分配至其他未以目標容量處理要求或連線的可用區。如果所有區域都已達到目標容量,系統會透過過度填滿的方式分配新的要求或連線。

應用程式負載平衡器和 Cloud Service Mesh

下表列出應用程式負載平衡器和 Cloud Service Mesh 適用的負載平衡模式和目標容量組合。

表格:應用程式負載平衡器和 Cloud Service Mesh 的平衡模式和目標容量組合
後端類型 平衡模式 目標容量規格
執行個體群組
  • 區域非代管
  • 區域代管
  • 區域代管
RATE 必須指定下列其中一項:
  • max-rate
     (僅區域執行個體群組支援)
  • max-rate-per-instance
     (所有執行個體群組皆支援)
UTILIZATION 您可以視需要指定下列其中一項:
  • (1) max-utilization
  • (2) max-rate
     (僅適用於區域執行個體群組)
  • (3) max-rate-per-instance
     (所有執行個體群組皆支援)
  • (1) 和 (2) 兩者
  • (1) 和 (3)
CUSTOM_METRICS 您可以視需要指定下列其中一項:
  • (1) 指標的 max-utilization (即指標的 backends[].customMetrics[].maxUtilization 欄位)
  • (2) max-rate
     (僅適用於區域執行個體群組)
  • (3) max-rate-per-instance
     (所有執行個體群組皆支援)
  • (1) 和 (2) 一起
  • (1) 和 (3)
系統不支援每個後端 max-utilization

區域性 NEG

  • GCP_VM_IP_PORT

混合式 NEG

  • NON_GCP_PRIVATE_IP_PORT
RATE 必須指定下列其中一項:
  • 每個區域性 NEG max-rate
  • max-rate-per-endpoint
CUSTOM_METRICS 您可以視需要指定下列其中一項:
  • (1) 指標的 max-utilization (即指標的 backends[].customMetrics[].maxUtilization 欄位)
  • (2) 每個區域性 NEG max-rate
  • (3) max-rate-per-endpoint
  • (1) 和 (2) 兩者
  • (1) 和 (3)
系統不支援每個後端 max-utilization

Proxy 網路負載平衡器

下表列出 Proxy 網路負載平衡器可用的平衡模式和目標容量組合。

表格:Proxy 網路負載平衡器的平衡模式和目標容量組合
後端類型 平衡模式 目標容量規格
執行個體群組
  • 區域非代管
  • 區域代管
  • 區域代管
CONNECTION 必須指定下列其中一項:
  • max-connections
     (僅區域執行個體群組支援)
  • max-rate-per-instance
     (所有執行個體群組皆支援)
UTILIZATION 您可以視需要指定下列其中一項:
  • (1) max-utilization
  • (2) max-connections
     (僅適用於區域執行個體群組)
  • (3) max-connections-per-instance
     (所有執行個體群組皆支援)
  • (1) 和 (2) 兩者
  • (1) 和 (3)

區域性 NEG

  • GCP_VM_IP_PORT

混合式 NEG

  • NON_GCP_PRIVATE_IP_PORT
CONNECTION 必須指定下列其中一項:
  • 每個區域性 NEG max-connections
  • max-connections-per-endpoint

直通式網路負載平衡器

下表列出直通式網路負載平衡器可用的平衡模式和目標容量組合。

表格:直通式網路負載平衡器的平衡模式和目標容量組合
後端類型 平衡模式 目標容量規格
執行個體群組
  • 區域非代管
  • 區域代管
  • 區域代管
CONNECTION 您無法指定目標連線數上限。
區域性 NEG
  • GCP_VM_IP
CONNECTION 您無法指定目標連線數上限。

容量調整器

使用容量調整器調整目標容量 (最高用量、最高速率或最高連線數),而不變更目標容量。

如需 Trusted Cloud 參考說明文件,請參閱下列內容:

您可以調整容量縮放比例,藉此縮放有效目標容量,而不必明確變更其中一個 --max-* 參數。

您可以將容量縮放器設為下列任一值:

  • 預設值為 1,代表群組會提供高達 100% 的設定容量 (視 balancingMode 而定)。
  • 0 值表示群組已完全耗盡,可用容量為 0%。如果後端服務只連結一個後端,就無法設定 0
  • 值介於 0.1 (10%) 到 1.0 (100%) 之間。

以下範例說明容量調整器如何與目標容量設定搭配運作:

  • 如果平衡模式為 RATEmax-rate 設為 80 RPS,且容量縮放器為 1.0,則可用容量也是 80 RPS。

  • 如果平衡模式為 RATEmax-rate 會設為 80 RPS,容量配置器為 0.5,則可用容量為 40 RPS (0.5 times 80)。

  • 如果平衡模式為 RATEmax-rate 設為 80 RPS,且容量配置器為 0.0,則可用容量為零 (0)。

服務負載平衡政策

服務負載平衡政策 (serviceLbPolicy) 是與負載平衡器的後端服務相關聯的資源。您可以自訂參數,控制流量在後端服務關聯後端的分配方式:

  • 自訂負載平衡演算法,決定如何在區域或可用區之間分配流量。
  • 啟用自動排空容量功能,讓負載平衡器能快速排空來自不健康後端的流量。

此外,您也可以將特定後端指定為偏好的後端。系統必須先將這些後端的使用量達到上限 (也就是後端平衡模式指定的目標容量),才會將要求傳送至其餘後端。

詳情請參閱使用服務負載平衡政策進行進階負載平衡最佳化

負載平衡地區政策

後端服務的流量分配方式取決於平衡模式和負載平衡地區政策。平衡模式會決定應傳送至每個後端 (執行個體群組或 NEG) 的流量比例。接著,負載平衡區域政策 (LocalityLbPolicy) 會決定流量在各區域的執行個體或端點間的分配方式。如果是地區代管執行個體群組,地區性政策會套用至每個組成區域。

負載平衡地區政策是依後端服務設定。可用的設定如下:

  • ROUND_ROBIN (預設):這是預設的負載平衡地區政策設定,負載平衡器會以循環方式選取健康狀態良好的後端。

  • WEIGHTED_ROUND_ROBIN:負載平衡器會使用使用者定義的自訂指標,在後端選取最適合的執行個體或端點來處理要求。

  • LEAST_REQUESTO(1)演算法。負載平衡器會隨機選取兩個健康狀態良好的主機,並選擇處理中要求數較少的主機。

  • RING_HASH:這項演算法會對後端實作一致性雜湊。根據演算法的屬性,如果在包含 N 個主機的組合中新增/移除一個主機,則只會影響 1/N 項要求。

  • RANDOM:負載平衡器會隨機選取健康狀態良好的主機。

  • ORIGINAL_DESTINATION:負載平衡器會根據用戶端連線中繼資料選取後端。連線會開啟至傳入用戶端要求中指定的原始目的地 IP 位址,然後要求會重新導向至負載平衡器。

    全域和區域外部應用程式負載平衡器不支援 ORIGINAL_DESTINATION

  • MAGLEV:對後端實作一致性雜湊,可用來取代 RING_HASH 政策。Maglev 不如 RING_HASH 穩定,但資料表查詢建構作業和主機選取作業速度較快。如要進一步瞭解 Maglev,請參閱 Maglev 白皮書

  • WEIGHTED_MAGLEV:使用健康狀態檢查回報的權重,實作每個執行個體的加權負載平衡。如果使用這項政策,後端服務必須設定非舊版的 HTTP 健康狀態檢查,且健康狀態檢查回覆應包含非標準的 HTTP 回應標頭欄位 X-Load-Balancing-Endpoint-Weight,以指定每個執行個體的權重。只要每個執行個體回報有效權重或回報 UNAVAILABLE_WEIGHT,系統就會根據上次處理的健康狀態檢查回覆中回報的每個執行個體權重,做出負載平衡決策。否則負載平衡會維持等權重。

    WEIGHTED_MAGLEV 僅適用於外部直通式網路負載平衡器。如需範例,請參閱為外部直通式網路負載平衡器設定加權負載平衡

只有搭配下列負載平衡器使用的後端服務,才支援設定負載平衡區域政策:

  • 全域外部應用程式負載平衡器
  • 區域性外部應用程式負載平衡器
  • 跨區域內部應用程式負載平衡器
  • 區域性內部應用程式負載平衡器
  • 外部直通式網路負載平衡器

請注意,負載平衡地區政策 (localityLbPolicy) 的有效預設值會根據工作階段相依性設定而異。如果未設定工作階段親和性 (也就是工作階段親和性維持預設值 NONE),則 localityLbPolicy 的預設值為 ROUND_ROBIN。如果將工作階段親和性設為 NONE 以外的值,localityLbPolicy 的預設值為 MAGLEV

如要設定負載平衡區域政策,可以使用Trusted Cloud 控制台、gcloud (--locality-lb-policy) 或 API (localityLbPolicy)。

後端子集

後端子集是選用功能,可將部分後端指派給每個 Proxy 執行個體,藉此提升效能和擴充性。

後端子集化支援下列項目:

  • 區域性內部應用程式負載平衡器
  • 內部直通式網路負載平衡器

區域內部應用程式負載平衡器的後端子集

如果是區域內部應用程式負載平衡器,後端子集會自動將區域後端服務中的後端子集指派給每個 Proxy 執行個體。根據預設,每個 Proxy 執行個體都會開啟與後端服務中所有後端的連線。當 Proxy 執行個體和後端數量都很大時,開啟所有後端的連線可能會導致效能問題。

啟用子集後,每個 Proxy 只會開啟連至後端子集的連線,減少連至每個後端的連線數。減少同時開啟的後端連線數,可提升後端和 Proxy 的效能。

下圖顯示負載平衡器和兩個 Proxy。如果沒有後端子集,來自兩個 Proxy 的流量都會分配至後端服務 1 中的所有後端。啟用後端子集後,每個 Proxy 的流量會分配到後端子集。Proxy 1 的流量會分配至後端 1 和 2,Proxy 2 的流量則會分配至後端 3 和 4。

比較未採用和採用後端子集的內部應用程式負載平衡器。
比較有和沒有後端子集的內部應用程式負載平衡器 (按一下可放大)。

此外,您也可以設定 localityLbPolicy 政策,進一步調整負載平衡流量至後端。詳情請參閱「流量政策」。

如要瞭解如何為內部應用程式負載平衡器設定後端子設定,請參閱設定後端子設定

內部應用程式負載平衡器的後端子集相關注意事項
  • 雖然後端子集化設計的目的是確保所有後端執行個體都能充分運用,但這可能會導致每個後端收到的流量量出現一些偏差。建議您將 localityLbPolicy 設為 LEAST_REQUEST,適用於對後端負載平衡很敏感的後端服務。
  • 啟用或停用子集功能會中斷現有連線。
  • 後端子集需要工作階段相依性為 NONE (5 個組合雜湊)。如要使用其他工作階段親和性選項,必須先停用後端子集。--subsetting-policy--session-affinity 旗標的預設值都是 NONE,且一次只能將其中一個旗標設為不同的值。

內部直通式網路負載平衡器的後端子設定

內部直通式網路負載平衡器的後端子集功能,可讓您擴充內部直通式網路負載平衡器,支援每個內部後端服務的更多後端 VM 執行個體。

如要瞭解子集對這項限制的影響,請參閱「負載平衡資源配額與限制」的「後端服務」一節

根據預設,子集功能會停用,因此後端服務最多只能分配給 250 個後端執行個體或端點。如果後端服務需要支援超過 250 個後端,可以啟用子集。啟用子集後,系統會為每個用戶端連線選取後端執行個體子集。

下圖顯示這兩種運作模式差異的縮小模型。

比較未採用和採用子集的內部直通式網路負載平衡器。
比較未啟用和已啟用子集的內部直通式網路負載平衡器 (按一下可放大)。

如果不進行子集化,就能更充分利用整組健康狀態良好的後端,並根據流量分配,將新的用戶端連線分配給所有健康狀態良好的後端。子集會限制負載平衡,但負載平衡器可支援超過 250 個後端。

如需設定操作說明,請參閱「子集」。

內部直通式網路負載平衡器的後端子集相關注意事項
  • 啟用子集功能後,即使後端數量不多,並非所有後端都會收到特定傳送端的流量。
  • 如要瞭解啟用子集時的後端執行個體數量上限,請參閱配額頁面
  • 子集化僅支援 5 元組工作階段相依性
  • 封包鏡像不支援子集。
  • 啟用或停用子集功能會中斷現有連線。
  • 如果內部部署用戶端需要存取內部直通式網路負載平衡器,子集化可大幅減少接收來自內部部署用戶端連線的後端數量。這是因為 Cloud VPN 通道或 Cloud Interconnect VLAN 連結的區域,會決定負載平衡器後端的子集。特定區域中的所有 Cloud VPN 和 Cloud Interconnect 端點都使用相同的子集。不同地區會使用不同的子集。

後端子集定價

使用後端子集化功能不會產生費用。詳情請參閱「所有網路定價」。

工作階段相依性

只要健康狀態良好的後端數量維持不變,您就能透過工作階段親和性,以可預測的方式控管負載平衡器為新連線選取後端。如果應用程式需要將特定使用者的多項要求導向至同一個後端或端點,這項功能就非常實用。這類應用程式通常包含廣告放送、遊戲或服務使用的有狀態伺服器,且內部快取量很大。

Trusted Cloud 負載平衡器會盡可能提供工作階段相依性。如果後端健康狀態檢查狀態改變、新增或移除後端、後端權重變更 (包括啟用或停用加權平衡),或是後端飽和度 (以平衡模式測量) 變更,都可能導致工作階段相依性中斷。

如果獨特連線的分配相當廣泛,使用工作階段相依性進行負載平衡的效果會很好。合理的大型是指至少是後端數量的數倍。如果只測試少數連線,負載平衡器就無法準確呈現後端之間的用戶端連線分配情形。

根據預設,所有 Trusted Cloud 負載平衡器都會使用五元組雜湊 (--session-affinity=NONE) 選取後端,如下所示:

  • 封包的來源 IP 位址
  • 封包的來源通訊埠 (如果封包標頭中存在)
  • 封包的目的地 IP 位址
  • 封包的目的地通訊埠 (如果封包標頭中存在)
  • 封包的通訊協定

如要進一步瞭解直通式網路負載平衡器的工作階段相依性,請參閱下列文件:

如要進一步瞭解應用程式負載平衡器的工作階段相依性,請參閱下列文件:

如要進一步瞭解 Proxy 網路負載平衡器的工作階段相依性,請參閱下列文件:

後端服務逾時

大多數負載平衡器都有後端服務逾時。 Trusted Cloud 預設值為 30 秒。允許的逾時值完整範圍為 1 至 2,147,483,647 秒。

  • 對於使用 HTTP、HTTPS 或 HTTP/2 通訊協定的外部應用程式負載平衡器和內部應用程式負載平衡器,後端服務逾時是 HTTP(S) 流量的要求和回應逾時。

    如要進一步瞭解各負載平衡器的後端服務逾時,請參閱下列文章:

    • 如要瞭解 區域外部應用程式負載平衡器,請參閱「逾時和重試」。
    • 如為內部應用程式負載平衡器,請參閱「逾時和重試」。
  • 如果是外部 Proxy 網路負載平衡器,逾時時間就是閒置逾時時間。 如要延長或縮短連線刪除前的時間,請變更逾時值。WebSocket 連線也會使用這個閒置逾時。

  • 針對內部直通式網路負載平衡器和外部直通式網路負載平衡器,您可以使用 gcloud 或 API 設定後端服務逾時值,但系統會忽略該值。對於這些直通負載平衡器,後端服務逾時沒有意義。

健康狀態檢查

如果後端服務的後端是執行個體群組或區域性 NEG,則必須有相關的健康狀態檢查

使用 Trusted Cloud 控制台建立負載平衡器時,您可以建立健康狀態檢查 (如有需要),也可以參照現有的健康狀態檢查。

使用 Google Cloud CLI 或 API,透過執行個體群組或區域 NEG 後端建立後端服務時,必須參照現有的健康狀態檢查。如要進一步瞭解所需的健康狀態檢查類型和範圍,請參閱「健康狀態檢查總覽」中的負載平衡器指南

詳情請參閱下列文件:

IAP

透過 HTTPS 存取的應用程式可經由 IAP 建立中央授權層,因此,您可以使用應用程式層級的存取權控管模型,而非依賴網路層級的防火牆。IAP 支援特定應用程式負載平衡器

IAP 與 Cloud CDN 不相容。無法在同一個後端服務上啟用。

進階流量管理功能

如要瞭解在與負載平衡器相關聯的後端服務和網址對應中設定的進階流量管理功能,請參閱下列文章:

API 和 gcloud 參考資料

如要進一步瞭解後端服務資源的屬性,請參閱下列參考資料:

後續步驟

請參閱以下說明文件和資訊,瞭解如何在負載平衡中使用後端服務: