內部直通式網路負載平衡器是一種區域負載平衡器,可讓您透過內部 IP 位址執行服務及調度資源。內部直通式網路負載平衡器有另外一個應用實例,那就是依據路徑將封包轉送至最終目的地時使用的下一個躍點。如要這麼做,請將負載平衡器設為靜態路徑中的「下一個躍點」。
查看本頁資訊之前,您應該先熟悉下列概念:
在下列情況中,內部直通式網路負載平衡器下一個躍點非常實用:
在多個 VM 之間平衡負載,這些 VM 會做為閘道或路由器 VM 運作。
將閘道虛擬設備做為預設路徑的下一個躍點。完成這項設定後,虛擬私有雲 (VPC) 網路中的虛擬機器 (VM) 執行個體,就會透過一組已平衡負載的虛擬閘道 VM,將流量傳送至網際網路。
使用同一組多重 NIC 閘道或路由器 VM 做為後端,透過多個負載平衡器以兩個或多個方向傳送流量。如要這麼做,請建立負載平衡器,並將其做為每個虛擬私有雲網路中靜態路徑的下一個躍點。每個內部直通式網路負載平衡器都在單一虛擬私有雲網路中運作,並將流量分配到該網路中後端 VM 的網路介面。
架構
在下圖中,路由器 VM 的 VM 執行個體群組會做為兩個不同負載平衡器的後端。第一個內部直通式網路負載平衡器會將封包傳送至後端 VM 的 nic0,第二個內部直通式網路負載平衡器則會將封包傳送至相同後端的 nic1。
使用內部直通式網路負載平衡器當做下一個躍點的優勢
如果負載平衡器是靜態路徑的下一個躍點,您不需要在定義路徑的虛擬私有雲網路中,對用戶端 VM 的客體作業系統進行特殊設定。用戶端 VM 會透過虛擬私有雲網路路由,以bump-in-the-wire的方式,將封包傳送至負載平衡器的後端。
只要使用內部直通式網路負載平衡器當做靜態路徑的下一個躍點,您就能享有獨立內部直通式網路負載平衡器可帶來的同等優勢。有了負載平衡器的健康狀態檢查功能,您就能確保新的連線會轉送至健康狀態良好的後端 VM。將代管執行個體群組做為後端,即可設定自動調度資源功能,依據服務需求擴充或縮減 VM 組合。
規格
以下是使用內部直通式網路負載平衡器做為下一個躍點的規格。
路徑
您可以建立靜態路徑,將 TCP、UDP 和其他通訊協定流量傳送至內部直通式網路負載平衡器,讓這個負載平衡器成為靜態路徑的下一個躍點。這個路徑可以是外部 (可公開轉送) CIDR 前置字串,或是內部 CIDR 前置字串,只要前置字串與子網路路徑不衝突即可。舉例來說,您可以將預設路徑 (0.0.0.0/0) 替換為可將流量導向至第三方後端 VM 的路徑,以便進行封包處理。
指定下一個躍點的選項
您可以透過下列兩種方式之一,指定內部直通式網路負載平衡器下一個躍點:
- 使用轉送規則的名稱和區域
- 使用轉送規則的 IP 位址
如要瞭解內部直通式網路負載平衡器下一個躍點可位於哪個專案和虛擬私有雲網路,請參閱「下一個躍點和功能」。
您可以使用 VPC 網路對等互連,與內部直通式網路負載平衡器下一個躍點交換靜態路徑。詳情請參閱「交換靜態路由的選項」。
目的地範圍
靜態路徑的目的地不能與子網路路徑相同或更加明確。請注意,「更具體」表示子網路遮罩較長。這項規則適用於所有靜態路由,包括下一個躍點為內部直通式網路負載平衡器的路由。舉例來說,假設您的子網路路徑為 10.140.0.0/20。靜態路徑的目的地不能相同 (10.140.0.0/20),也不能更明確,如 10.140.0.0/22 所示。
相同的虛擬私有雲網路和區域
使用內部直通式網路負載平衡器做為下一個躍點的靜態路徑有下列限制:
單一虛擬私有雲網路。負載平衡器和靜態路徑必須位於相同的虛擬私有雲網路。
單一區域或所有區域。除非您設定全域存取權,否則靜態路徑只能供與負載平衡器位於相同區域的資源使用。即使路徑本身是整個虛擬私有雲網路路徑表的一部分,這項區域限制也同樣適用。啟用全域存取權後,任何區域的資源都能使用靜態路由。
通告靜態路徑
如要通告靜態路由的前置字串 (目的地),可以使用 Cloud Router 的自訂通告模式。路徑通告的範圍取決於負載平衡器的全域存取設定,如下所示:
停用全域存取權後,只有與負載平衡器位於相同區域的 VM、Cloud VPN 通道和 Cloud Interconnect 連結 (VLAN) 才能使用內部直通式網路負載平衡器。因此,只有在 Cloud Router 和負載平衡器位於相同區域時,靜態路由前置字元的自訂路由 advertisement 才有意義。
啟用全域存取權後,任何區域的 VM、Cloud VPN 通道和 Cloud Interconnect 連結 (VLAN) 都能使用內部直通式網路負載平衡器。啟用全域動態路由後,地端部署系統就能使用任何已連線區域的靜態路由。
下表摘要列出負載平衡器的可存取性。
| 全域存取權 | 虛擬私有雲網路動態轉送模式 | 負載平衡器存取權 |
|---|---|---|
| 已停用 | 區域 | 可由相同區域中的路由器存取 |
| 已停用 | 全球 | 可由相同區域中的路由器存取 |
| 已啟用 | 區域 | 任何區域中的所有路由器都能存取 |
| 已啟用 | 全球 | 任何區域中的所有路由器都能存取 |
詳情請參閱內部直通式網路負載平衡器和已連線網路。
作業順序
您必須先建立內部直通式網路負載平衡器,才能建立將其做為下一個躍點的靜態路徑。您必須先建立負載平衡器,才能建立路徑。如果您嘗試建立的路徑參照不存在的負載平衡器, Google Cloud 會傳回錯誤。
如要指定內部直通式網路負載平衡器下一個躍點,請使用轉送規則名稱和負載平衡器區域,或使用與轉送規則相關聯的內部 IP 位址。
建立下一個躍點參照內部直通式網路負載平衡器的路徑之後,您必須先刪除路徑才能刪除該負載平衡器。具體來說,除非沒有任何靜態路徑使用該負載平衡器做為下一個躍點,否則您不得刪除內部轉送規則。
處理 TCP、UDP 和其他通訊協定流量
當內部直通式網路負載平衡器部署為下一個躍點時, Google Cloud會將所有通訊埠的所有流量轉送至後端 VM,無論:
- 轉送規則的通訊協定和通訊埠設定
- 後端服務的通訊協定設定
內部直通式網路負載平衡器是路徑的下一個躍點,可順暢地轉送虛擬私有雲網路支援的所有通訊協定流量 (例如 TCP、UDP 和 ICMP)。 Google Cloud
其他事項
支援的轉送規則。 Google Cloud 僅支援下一個躍點內部直通式網路負載平衡器轉送規則。 Google Cloud 不支援其他負載平衡器、通訊協定轉送或 Private Service Connect 端點使用的下一個躍點轉送規則。
指定方法和轉送規則網路和專案。您可以使用下列三種方法之一,指定下一個躍點轉送規則。您使用的指定方法會決定轉送規則的網路是否必須與路徑的網路相符,以及轉送規則可位於哪個專案。
請選擇下列其中一種方法,並確保轉送規則的 IP 版本與您建立的靜態路徑 IP 版本相符:
依據轉送規則名稱 (
--next-hop-ilb) 和區域 (--next-hop-ilb-region):依據名稱和區域指定下一個躍點轉送規則時,轉送規則的網路必須與路徑的虛擬私有雲網路相符。轉送規則必須位於與轉送規則網路相同的專案中 (獨立專案或共用虛擬私有雲主專案)。透過轉送規則資源連結:轉送規則的資源連結採用
/projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE_NAME格式,其中PROJECT_ID是包含轉送規則的專案 ID,REGION是轉送規則的區域,而FORWARDING_RULE_NAME則是轉送規則的名稱。透過資源連結指定下一個躍點轉送規則時,轉送規則的網路必須與路由的 VPC 網路相符。轉送規則可位於任一專案,該專案包含轉送規則的網路 (獨立專案或共用虛擬私有雲主專案),或共用虛擬私有雲服務專案。透過轉送規則 IP 位址:以 IPv4 或 IPv6 位址指定下一個躍點轉送規則時,轉送規則的網路可以是路由的虛擬私有雲網路,也可以是透過虛擬私有雲網路對等互連或 NCC 連線至路由虛擬私有雲網路的虛擬私有雲網路。NCC 支援虛擬私有雲輪輻中的下一個躍點內部直通式網路負載平衡器,但須符合連線的 NCC 需求。轉送規則可位於任一專案,該專案包含轉送規則的網路 (獨立專案或共用虛擬私有雲主專案),或共用虛擬私有雲服務專案。
全域存取權的影響。使用內部直通式網路負載平衡器下一個躍點的自訂靜態路徑,會在所有區域中進行程式設計。下一個躍點是否可用取決於負載平衡器的全域存取權設定。啟用全域存取權後,虛擬私有雲網路的所有區域都能存取負載平衡器下一個躍點。如果停用全域存取權,只有與負載平衡器位於相同區域的負載平衡器下一個躍點可供存取。如果停用全域存取權,從其他區域傳送至使用內部直通式網路負載平衡器下一個躍點的路由時,封包會遭到捨棄。
所有後端健康狀態不良時。當內部直通式網路負載平衡器的所有後端都無法通過健康狀態檢查時,使用該負載平衡器下一個躍點的路由仍會生效。路徑處理的封包會根據流量分配,傳送至下一個躍點負載平衡器的其中一個後端。
不支援使用共用內部 IP 位址的轉送規則 (
--purpose=SHARED_LOADBALANCER_VIP)。下一個躍點內部直通式網路負載平衡器,以及使用通用 IP 位址參照不同後端服務 (不同內部直通式網路負載平衡器) 的內部直通式網路負載平衡器轉送規則,是互斥功能。下一個躍點內部直通式網路負載平衡器必須使用負載平衡器轉送規則專屬的 IP 位址,這樣才能明確參照單一後端服務 (一個負載平衡器)。如果傳送至下一個躍點的內部直通式網路負載平衡器已設定共用 IP 位址,流量會遭到捨棄,且不會顯示任何訊息。多個路由的目的地和優先順序相同,但下一個躍點內部直通式網路負載平衡器不同。 Google Cloud 絕不會使用 ECMP,將流量分配到兩個以上的下一個躍點內部直通式網路負載平衡器。 Google Cloud會使用內部演算法選取單一下一個躍點內部直通式網路負載平衡器,且Google Cloud 無法保證一律選取同一個下一個躍點內部直通式網路負載平衡器。最佳做法是在同一個虛擬私有雲網路中,不要建立兩個以上的靜態路由,因為這類路由只會因下一個躍點內部直通式網路負載平衡器而有所不同。
多個路由的目的地、優先順序和下一個躍點內部直通式網路負載平衡器相同。如果沒有網路標記, Google Cloud 就不允許您建立多個靜態路徑,這些路徑的目的地、優先順序和內部直通式網路負載平衡器下一個躍點的組合相同。使用網路標記,您可以建立多個靜態路徑,這些路徑的目的地、優先順序和內部直通式網路負載平衡器下一個躍點組合相同。
需求條件
如要透過兩個使用相同後端 VM 的內部直通式網路負載平衡器傳送流量,必須符合下列需求。在這種情況下,後端 VM 有兩個負載平衡網路介面,每個負載平衡器各使用一個介面。每個介面都位於不同的虛擬私有雲網路,且每個虛擬私有雲網路都有靜態路由,使用其中一個負載平衡器做為下一個躍點。如果後端 VM 執行路由、防火牆或 Proxy 功能,這就是常見的設定。
負載平衡器需求
兩個負載平衡器必須具有相同的合格後端集。請注意,您會在後端選取和連線追蹤程序的步驟 2.1 和 2.2 之後,抵達符合資格的後端集合。
這會產生下列結果:
兩個負載平衡器都必須停用容錯移轉功能,或都必須啟用容錯移轉功能。如果啟用這項功能,兩個負載平衡器必須採用相同的容錯移轉政策。
後端必須同時通過或同時未通過兩個負載平衡器的健康狀態檢查。
- 兩個負載平衡器必須具有相同的區域親和性設定。
兩個負載平衡器都必須以相同方式選取符合資格的後端。 也就是說,兩個負載平衡器都必須使用相同的工作階段相依性設定,因為工作階段相依性會決定要對哪些封包特徵進行雜湊處理,以選取符合資格的後端。
如果工作階段相依性為
CLIENT_IP、CLIENT_IP_PROTO、CLIENT_IP_PORT_PROTO,即使發生下列情況,負載平衡器也會計算出相同的封包雜湊:- 來源 IP 位址與目的地 IP 位址互換
- 來源通訊埠與目的地通訊埠對調
兩個負載平衡器必須以相同方式追蹤連線。這會產生下列結果:
兩個負載平衡器都必須使用相同的連線追蹤模式 (
PER_CONNECTION或PER_SESSION)。這樣可避免其中一個負載平衡器將多個連線分組到同一個連線追蹤資料表項目,而另一個負載平衡器則不會。兩個負載平衡器都應使用相同的閒置逾時和連線持續性 (適用於不正常的後端) 設定。
用戶端和伺服器需求
如果您設定具有區域親和性的下一躍點內部直通式網路負載平衡器,請仔細考量區域親和性如何影響同一連線的用戶端到伺服器和伺服器到用戶端流程。如果您需要讓相同連線的兩個方向都由同一個後端 VM 處理封包,系統支援下列放置選項:
用戶端、伺服器和後端 VM 都位於相同區域:採用這種放置方式時,每個負載平衡器修改後的適用後端可以相同 (須符合負載平衡器需求),因為兩個方向都會發生區域相符情形。連線的用戶端到伺服器封包流程,可以與對應的伺服器到用戶端流程使用相同的後端。
用戶端和伺服器 VM 位於沒有後端 VM 的可用區 (或可用區):採用這種刊登位置時,封包在用戶端和伺服器之間傳送時,永遠無法進行可用區比對,因此可用區親和性不會影響原始符合資格的後端。
後端需求
您必須將所有內部直通式網路負載平衡器的後端 VM 設定為允許 IP 轉送 (
--can-ip-forward = True)。詳情請參閱執行個體和內部直通式網路負載平衡器下一個躍點的常見注意事項。您無法使用後端為 Google Kubernetes Engine (GKE) 節點的內部直通式網路負載平衡器,做為靜態路徑的下一個躍點。節點上的軟體只能將流量傳送至與叢集管理的 IP 位址相符的 Pod,而不能傳送至任意目的地。
用途
您可以在多項部署作業和拓撲中,將內部直通式網路負載平衡器當做下一個躍點。
請注意下列各範例的規範:
在這些範例中,每個 VM 的網路介面都位於不同的 VPC 網路。
在同一個虛擬私有雲網路的不同子網路之間,您無法使用後端 VM 或負載平衡器來轉送流量,這是因為系統無法覆寫子網路路徑。
內部直通式網路負載平衡器屬於軟體定義型直接傳輸負載平衡器。封包會傳送至後端 VM,且來源或目的地資訊 (地址或地址和連接埠) 不會變更。
路由、封包篩選、Proxy 和位址轉譯等作業,是由做為內部直通式網路負載平衡器後端的虛擬設備 VM 負責。
使用內部直通式網路負載平衡器做為 NAT 閘道的下一個躍點
這個應用實例會平衡內部 VM 產生的負載,並將流量分配至多個 NAT 閘道執行個體,由這類執行個體負責將流量轉送至網際網路。
中樞與輪輻:使用 VPC 網路對等互連交換下一個躍點路徑
除了交換子網路路徑,您也可以設定 VPC 網路對等互連,匯出及匯入自訂靜態和動態路徑。下一個躍點為預設網際網路閘道的靜態路徑會遭到排除。包括使用下一個躍點內部直通式網路負載平衡器的自訂靜態路由。
您可以設定軸輻式拓撲,不過下一個躍點防火牆虛擬設備必須位於 hub 虛擬私有雲網路,方法如下:
- 在
hub虛擬私有雲網路中,建立內部直通式網路負載平衡器,並以防火牆虛擬設備做為後端。 - 在
hub虛擬私有雲網路中建立靜態路徑,並將下一個躍點設為內部直通式網路負載平衡器。 - 使用 VPC 網路對等互連,將
hub虛擬私有雲網路連線至每個spoke虛擬私有雲網路。 - 針對每個對等互連,將
hub網路設定為匯出自訂路徑,並將對應的spoke網路設定為匯入自訂路徑。具有負載平衡器下一個躍點的路徑,是hub網路匯出的路徑之一。
根據轉送順序,輻式網路中會提供 hub VPC 網路中的下一個躍點防火牆設備負載平衡器:
- 如果停用全域存取權,則僅限與負載平衡器位於相同區域的用戶端
- 如果啟用全域存取權,則會根據路由順序,將流量傳送至所有區域的用戶端。
將負載平衡至多個 NIC
在下列應用實例中,後端 VM 是虛擬設備執行個體 (例如封包檢查、路由或閘道 VM),且具備多個虛擬私有雲網路中的 NIC。這些虛擬設備執行個體可以是第三方提供的商業解決方案,也可以是您自行建構的解決方案。虛擬設備是具備多個 NIC 的 Compute Engine VM。
這個範例顯示代管 VM 執行個體群組中的單一後端虛擬設備集。
在名為 testing 的虛擬私有雲網路中,內部直通式網路負載平衡器具有名為 fr-ilb1 的轉送規則。在這個範例中,負載平衡器會將流量分配至 nic0 介面。
在名為 production 的虛擬私有雲網路中,另一個內部直通式網路負載平衡器具有名為 fr-ilb2 的轉送規則。這個負載平衡器會將流量分配到不同的介面,在本例中為 nic1。
如需詳細設定,請參閱「負載平衡至多個後端 NIC」。
對稱雜湊
上述範例未使用來源網路位址轉譯 (SNAT)。 Google Cloud 使用對稱雜湊,因此不需要 SNAT。也就是說,如果封包屬於同一個流程,Google Cloud 會計算出相同的雜湊值。換句話說,如果來源 IP 位址:通訊埠與目的地 IP 位址:通訊埠互換,雜湊碼不會變更。
注意:
自 2021 年 6 月 22 日起,建立內部直通式網路負載平衡器轉送規則時,系統會自動啟用對稱雜湊。
如要在現有的內部直通式網路負載平衡器上啟用對稱雜湊,請按照「啟用對稱雜湊」一文所述,重新建立轉送規則和下一個躍點路徑。
對稱雜湊僅支援內部直通式網路負載平衡器。
針對 TCP 和 UDP 通訊協定,下列工作階段相依性類型支援對稱雜湊:
- 用戶端 IP (
CLIENT_IP) - 用戶端 IP 和通訊協定 (
CLIENT_IP_PROTO) - 用戶端 IP、通訊協定和通訊埠 (
CLIENT_IP_PORT_PROTO)
如要進一步瞭解這些設定,請參閱「工作階段相依性選項」。
- 用戶端 IP (
如果您的使用案例因故需要 SNAT,也可以選擇使用。
後續步驟
- 如要將內部直通式網路負載平衡器設定為下一個躍點,請參閱針對第三方設備設定內部直通式網路負載平衡器,或使用負載平衡器做為下一個躍點,部署中樞輻射型網路。
- 如要設定及測試內部直通式網路負載平衡器,請參閱「使用 VM 執行個體群組後端設定內部直通式網路負載平衡器」。
- 如要排解內部直通式網路負載平衡器的下一個躍點問題,請參閱「排解內部直通式網路負載平衡器問題」。