搭配混合式連線網路端點群組的 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
無 Proxy 的 gRPC 用戶端不支援混合式連線 NEG (NON_GCP_PRIVATE_IP_PORT
NEG)。
用途
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 將所有流量傳送至 on-prem
服務,而是設定 Cloud Service Mesh 使用加權流量拆分功能,將流量拆分至兩個服務。
流量分配功能可讓您先將 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的網路。當流量抵達負載平衡器時,您可以套用網路邊緣服務,例如 Cloud Armor DDoS 防護或 Identity-Aware Proxy (IAP) 使用者驗證。詳情請參閱「適用於多環境部署項目的網路邊緣服務」。
套用這些服務後,流量會在Google Cloud短暫停留,然後應用程式或獨立 Proxy (由 Cloud Service Mesh 設定) 會透過 Cloud VPN 或 Cloud Interconnect 將流量轉送至內部部署服務。
Google Cloud 資源和架構
本節提供相關資源的背景資訊,協助您為地端和多雲環境提供 Cloud Service Mesh 管理的服務網格。 Google Cloud
下圖顯示 Google Cloud 可支援 Cloud Service Mesh 的資源,包括地端和多雲端服務。主要資源是 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 的分散式健康狀態檢查機制。詳情請參閱「限制和其他注意事項」一節。
連線和網路注意事項
Envoy Proxy 等 Cloud Service Mesh 用戶端必須能夠連線至 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 端點)。網址對應可包含規則 (例如以權重為依據的流量拆分),將流量分配到各個後端服務。
搭配使用 NEG 與 NON_GCP_PRIVATE_IP_PORT
類型的端點和 Google Cloud 後端
您可以建立後端服務,並使用指向 Google Cloud後端的混合式連線 NEG。不過,我們不建議採用這種模式,因為混合式連線 NEG 無法從集中式健康狀態檢查獲益。如要瞭解集中式健康狀態檢查和分散式健康狀態檢查,請參閱「健康狀態檢查」一節。
端點註冊
如要將端點新增至 NEG,必須更新 NEG。您可以手動執行這項操作,也可以使用 NEG REST API 或 Google Cloud CLI 自動執行。 Google Cloud
當服務的新執行個體啟動時,您可以使用 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)
) 速率增加。
虛擬私有雲網路
服務網格的專屬 ID 是虛擬私有雲 (VPC) 網路名稱。Cloud Service Mesh 用戶端會根據啟動設定中指定的虛擬私有雲網路,從 Cloud Service Mesh 接收設定。因此,即使網格完全位於資料中心外部,您也必須在啟動程序設定中提供有效的 VPC 網路名稱。Google Cloud
服務帳戶
在 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 with internet network endpoint groups」(使用網際網路網路端點群組的 Cloud Service Mesh)。