Cloud Service Mesh 的隔離功能
本頁面說明如何建立隔離設定,為後端服務設定更完善的請求隔離機制,進而設定服務網格。
這項功能可為服務後端提供額外的隔離支援,防止跨區域溢位。
根據預設,Cloud Service Mesh 會使用依區域的瀑布式演算法,決定使用者流量的路由目的地。透過這項演算法,Cloud Service Mesh 會將流量轉送至最靠近的區域,直到後端達到設定的容量上限為止。之後,流量就會開始溢流至較遠的區域。
這項功能會根據前端區域和隔離設定,將流量限制在最接近或本機的區域,即使最接近的區域容量不足,流量也不會溢出。這有助於防範潛在的連鎖故障,並限制同一區域的潛在停機時間。否則,您仍須在全域層級管理服務設定。
是否使用這項功能取決於實際用途,使用前請仔細考量下列事項:
- 如果某個區域的後端過度負載,即使其他區域的後端可以處理流量,Cloud Service Mesh 仍可能會將額外流量傳送至該區域。這表示額外流量可能會導致每個區域過載,因此您需要相應地規劃。
- 您的流量仍會透過全域控制層轉送。也就是說,多個區域仍有可能發生全域協調式故障。
- 這項功能是透過serviceLbPolicy 資源設定。所有限制仍適用。
- 如果使用 STRICT 隔離模式,且同一區域中沒有服務後端,要求就會失敗。
套用這項功能後,會有兩種情況:
Nearest Isolation
「最近的區域隔離」是指前端與共置後端會隔離到該區域。如果本機位置沒有可用的後端,系統會連線至後端區域,同時盡量縮短網路延遲時間。
嚴格隔離
嚴格的區域隔離是指前端位置只能連線至本區域內的後端。如果前端在當地區域沒有提供服務的後端,就會捨棄所有流量。
啟用隔離
gcloud
請按照下列步驟,使用 Google Cloud CLI 建立隔離設定。
執行下列指令來建立
serviceLbPolicy
:gcloud network-services service-lb-policies create my-isolation-policy \ --isolation-config-granularity=REGION \ --isolation-config-mode=ISOLATION_MODE \ --location=global
請將 ISOLATION_MODE 取代為下列其中一個選項:
- NEAREST:流量會傳送到最近的區域。
- STRICT:如果前端所在的區域沒有可提供服務的後端,流量就會失敗。
如未明確提供,預設值為 NEAREST。請注意,只有在同時設定
--isolation-granularity
旗標時,才能指定這個欄位。或者,如果您已有政策,請使用下列指令更新政策:
gcloud network-services service-lb-policies update POLICY_NAME \ --isolation-config-granularity=REGION \ --isolation-config-mode=ISOLATION_MODE \ --location=global
將 POLICY_NAME 替換為現有政策的名稱。
建立或更新
serviceLbPolicy
資源後,請將其附加至backendService
資源:gcloud compute backend-services update BACKEND_SERVICE_NAME \ ‐‐service-lb-policy POLICY_URL
將 BACKEND_SERVICE_NAME 替換為後端服務名稱。
停用隔離功能
如要停用這項功能,有兩種做法:
- 將
isolationConfigs
設為未指定。 - 如果這是您透過這項政策啟用的唯一功能,請從服務中移除
ServiceLbPolicy
將 isolationConfigs
設為未指定
執行下列指令,將 isolationConfigs
設為未指定:
gcloud network-services service-lb-policies update my-isolation-policy \
--isolation-config-granularity=unspecified \
--isolation-config-mode=unspecified \
--location=global
從服務中移除「ServiceLbPolicy
」
執行下列指令,移除 ServiceLbPolicy
:
gcloud network-services service-lb-policies delete my-isolation-policy --location=global
支援性、診斷與疑難排解
本節說明啟用這項功能後可能發生的問題。
後端過載
這項功能提供隔離支援,因此如果本機區域已滿,流量不會轉移至遠端區域。因此,如果開啟這項功能,部分後端可能會過載。如果這不是您要的行為,請考慮關閉這項功能。您也可以考慮啟用自動調度資源,以便更妥善地處理後端過載問題。
流量已轉移
這項功能可避免流量超出容量。因此,如果後端在啟用這項功能前已過度負載,流量可能已轉移至遠端區域。在這種情況下,啟用這項功能可能會導致這些流量回流。
流量未轉移
這項功能可避免流量超出容量。因此,如果後端在開啟這項功能前未過度負載,最接近的區域可能就能處理所有流量。在這種情況下,短期內開啟這項功能可能不會導致流量轉移。
在區域中新增或移除後端後,流量會隨之轉移
開啟這項功能後,如果區域中新增後端,流量可能會轉移。這是正常情況,因為 Cloud Service Mesh 會嘗試將流量轉送至這些後端,以盡量縮短整體網路延遲時間。同樣地,移除最後一個後端時,Cloud Service Mesh 會開始將流量傳送至遠端區域。這也是預期中的行為。
要求失敗
如果啟用「嚴格」隔離模式,且前端所在區域沒有任何後端提供服務,流量預期會失敗。如果這不是預期行為,請確認您在預期流量傳送的每個區域中都有後端。