搭配混合式連線網路端點群組的 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 VPNCloud Interconnect 傳送至預期目的地。

如果需要新增更多端點,請更新 Cloud Service Mesh,將這些端點新增至服務。您無需變更應用程式程式碼。

將現有的內部部署服務遷移至 Google Cloud

將流量傳送至非Google Cloud 端點,即可將流量轉送至其他環境。您可以將這項功能與進階流量管理結合,在不同環境之間遷移服務。

從內部部署位置遷移至 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 設定中設定的資源。為求簡單明瞭,圖表中並未顯示多個全球後端服務等選項。

適用於內部部署和多雲端服務的 Compute Engine 資源。
適用於內部部署和多雲服務的 Compute Engine 資源 (按一下可放大)

設定 Cloud Service Mesh 時,您會使用全域後端服務 API 資源建立服務。服務是邏輯結構,結合了以下項目:

  1. 用戶端嘗試將流量傳送至服務時要套用的政策。
  2. 一或多個後端或端點,用於處理服務的目標流量。

在地端部署和多雲端服務與 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

後續步驟