內部直通式網路負載平衡器是區域性負載平衡器,可讓您透過內部 IP 位址執行服務及調度服務資源。您可以將內部直通式網路負載平衡器做為下一個躍點,封包會沿著路徑轉送至最終目的地。如要這麼做,請在靜態路徑中,將負載平衡器設為下一個躍點。
在查看本頁面的資訊之前,您應已熟悉下列概念:
在下列情況中,內部直通式網路負載平衡器下一個躍點很有用:
在多個做為閘道或路由器 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 自訂 advertisement 模式。路線通告的範圍取決於負載平衡器的全域存取設定,如下所示:
停用全域存取權後,只有與負載平衡器位於同一區域的 VM、Cloud VPN 通道和 Cloud Interconnect 連結 (VLAN) 才能使用內部直通式網路負載平衡器。因此,只有在 Cloud Router 和負載平衡器位於相同區域時,自訂通告靜態路徑前置字元才有意義。
啟用全域存取權後,任何區域的 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則是轉送規則的名稱。透過資源連結指定下一個躍點轉送規則時,轉送規則的網路必須與路由的虛擬私有雲網路相符。轉送規則可位於任一專案,包括含有轉送規則網路的專案 (獨立專案或共用虛擬私有雲主專案),或共用虛擬私有雲服務專案。透過轉送規則 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_NO_DESTINATION。
工作階段相依性會決定要將哪些封包特徵雜湊處理,以選取符合資格的後端。對稱雜湊是指 Google Cloud會為資料流雙向的封包計算相同的雜湊碼;當來源 IP 位址:通訊埠與目的地 IP 位址:通訊埠互換時,雜湊碼不會變更。由於對稱式雜湊需要包含目的地 IP 位址或目的地 IP 位址:通訊埠資訊的工作階段相依性設定,因此您可以使用
CLIENT_IP_NO_DESTINATION以外的任何工作階段相依性。兩個負載平衡器必須以相同方式追蹤連線。這會產生下列結果:
兩個負載平衡器都必須使用相同的連線追蹤模式 (
PER_CONNECTION或PER_SESSION)。這樣可避免一個負載平衡器將多個連線分組到相同的連線追蹤資料表項目,而另一個負載平衡器則不會。兩個負載平衡器都應使用相同的閒置逾時和連線持續性設定 (適用於健康狀態不良的後端)。
用戶端和伺服器需求
如果您設定下一個躍點內部直通式網路負載平衡器時使用可用區親和性,請仔細考量可用區親和性對同一連線的用戶端到伺服器和伺服器到用戶端流程有何影響。如果需要讓相同連線的兩個方向都由同一個後端 VM 處理封包,則支援下列放置選項:
用戶端、伺服器和後端 VM 位於同一可用區:採用這種放置方式時,每個負載平衡器修改後的適用後端可能相同 (須符合負載平衡器需求),因為兩個方向都會發生區域相符情形。連線的用戶端至伺服器封包流程,可與對應的伺服器至用戶端流程使用相同的後端。
沒有後端 VM 的可用區 (或可用區) 中的用戶端和伺服器 VM: 採用這種刊登位置時,封包在用戶端和伺服器之間傳送時,永遠無法進行可用區比對,因此可用區親和性不會影響原始符合資格的後端。
後端需求
您必須將所有內部直通式網路負載平衡器的後端 VM 設定為允許 IP 轉送 (
--can-ip-forward = True)。詳情請參閱「執行個體和內部直通式網路負載平衡器下一個躍點的常見注意事項」。您無法使用後端為 Google Kubernetes Engine (GKE) 節點的內部直通式網路負載平衡器,做為靜態路徑的下一個躍點。節點上的軟體只能將流量路由至目的地符合叢集所管理 IP 位址的 Pod,而不能路由至任意目的地。
用途
在多個部署作業和拓撲中,您可以使用內部直通式網路負載平衡器做為下一個躍點。
請注意每個範例的下列規範:
在這些範例中,每個 VM 的網路介面都位於不同的虛擬私有雲網路。
您無法使用後端 VM 或負載平衡器,在同一個虛擬私有雲網路的子網路之間轉送流量,因為子網路路徑無法覆寫。
內部直通式網路負載平衡器是軟體定義的直通式負載平衡器。封包會傳送至後端 VM,且來源或目的地資訊 (地址或地址和連接埠) 不會變更。
路由、封包篩選、Proxy 和位址轉譯等作業,是由做為內部直通式網路負載平衡器後端的虛擬設備 VM 負責。
使用內部直通式網路負載平衡器做為 NAT 閘道的下一個躍點
這個應用實例會平衡內部 VM 產生的負載,並將流量分配至多個 NAT 閘道執行個體,由這類執行個體負責將流量轉送至網際網路。
中樞與輪輻:使用虛擬私有雲網路對等互連交換下一個躍點路徑
除了交換子網路路徑,您也可以設定 VPC 網路對等互連,匯出及匯入自訂靜態和動態路徑。下一個躍點為預設網際網路閘道的靜態路由會遭到排除。包括使用下一個躍點內部直通式網路負載平衡器的自訂靜態路由。
您可以透過下列方式,在 hub 虛擬私有雲網路中設定下一個躍點防火牆虛擬設備,建立中樞和輪輻拓撲:
- 在
hub虛擬私有雲網路中,建立內部直通式網路負載平衡器,並以防火牆虛擬設備做為後端。 - 在
hub虛擬私有雲網路中建立靜態路由,並將下一個躍點設為內部直通式網路負載平衡器。 - 使用 VPC 網路對等互連,將
hub虛擬私有雲網路連線至每個spoke虛擬私有雲網路。 - 針對每個對等互連,請將
hub網路設為匯出自訂路徑,並將對應的spoke網路設為匯入自訂路徑。具有負載平衡器下一個躍點的路由,是hub網路匯出的其中一個路由。
視轉送順序而定,輪輻網路中會提供 hub 虛擬私有雲網路中的下一個躍點防火牆設備負載平衡器:
- 如果停用全域存取權,則只能連線至與負載平衡器位於相同區域的用戶端
- 如果啟用全域存取權,則會根據路由順序,將流量傳送至所有區域的用戶端。
將負載平衡至多個 NIC
在下列應用情境中,後端 VM 是虛擬設備執行個體 (例如封包檢查、路由或閘道 VM),且 NIC 位於多個 VPC 網路中。這些虛擬設備執行個體可以是第三方提供的商業解決方案,也可以是您自行建構的解決方案。虛擬設備是具備多個 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 執行個體群組後端設定內部直通式網路負載平衡器」。
- 如要排解內部直通式網路負載平衡器的下一個躍點問題,請參閱「排解內部直通式網路負載平衡器問題」。