無 Proxy gRPC 的限制
本文件說明 Cloud Service Mesh 在無 Proxy gRPC 應用程式中適用的限制。如要瞭解限制,請參閱「配額與限制」一文。
轉送規則、網址對應和目標 Proxy 的限制僅適用於搭配 Google Cloud 負載平衡 API 的 Cloud Service Mesh。
一般限制
搭配無 Proxy gRPC 應用程式的 Cloud Service Mesh 有以下限制:
您無法在 Google Cloud 控制台中使用 gRPC 通訊協定設定後端服務和轉送規則對應關係。對於這些資源,Google Cloud 控制台為唯讀。
Proxyless gRPC 支援端點探索、路由、負載平衡、負載回報,以及許多進階流量管理功能。
如要瞭解支援部分進階流量管理功能所需的最低 gRPC 版本,請參閱「支援的 gRPC 版本和語言」。
如果 gRPC 應用程式需要未支援的進階流量管理功能,請改用 DNS 名稱解析器,而非 xDS 解析器,並搭配 Cloud Service Mesh 支援的補充 Proxy 部署。在目標 gRPC Proxy 中,將
validateForProxyless
欄位設為FALSE
,這樣您就能設定 gRPC 尚未支援,但可透過使用附屬 Proxy 在 Cloud Service Mesh 中使用的功能。
無 Proxy gRPC 僅支援輪替和環狀雜湊負載平衡政策。系統不支援其他負載平衡政策。
- Cloud Service Mesh 會為 gRPC 用戶端提供優先權重量化的地區清單,其中包含一個執行個體群組或一個網路端點群組 (NEG)。Cloud Service Mesh 會根據最近的可用區域、其容量和後端服務的平衡模式,計算這份清單。
- 針對特定要求,gRPC 用戶端會根據優先順序和權重挑選一或多個地區,並針對這些地區內的後端執行輪替或環形雜湊負載平衡。
當目前可用區的容量低於 50% 時,系統就會開始從一個可用區 (區域) 移轉至另一個可用區。您無法設定這個門檻。
在某些情況下,與目標 gRPC Proxy 相關的設定指令,以及參照目標 gRPC Proxy 的轉送規則,可能需要一分鐘的時間才能完成。
混合式連線 NEG (
NON_GCP_PRIVATE_IP_PORT
NEG) 不支援無 Proxy gRPC 用戶端。
網址對應限制
無 Proxy gRPC 服務支援下列 網址對應流量管理功能。
hostRules
的 pathMatcher
支援以下功能:
pathMatcher
name
description
defaultService
defaultRouteAction
weightedBackendServices
backendService
weight
retryPolicy
retryConditions
numRetries
faultInjectionPolicy
maxStreamDuration
pathRules
service
routeAction
weightedBackendServices
backendService
weight
retryPolicy
retryConditions
numRetries
faultInjectionPolicy
maxStreamDuration
paths
routeRules
priority
description
matchRules
prefixMatch
fullPathMatch
headerMatches
metadataFilters
service
routeAction
weightedBackendServices
backendService
weight
retryPolicy
retryConditions
numRetries
faultInjectionPolicy
maxStreamDuration
使用無 Proxy gRPC 服務時,請遵守下列網址對應限制:
系統不支援主機規則和網址對應的預設規則中的萬用字元,包括網址對應的隱含建立
*
主機規則。主機比對完成後,系統會略過這類項目。不支援下列功能:
- 「
routeRules
」設定了「queryParameterMatches
」政策 headerAction
、urlRewrite
、requestMirrorPolicy
、corsPolicy
和urlRedirect
路徑動作timeout
路由動作;請使用maxStreamDuration
取代timeout
- 「
retryPolicy
」設定了「perTryTimeout
」政策 retryPolicy
中的retryConditions
,但不包括cancelled
、deadline-exceeded
、internal
、resource-exhausted
和unavailable
的一或多個條件- 無 Proxy gRPC 服務不會使用網址對應項目的
defaultService
、defaultRouteAction
、defaultUrlRedirect
和headerAction
。如果無 Proxy gRPC 用戶端在查詢服務名稱時找不到相符的主機規則,Cloud Service Mesh 會傳回名稱查詢錯誤,而不會使用網址對應的預設服務或動作。 - 「
weightedBackendServices
」設定了「headerAction
」政策
- 「
在網址對應標頭比對規則中,系統僅支援使用者指定的非二進位自訂中繼資料和
content-type
標頭。以下傳輸層標頭無法用於標頭比對規則::authority
、:method
、:path
、:scheme
、user-agent
、accept-encoding
、content-encoding
、grpc-accept-encoding
、grpc-encoding
、grpc-previous-rpc-attempts
、grpc-tags-bin
、grpc-timeout
和grpc-trace-bin
。更新網址對應主機規則,從一個後端服務變更為另一個後端服務時,在將新設定推送至用戶端的過程中,流量可能會暫時中斷。如要避免這項限制,請設定使用加權後端服務的流量拆分。設定流量分割後,請從舊後端服務慢慢將流量轉移至新後端服務。
目標 gRPC Proxy 限制
當目標 gRPC Proxy 參照網址對應時,您無法設定下列網址對應功能。無論您使用的是附加 Proxy 還是無 Proxy gRPC 服務,這項說明都適用,因為這些 HTTP 專屬功能不適用於 gRPC 通訊協定:
queryParameterMatches
項比對規則urlRewrite
路線動作urlRedirect
路線動作corsPolicy
動作
後端服務限制
以下後端服務功能不支援使用附加程式 Proxy 的無 Proxy gRPC 服務:
localityLbPolicy
(LEAST_REQUEST
除外,且僅限 Java 用戶端)、ROUND_ROBIN
和RING_HASH
sessionAffinity
(HEADER_FIELD
和NONE
除外)consistentHash
(httpHeaderName
和minimumRingSize
欄位除外)affinityCookieTtlSec
timeoutSec
;請改用maxStreamDuration
circuitBreakers
(maxRequests
欄位除外)
請注意,如果設定了系統不支援的值,gRPC 用戶端會拒絕 Cloud Service Mesh 的設定。這會導致用戶端拒絕所有後端服務的設定,因為 xDS 通訊協定要求拒絕特定回應中的所有資源,而非只拒絕回應中的個別資源。這會導致用戶端管道進入暫時性錯誤狀態,直到設定修正為止。由於此限制,您必須先確保所有用戶端都支援必要值,才能為服務設定功能。舉例來說,如果您將 ROUND_ROBIN
政策變更為 RING_HASH
,就必須確保所有用戶端都已升級至支援 RING_HASH
的版本。
進階流量管理功能的限制
您無法為採用 Cloud Service Mesh 的無 Proxy gRPC 服務設定部分進階流量管理功能。如需支援的功能,請參閱下列內容:
Service Directory 的限制
- Service Directory 和 Cloud Service Mesh 無法保證用戶端的網路可及性。
後端服務只能參照下列其中一項:
- 代管執行個體群組或非代管執行個體群組
- 網路端點群組
- 服務繫結
Service Directory 服務只能與
load-balancing-scheme=INTERNAL_SELF_MANAGED
的全球後端服務搭配使用。服務繫結參照的 Service Directory 服務可以刪除。如果刪除後端服務附加的基礎服務目錄服務,使用 Cloud Service Mesh 的應用程式就無法將流量傳送至這項服務,因此要求會失敗。如需最佳做法,請參閱可觀察性和偵錯。
將服務目錄服務繫結至後端服務時,您無法在該後端服務上設定健康狀態檢查。
後續步驟
- 如要瞭解適用於 Cloud Service Mesh 的限制 (包括進階流量管理限制),請參閱「Cloud Service Mesh 限制」。
- 如要查看無 Proxy gRPC 服務的用途和架構模式,請參閱 無 Proxy gRPC 服務總覽。