外部應用程式負載平衡器效能最佳做法

Cloud Load Balancing 提供機制,可將使用者流量分配給應用程式的多個執行個體。這類服務會在應用程式執行個體之間分散負載,並為使用者提供最佳應用程式效能。本頁說明一些最佳做法,可確保負載平衡器可為您的應用程式進行最佳化。為確保最佳效能,建議您對應用程式的流量模式進行基準測試。

將後端置於靠近用戶端的位置

使用者或用戶端應用程式與工作負載 (負載平衡器後端) 的距離越近,兩者之間的網路延遲時間就越短。因此,請在最接近使用者流量抵達 Google 前端的區域中建立負載平衡器後端。在許多情況下,您必須在多個地區執行後端,才能盡可能縮短世界各地用戶端的延遲時間。

如需詳細資訊,請參閱下列主題:

啟用 Cloud CDN 快取

將 Cloud CDN 和快取功能納入預設全域外部應用程式負載平衡器設定。詳情請參閱 Cloud CDN

啟用 Cloud CDN 後,系統可能需要幾分鐘的時間才能開始快取回應。Cloud CDN 只會快取含有可快取內容的回應。如果系統未快取網址的回應,請檢查系統為該網址傳回哪些回應標頭,以及如何設定後端的快取功能。詳情請參閱「Cloud CDN 疑難排解」。

轉送規則通訊協定選項

  • 針對全域外部應用程式負載平衡器和傳統應用程式負載平衡器,我們建議使用 HTTP/3,這是以 IETF QUIC 為基礎的網際網路通訊協定。根據預設,所有主要瀏覽器、Android CronetiOS 都已啟用 HTTP/3。如要為應用程式使用 HTTP/3,請確認網路上不會封鎖或限制 UDP 流量,且 HTTP/3 先前並未在全球外部應用程式負載平衡器上停用。尚未支援 HTTP/3 的用戶端 (例如舊版瀏覽器或網路程式庫) 不會受到影響。詳情請參閱 HTTP/3 QUIC

  • 區域性外部應用程式負載平衡器支援 HTTP/1.1、HTTPS 和 HTTP/2。HTTPS 和 HTTP/2 都需要一些前置開銷來設定 TLS。

後端服務通訊協定選項

您選擇的後端通訊協定 (HTTP、HTTPS 或 HTTP/2) 會影響應用程式延遲時間和應用程式可用的網路頻寬。舉例來說,在負載平衡器和後端執行個體之間使用 HTTP/2 時,與 HTTP(S) 相比,需要與執行個體建立的 TCP 連線可能會多出許多。連線叢集是一種最佳化做法,可減少 HTTP(S) 連線數量,但不適用於 HTTP/2。因此,後端連線頻率會提高,導致後端延遲時間變長。

後端服務通訊協定也會影響傳輸過程中的加密方式。使用外部 HTTP(S) 負載平衡器時,所有流向位於 Google Cloud VPC 網路中的後端的流量都會自動加密。這就是所謂的自動網路層級加密。不過,自動網路層級加密功能僅適用於與執行個體群組和區域 NEG 後端的通訊。對於所有其他後端類型,建議您使用 HTTPS 和 HTTP/2 等安全通訊協定選項,加密與後端服務的通訊。詳情請參閱「從負載平衡器到後端的加密」。

網路狀況會變更,後端集合也可能會因負載而變更。對於向單一服務產生大量流量的應用程式,長時間執行的連線不一定是最佳設定。建議您選擇連線最長生命週期 (例如 10 到 20 分鐘) 和/或要求數量上限 (例如 1000 到 2000 個要求),而不是無限期使用單一連線連線至後端,這樣之後就能使用新的連線來處理新要求。當使用舊連線的所有有效要求完成後,系統就會關閉該連線。

這樣一來,用戶端應用程式就能從後端套件的變更中受益,這些變更包括負載平衡器的 proxy,以及為用戶端提供服務所需的任何網路重新最佳化。

平衡模式選擇條件

為提升效能,建議您根據最有回應的後端,為每項新要求選擇後端群組。您可以使用 RATE 平衡模式達成此目的。在這種情況下,系統會選擇最近要求中平均延遲時間最低的後端群組,或是 HTTP/2 和 HTTP/3 中未完成要求最少的後端群組。

UTILIZATION 平衡模式只適用於執行個體群組後端,並根據執行個體群組中 VM 執行個體的使用率分配流量。

設定工作階段相依性

在某些情況下,同一個後端處理來自同一位使用者或與同一位使用者相關的請求可能會有所幫助,至少在短時間內是如此。您可以使用工作階段相依性 (在後端服務中設定的設定) 進行設定。工作階段相依性可控制從用戶端傳至負載平衡器後端的新連線分配情況。您可以使用工作階段相依性,確保同一個後端會處理來自相同資源的要求,例如與同一個使用者帳戶相關聯,或來自同一個文件的要求。

工作階段相依性是針對整個後端服務資源指定,而非針對個別後端指定。不過,網址對應可以指向多個後端服務。因此,您不必為負載平衡器使用單一工作階段相依性類型。視應用程式而定,您可以使用不同後端服務搭配不同的工作階段親和性設定。舉例來說,如果應用程式的某部分為許多使用者提供靜態內容,就不可能從工作階段親和性中獲益。您可以改用支援 Cloud CDN 的後端服務,提供快取的回應。

詳情請參閱「工作階段相依性」。