搭配混合式連線網路端點群組的 Cloud Service Mesh
Cloud Service Mesh 支援超越 Google Cloud的環境,包括地端部署資料中心和其他公有雲,您可以使用混合式連線來連線至這些環境。
您可以設定 Cloud Service Mesh,讓服務網格可以將流量傳送至 Google Cloud以外的端點。這些端點包括:
- 內部負載平衡器。
- 位於其他雲端的虛擬機器 (VM) 執行個體上的伺服器應用程式。
- 您可以透過混合式連線,並使用 IP 位址和通訊埠存取的任何其他目的地。
您可以將每個端點的 IP 位址和通訊埠新增至混合式連線網路端點群組 (NEG)。混合式連線 NEG 的類型為 NON_GCP_PRIVATE_IP_PORT
。
Cloud Service Mesh 支援內部部署和多雲端服務,可讓您執行下列操作:
- 將流量轉送至全球,包括內部部署和多雲端服務的端點。
- 將 Cloud Service Mesh 和服務網格 (包括服務探索和進階流量管理等功能) 的優勢,帶入在 Google Cloud以外現有基礎架構上執行的服務。
- 結合 Cloud Service Mesh 功能與 Cloud Load Balancing,將 Google Cloud 網路服務帶入多個環境。
混合式連線 NEG (NON_GCP_PRIVATE_IP_PORT
NEG) 不支援無 Proxy 的 gRPC 用戶端。
用途
Cloud Service Mesh 可在多個環境中,設定 VM 型服務和容器型服務之間的網路連線,包括:
- Google Cloud
- 內部部署資料中心
- 其他公有雲
將網狀流量轉送至地端部署位置或其他雲端
這項功能最簡單的用途就是流量路由。您的應用程式正在執行 Cloud Service Mesh Envoy Proxy。Cloud Service Mesh 會向用戶端說明您的服務和各個服務的端點。
在上圖中,當應用程式向 on-prem
服務傳送要求時,Cloud Service Mesh 用戶端會檢查傳出要求並更新其目的地。目的地會設為與 on-prem
服務相關聯的端點 (在本例中為 10.2.0.1
)。接著,要求會透過 Cloud VPN 或 Cloud Interconnect 傳送至預期目的地。
如果需要新增更多端點,請更新 Cloud Service Mesh,將這些端點新增至服務。您無需變更應用程式程式碼。
將現有的內部部署服務遷移至 Google Cloud
將流量傳送至非Google Cloud 端點,即可將流量轉送至其他環境。您可以將這項功能與進階流量管理結合,在不同環境之間遷移服務。
上圖延續了先前的模式。您可以將 Cloud Service Mesh 設為使用以權重為準的流量拆分方式,在兩個服務之間拆分流量,而非將 Cloud Service Mesh 設為將所有流量傳送至 on-prem
服務。
您可以先將 0% 的流量傳送至 cloud
服務,再將 100% 的流量傳送至 on-prem
服務。接著,您可以逐漸提高傳送至 cloud
服務的流量比重。最後,您會將 100% 的流量傳送至 cloud
服務,並可淘汰 on-prem
服務。
Google Cloud 適用於內部部署和多雲端部署的網路邊緣服務
最後,您可以將這項功能與 Google Cloud現有的網路解決方案結合。 Google Cloud 提供多種網路服務,例如全球外部負載平衡器,可搭配 Google Cloud Armor 提供分散式阻斷服務 (DDoS) 防護,並搭配 Cloud Service Mesh 使用,為您的內部部署或多雲服務提供新功能。最重要的是,您不需要將這些內部部署或多雲服務暴露在公開網際網路中。
在上述圖表中,來自公開網際網路的用戶端流量會透過 Google Cloud 負載平衡器 (例如全球外部應用程式負載平衡器) 進入Google Cloud的網路。當流量抵達負載平衡器時,您可以套用網路邊緣服務,例如 Google Cloud Armor 分散式阻斷服務防護或 Identity-Aware Proxy (IAP) 使用者驗證。詳情請參閱「適用於多環境部署項目的網路邊緣服務」。
套用這些服務後,流量會在Google Cloud稍作停留,應用程式或獨立 Proxy (由 Cloud Service Mesh 設定) 會透過 Cloud VPN 或 Cloud Interconnect 將流量轉送至內部部署服務。
Google Cloud 資源和架構
本節提供有關 Google Cloud資源的背景資訊,您可以使用這些資源為內部部署和多雲環境提供 Cloud Service Mesh 代管服務網格。
下圖顯示可讓內部部署和多雲端服務支援 Cloud Service Mesh 的 Google Cloud 資源。主要資源是 NEG 及其網路端點。其他資源是指您在標準 Cloud Service Mesh 設定中設定的資源。為求簡單明瞭,圖表中並未顯示多個全球後端服務等選項。
設定 Cloud Service Mesh 時,您會使用全域後端服務 API 資源建立服務。服務是邏輯結構,結合了以下項目:
- 用戶端嘗試將流量傳送至服務時要套用的政策。
- 一或多個後端或端點,用於處理服務的目標流量。
在地端部署和多雲端服務與 Cloud Service Mesh 設定的其他服務類似。主要差異在於您使用 混合連線 NEG 設定這些服務的端點。這些 NEG 的網路端點類型已設為 NON_GCP_PRIVATE_IP_PORT
。您新增至混合式連線 NEG 的端點必須是有效的 IP:port
組合,客戶才能存取這些組合,例如透過 Cloud VPN 或 Cloud Interconnect 等混合式連線。
每個 NEG 都有一個網路端點類型,且只能包含同類型的網路端點。這個類型會決定下列項目:
- 服務可傳送流量的目的地。
- 健康狀態檢查行為。
建立 NEG 時,請按照下列方式進行設定,以便將流量傳送至內部部署或多雲端目的地。
- 將網路端點類型設為
NON_GCP_PRIVATE_IP_PORT
。這代表可到達的 IP 位址。如果這個 IP 位址位於地端部署環境或其他雲端服務供應商,則必須使用混合式連線 (例如 Cloud VPN 或 Cloud Interconnect 提供的連線),才能從 Google Cloud 存取。 - 指定 Google Cloud 區域,盡量縮短 Google Cloud 與內部部署或多雲環境之間的地理距離。舉例來說,如果您在德國法蘭克福的內部部署環境中託管服務,則可在建立 NEG 時指定
europe-west3-a
Google Cloud 區域。
這類網路端點的健康狀態檢查行為,與其他類型的網路端點健康狀態檢查行為不同。其他網路端點類型使用 Google Cloud的集中式健康狀態檢查系統,而 NON_GCP_PRIVATE_IP_PORT
網路端點則使用 Envoy 的區塊式健康狀態檢查機制。詳情請參閱「限制和其他注意事項」一節。
連線和網路注意事項
Cloud Service Mesh 用戶端 (例如 Envoy 代理程式) 必須能夠連線至 trafficdirector.googleapis.com:443
的 Cloud Service Mesh。如果您無法連線至 Cloud Service Mesh 控制層,會發生下列情況:
- 現有的 Cloud Service Mesh 用戶端無法接收 Cloud Service Mesh 的設定更新。並繼續根據目前的設定運作。
- 新的 Cloud Service Mesh 用戶端無法連線至 Cloud Service Mesh。必須重新建立連線,才能使用服務中介網。
如果您想在 Google Cloud 與內部部署或多雲環境之間傳送流量,則必須透過混合型連線連結這些環境。建議您使用 Cloud VPN 或 Cloud Interconnect 啟用的高可用性連線。
內部部署、其他雲端和 Google Cloud 子網路 IP 位址和 IP 位址範圍不得重疊。
限制和其他考量重點
以下是使用混合式連線 NEG 的限制。
設定 proxyBind
您只能在建立 targetHttpProxy
時設定 proxyBind
的值。您無法更新現有的 targetHttpProxy
。
連線和連線中斷
如要進一步瞭解連線需求和限制,請參閱「連線和網路考量事項」一節。
混合後端類型
後端服務可以有 VM 或 NEG 後端。如果後端服務有 NEG 後端,則所有 NEG 都必須包含相同的網路端點類型。後端服務不得包含多個 NEG,且每個 NEG 的端點類型皆不同。
網址對應可包含主機規則,將其解析為不同的後端服務。您可能會有只包含混合連線 NEG (含內部端點) 的後端服務,以及包含獨立 NEG (含 GKE 端點) 的後端服務。網址對應可包含規則,例如以權重為依據的流量拆分,可在每個後端服務之間拆分流量。
使用 NON_GCP_PRIVATE_IP_PORT
類型端點的 NEG 搭配 Google Cloud 後端
您可以使用混合連線 NEG 建立後端服務,該 NEG 會指向 Google Cloud中的後端。不過,我們不建議採用這種模式,因為混合式連線 NEG 無法從集中式健康檢查中受益。如要瞭解集中式健康狀態檢查和分散式健康狀態檢查,請參閱「健康狀態檢查」一節。
端點註冊
如要將端點新增至 NEG,您必須更新 NEG。您可以手動執行這項操作,也可以使用 Google CloudNEG REST API 或 Google Cloud CLI 自動執行。
服務的新執行個體啟動時,您可以使用 Google Cloud API 將執行個體註冊至您設定的 NEG。使用 Compute Engine 代管執行個體群組 (MIG) 或 GKE (在 Google Cloud中) 時,MIG 或 NEG 控制器會分別自動處理端點註冊作業。
健康狀態檢查
使用混合式連線 NEG 時,健康狀態檢查行為與標準集中式健康狀態檢查行為的差異如下:
- 對於
NON_GCP_PRIVATE_IP_PORT
類型的網路端點,Cloud Service Mesh 會將其用戶端設為使用資料層來處理健康檢查。為避免將要求傳送至不良的後端,Envoy 執行個體會自行執行健康狀態檢查並使用自身機制。 - 由於資料層會處理健康狀態檢查,因此您無法使用Google Cloud 主控台、API 或 Google Cloud CLI 擷取健康狀態檢查狀態。
實際上,使用 NON_GCP_PRIVATE_IP_PORT
表示以下意思:
- 由於 Cloud Service Mesh 用戶端會以分散方式處理健康狀態檢查,因此可能會因為健康狀態檢查而導致網路流量增加。這項數量會因 Cloud Service Mesh 用戶端的數量,以及每個用戶端需要進行健康檢查的端點數量而異。例如:
- 將其他端點新增至混合式連線 NEG 後,現有的 Cloud Service Mesh 用戶端可能會開始檢查混合式連線 NEG 中的端點健康狀態。
- 當您在服務網狀結構中新增其他執行個體 (例如執行應用程式程式碼的 VM 執行個體,以及 Cloud Service Mesh 用戶端) 時,新執行個體可能會開始在混合連線 NEG 中檢查端點的健康狀況。
- 健康狀態檢查的網路流量以二次方 (
O(n^2)
) 的速度增加。
虛擬私有雲網路
服務中介網的唯一識別資訊是其虛擬私有雲 (VPC) 網路名稱。Cloud Service Mesh 用戶端會根據引導設定中指定的 VPC 網路,從 Cloud Service Mesh 接收設定。因此,即使您的網格完全位於Google Cloud 資料中心之外,您仍必須在引導設定中提供有效的 VPC 網路名稱。
服務帳戶
在 Google Cloud中,預設的 Envoy 引導程序會設定為讀取 Compute Engine 和 GKE 部署環境 (或兩者) 中的服務帳戶資訊。在Google Cloud以外執行時,您必須在 Envoy 引導程序中明確指定服務帳戶、網路名稱和專案編號。這個服務帳戶必須具備足夠的權限,才能連線至 Cloud Service Mesh API。
後續步驟
- 如要為地端和多雲端部署項目設定 Cloud Service Mesh,請參閱「適用於多環境部署項目的網路邊緣服務」。
- 如要進一步瞭解 Cloud Service Mesh,請參閱 Cloud Service Mesh 總覽。
- 如要瞭解網際網路 NEG,請參閱「搭配網際網路網路端點群組的 Cloud Service Mesh」。