外部直通式網路負載平衡器是區域性第 4 層負載平衡器,可將外部流量分配給負載平衡器所在區域中的後端 (執行個體群組或網路端點群組 (NEG))。這些後端必須位於相同的區域和專案,但可以位於不同的虛擬私有雲網路。這些負載平衡器是建構在 Maglev 和 Andromeda 網路虛擬堆疊 上。
外部直通式網路負載平衡器可接收來自下列來源的流量:
- 網際網路上的任何用戶
- Google Cloud 具備外部 IP 的 VM
- Google Cloud 可透過 Cloud NAT 或執行個體 NAT 存取網際網路的 VM
外部直通式網路負載平衡器不是 Proxy。負載平衡器本身不會終止使用者連線,負載平衡封包會傳送至後端 VM,且來源和目的地 IP 位址、通訊協定和 (如適用) 通訊埠皆維持不變。後端 VM 隨後會終止使用者連線。來自後端 VM 的回應會直接傳送至用戶端,而不會返回經過負載平衡器。這個程序稱為伺服器直接回傳 (DSR)。
後端服務型外部直通式網路負載平衡器支援下列功能:
- 代管和非代管執行個體群組後端。後端服務型外部直通式網路負載平衡器支援以代管和非代管的執行個體群組做為後端。代管執行個體群組可自動執行特定的後端管理作業,相較於未管理的執行個體群組,可提供更佳的可擴充性和可靠性。
- 可用區 NEG 後端。後端服務型外部直通式網路負載平衡器支援使用可用區 NEG 和
GCE_VM_IP
端點。區域性 NEGGCE_VM_IP
端點可讓您執行下列操作:- 將封包轉送至任何網路介面,而非只轉送至
nic0
。 - 將相同的
GCE_VM_IP
端點放置在連結至不同後端服務的兩個或更多可用區 NEG。
- 將封包轉送至任何網路介面,而非只轉送至
- 支援多個通訊協定。後端服務型外部直通式網路負載平衡器可負載平衡 TCP、UDP、ESP、GRE、ICMP 和 ICMPv6 流量。
- 支援 IPv6 連線。後端服務型外部直通式網路負載平衡器可同時處理 IPv4 和 IPv6 流量。
- 精細的流量分配控管。後端服務可根據所設定的工作階段相依性、連線追蹤政策和加權負載平衡設定,分配流量。您也可以設定後端服務,啟用連線排除功能,並指定負載平衡器的備援後端。這些設定大多有預設值,可讓您快速開始使用。詳情請參閱「外部直通網路負載平衡器的流量分配」。
- 支援非舊版健康狀態檢查。後端服務型外部直通網路負載平衡器可讓您使用與所分配流量類型 (TCP、SSL、HTTP、HTTPS 或 HTTP/2) 相符的健康狀態檢查。
- Google Cloud Armor 整合。Google Cloud Armor 支援外部直通式網路負載平衡器的進階網路 DDoS 防護功能。詳情請參閱「設定進階的網路分散式阻斷服務防護功能」。
GKE 整合。如果您要在 GKE 中建構應用程式,建議您使用內建的 GKE 服務控制器,該控制器會代表 GKE 使用者部署Google Cloud 負載平衡器。這與本頁所述的獨立負載平衡架構相同,唯一的差異在於其生命週期是全自動的,並由 GKE 控制。
相關的 GKE 說明文件:
架構
下圖說明外部直通式網路負載平衡器的元件:
負載平衡器由多個設定元件組成。單一負載平衡器可具備下列功能:
- 一或多個區域外部 IP 位址
- 一或多項地區外部轉送規則
- 一個區域性外部後端服務
- 一或多個後端:所有執行個體群組或所有區域 NEG 後端 (
GCE_VM_IP
端點) - 與後端服務相關聯的健康狀態檢查
此外,您必須建立防火牆規則,允許負載平衡流量和健康狀態檢查探測器存取後端 VM。
IP 位址
外部直通式網路負載平衡器至少需要一個轉送規則。轉送規則參照的是可從網際網路上的任何位置存取的地區性外部 IP 位址。
- 對於 IPv4 流量,轉送規則會參照單一區域外部 IPv4 位址。地區性外部 IPv4 位址來自各個 Google Cloud 地區專屬的集區。IP 位址可以是已保留的靜態位址或臨時位址。
針對 IPv6 流量,轉送規則會參照雙重堆疊或僅限 IPv6 (預先發布版) 子網路的
/96
範圍 IPv6 位址。子網路必須在虛擬私有雲網路中指派外部 IPv6 子網路範圍。外部 IPv6 位址僅適用於進階級。如要進一步瞭解 IPv6 支援功能,請參閱 VPC 說明文件,瞭解 IPv6 子網路範圍和 IPv6 位址。
如果您需要保留與專案相關聯的地址,以便在刪除轉送規則後重複使用,或是需要多個轉送規則參照相同的 IP 位址,請為轉送規則使用預留的 IP 位址。
外部直通式網路負載平衡器支援標準級和進階級,適用於地區性外部 IPv4 位址。IP 位址和轉送規則都必須使用相同的網路級別。地區性外部 IPv6 位址僅適用於進階級。
轉送規則
地區性外部轉送規則會指定負載平衡器接收流量的通訊協定和通訊埠。由於外部直通式網路負載平衡器不是 Proxy,因此如果封包載有通訊埠資訊,就會將流量傳送至使用相同通訊協定和通訊埠的後端。轉送規則與 IP 位址組合後,就會形成負載平衡器的前端。
負載平衡器會保留傳入封包的來源 IP 位址。封包的目的地 IP 位址是與負載平衡器轉送規則關聯的 IP 位址。
傳入流量會與轉送規則相符,轉送規則是特定 IP 位址 (IPv4 位址或 IPv6 位址範圍) 和通訊協定的組合,如果通訊協定是基於通訊埠,則是其中一個通訊埠、一組通訊埠或所有通訊埠。然後轉送規則會將流量導向負載平衡器的後端服務。
如果轉送規則參照 IPv4 位址,則轉送規則不會與任何子網路建立關聯。也就是說,其 IP 位址來自任何Google Cloud 子網路範圍以外的區域。
如果轉送規則參照
/96
IPv6 位址範圍,則轉送規則必須與子網路建立關聯,且該子網路必須 (a) 為雙層堆疊,以及 (b) 具有外部 IPv6 子網路範圍 (--ipv6-access-type
設為EXTERNAL
)。轉送規則參照的子網路可以是後端執行個體使用的子網路;不過,如果選擇,後端執行個體可以使用不同的子網路。當後端執行個體使用不同的子網路時,必須符合下列條件:
外部直通式網路負載平衡器至少需要一個轉送規則。您可以設定轉送規則,將來自特定來源 IP 位址範圍的流量導向特定後端服務 (或目標執行個體)。詳情請參閱「流量引導」。您可以為同一個負載平衡器定義多個轉送規則,如「多個轉送規則」一節所述。
如果您希望負載平衡器同時處理 IPv4 和 IPv6 流量,請建立兩個轉送規則:一個規則用於 IPv4 流量,指向 IPv4 (或雙重堆疊) 後端,另一個規則用於 IPv6 流量,僅指向雙重堆疊後端。IPv4 和 IPv6 轉送規則可以參照相同的後端服務,但後端服務必須參照雙重堆疊後端。
轉送規則通訊協定
外部直通式網路負載平衡器支援下列通訊協定選項,可用於各轉送規則:TCP
、UDP
和 L3_DEFAULT
。
使用 TCP
和 UDP
選項設定 TCP 或 UDP 負載平衡。L3_DEFAULT
通訊協定選項可讓外部直通網路負載平衡器負載平衡 TCP、UDP、ESP、GRE、ICMP 和 ICMPv6 流量。
除了支援 TCP 和 UDP 以外的通訊協定,L3_DEFAULT
還可讓單一轉送規則提供多個通訊協定。舉例來說,IPsec 服務通常會處理 ESP 和以 UDP 為基礎的 IKE 和 NAT-T 流量組合。L3_DEFAULT
選項可讓您設定單一轉送規則,用於處理所有這些通訊協定。
使用 TCP
或 UDP
通訊協定的轉送規則,可以參照後端服務,後者使用與轉送規則相同的通訊協定,或是通訊協定為 UNSPECIFIED
的後端服務。L3_DEFAULT
轉送規則只能參照使用通訊協定 UNSPECIFIED
的後端服務。
如果您使用 L3_DEFAULT
通訊協定,則必須設定轉送規則,接受所有通訊埠的流量。如要設定所有連接埠,請使用 Google Cloud CLI 設定 --ports=ALL
,或是使用 API 將 allPorts
設為 True
。
下表概略說明如何針對不同通訊協定使用這些設定。
要進行負載平衡的流量 | 轉送規則通訊協定 | 後端服務通訊協定 |
---|---|---|
TCP | TCP |
TCP 或UNSPECIFIED |
L3_DEFAULT |
UNSPECIFIED |
|
UDP | UDP |
UDP 或UNSPECIFIED |
L3_DEFAULT |
UNSPECIFIED |
|
ESP、GRE、ICMP/ICMPv6 (僅限回音要求) | L3_DEFAULT |
UNSPECIFIED |
多個轉送規則
您可以為同一個外部直通式網路負載平衡器設定多個地區外部轉送規則。每個轉送規則可以具有不同的地區外部 IP 位址,或者多個轉送規則可以具有相同的地區外部 IP 位址。
對於這些使用案例,不妨試著設定多個地區外部轉送規則:
- 您必須為同一個後端服務設定多個外部 IP 位址。
- 您必須為相同的外部 IP 位址設定不同的通訊協定,或不重疊的通訊埠或通訊埠範圍。
- 您需要將來自特定來源 IP 位址的流量導向特定負載平衡器後端。
Google Cloud 要求傳入封包最多只能與一個轉送規則相符。除了下一節將討論的轉向轉送規則,使用相同地區外部 IP 位址的兩個以上轉送規則,必須根據下列限制提供不重複的通訊協定和通訊埠組合:
- 為通訊協定的所有通訊埠設定轉送規則,可避免使用相同的通訊協定和 IP 位址建立其他轉送規則。您可以將使用
TCP
或UDP
通訊協定的轉送規則設定為使用所有通訊埠,也可以為特定通訊埠設定規則。舉例來說,如果您使用 IP 位址198.51.100.1
、TCP
通訊協定和所有通訊埠建立轉送規則,就無法使用 IP 位址198.51.100.1
和TCP
通訊協定建立任何其他轉送規則。如果每個轉送規則都有專屬的通訊埠或不重疊的通訊埠範圍,您可以建立兩個轉送規則,兩者都使用 IP 位址198.51.100.1
和TCP
通訊協定。舉例來說,您可以使用 IP 位址198.51.100.1
和 TCP 通訊協定建立兩個轉送規則,其中一個轉送規則的通訊埠為80,443
,另一個則使用通訊埠範圍81-442
。 - 每個 IP 位址只能建立一個
L3_DEFAULT
轉送規則。這是因為L3_DEFAULT
通訊協定會依定義使用所有通訊埠。在此情況下,「所有通訊埠」一詞包含不含通訊埠資訊的通訊協定。 單一
L3_DEFAULT
轉送規則可與使用特定通訊協定 (TCP
或UDP
) 的其他轉送規則共存。如果轉送規則使用相同的 IP 位址,但存在更具體的通訊協定,L3_DEFAULT
轉送規則可做為最後手段。只有在封包的目的地 IP 位址、通訊協定和目的地通訊埠不符合通訊協定專屬轉送規則時,L3_DEFAULT
轉送規則才會處理傳送至目的地 IP 位址的封包。為說明這項操作,請考慮以下兩種情況。這兩種情況中的轉送規則都使用相同的 IP 位址
198.51.100.1
。- 情境 1:第一個轉送規則使用
L3_DEFAULT
通訊協定。第二個轉送規則使用TCP
通訊協定和所有通訊埠。傳送至198.51.100.1
任何目的地通訊埠的 TCP 封包,都會由第二個轉送規則處理。使用不同通訊協定的封包會由第一個轉寄規則處理。 - 情境 2. 第一個轉送規則使用
L3_DEFAULT
通訊協定。第二個轉送規則使用TCP
通訊協定和通訊埠 8080。傳送至198.51.100.1:8080
的 TCP 封包會由第二個轉送規則處理。所有其他封包 (包括傳送至其他目的地通訊埠的 TCP 封包) 都會由第一個轉送規則處理。
- 情境 1:第一個轉送規則使用
轉送規則選項
Google Cloud 會使用這個排除程序,從與封包目的地 IP 位址相符的轉送規則候選集合開始,選取一或零個轉送規則來處理傳入的封包:
移除通訊協定與封包通訊協定不符的轉送規則 (
L3_DEFAULT
轉送規則除外)。使用L3_DEFAULT
通訊協定的轉送規則不會因為L3_DEFAULT
符合所有通訊協定而遭到淘汰。舉例來說,如果封包的通訊協定為 TCP,系統只會移除使用UDP
通訊協定的轉送規則。移除通訊埠與封包通訊埠不符的轉送規則。這項步驟不會移除為所有通訊埠設定的轉送規則,因為所有通訊埠轉送規則會與任何通訊埠相符。
如果剩餘的轉送規則候選項目同時包含
L3_DEFAULT
和通訊協定專屬轉送規則,請移除L3_DEFAULT
轉送規則。如果剩餘的轉送規則候選項目全都是L3_DEFAULT
轉送規則,則不會在這個步驟中刪除任何規則。此時,剩餘的轉送規則候選項目會屬於下列任一類別:
- 系統會保留單一轉送規則,該規則會與封包的目的地 IP 位址、通訊協定和通訊埠相符,並用於封包的路由。
- 系統會保留兩個以上的轉送規則候選項目,這些項目與封包的目標 IP 位址、通訊協定和通訊埠相符。這表示剩餘的轉送規則候選項目包括轉向轉送規則 (詳見下一節)。選取「source」範圍包含最具體 CIDR (最長前置字元比對) 的轉向轉送規則,該 CIDR 包含封包的來源 IP 位址。如果沒有任何轉向轉送規則的來源範圍包含封包的來源 IP 位址,請選取父項轉送規則。
- 沒有任何轉送規則候選項目,因此封包會遭到捨棄。
使用多個轉送規則時,請務必設定在後端 VM 上執行的軟體,將軟體繫結至負載平衡器轉送規則的所有外部 IP 位址。
流量引導
您可以設定外部直通式網路負載平衡器的轉送規則,將來自特定來源 IP 位址或 IP 位址範圍的流量,導向特定後端服務 (或目標執行個體)。
流量引導功能可用於排解問題和進階設定。您可以使用流量導引功能,將特定用戶端導向不同的後端組合或不同的後端服務設定,甚至兩者皆是。例如:
- 流量引導可讓您建立兩個轉送規則,透過兩個後端服務將流量導向相同的後端 (執行個體群組或 NEG)。這兩項後端服務可設定不同的健康狀態檢查、工作階段相依性或流量分配控制政策 (連線追蹤、連線排除和容錯移轉)。
- 您可以使用流量導引功能建立轉送規則,將流量從低頻寬後端服務重新導向至高頻寬後端服務。兩個後端服務都包含相同的後端 VM 或端點,但使用加權負載平衡,以不同的權重進行負載平衡。
- 流量導引功能可讓您建立兩個轉送規則,將流量導向不同的後端服務,並使用不同的後端 (執行個體群組或 NEG)。舉例來說,您可以使用不同的機器類型設定一個後端,以便更妥善地處理來自特定來源 IP 位址的流量。
流量引導功能會使用名為 sourceIPRanges
的轉送規則 API 參數進行設定。轉送規則至少須設定一個來源 IP 範圍,才能稱為導引轉送規則。
轉向轉送規則可以使用 sourceIPRanges
參數,指定以半形逗號分隔的清單,最多可包含 64 個來源 IP 位址或 IP 位址範圍。您隨時可以更新這個來源 IP 位址範圍清單。
每個轉向轉送規則都需要先建立父轉送規則。父項和轉向轉送規則共用相同的地區外部 IP 位址、IP 通訊協定和通訊埠資訊;不過,父項轉送規則沒有任何來源 IP 位址資訊。例如:
- 上層轉送規則:IP 位址:
198.51.100.1
、IP 通訊協定:TCP
、通訊埠:80 - 轉向轉送規則:IP 位址:
198.51.100.1
、IP 通訊協定:TCP
、通訊埠:80、sourceIPRanges:203.0.113.0/24
指向後端服務的父轉送規則可與指向後端服務或目標執行個體的轉向轉送規則建立關聯。
對於特定的父項轉送規則,兩個以上的導引轉送規則可以有重疊但不相同的來源 IP 位址範圍和 IP 位址。舉例來說,一個轉向轉送規則可以具有來源 IP 範圍 203.0.113.0/24
,而同一個父項的另一個轉向轉送規則可以具有來源 IP 位址 203.0.113.0
。
您必須先刪除所有轉向轉送規則,才能刪除這些規則所依附的父項轉送規則。
如要瞭解使用轉向轉送規則時,如何處理傳入的封包,請參閱「轉送規則選取」一文。
在轉向變更中的工作階段相依性行為
本節說明在哪些情況下,當為轉向轉送規則設定來源 IP 位址範圍時,工作階段相依性可能會中斷:
- 如果在您變更轉向轉送規則的來源 IP 範圍後,現有連線仍繼續比對相同的轉送規則,則工作階段親和性不會中斷。如果變更後,現有連線會與其他轉送規則相符,則:
- 在下列情況下,工作階段相依性「一律會中斷」:
- 新比對的轉送規則會將已建立的連線導向後端服務 (或目標執行個體),而該服務不會參照先前選取的後端 VM。
- 新比對的轉送規則會將已建立的連線導向後端服務,該服務確實會參照先前選取的後端 VM,但後端服務並未設定為在後端不健康時保留連線,且後端 VM 無法通過後端服務的健康狀態檢查。
- 當新比對的轉送規則將已建立的連線導向後端服務,且後端服務確實參照先前選取的 VM,但後端服務的工作階段相依性和連線追蹤模式組合會產生不同的連線追蹤雜湊時,工作階段相依性「可能會中斷」。
在轉向變更中保留工作階段相依性
本節說明如何在更新轉介轉送規則的來源 IP 範圍時,避免中斷工作階段親和性:
- 指向後端服務的轉送規則。如果父項和轉向規則都指向後端服務,您必須手動確認工作階段相依性和連線追蹤政策設定是否相同。如果設定不相同,Google Cloud 不會自動拒絕設定。
- 指向目標執行個體的轉送規則。指向後端服務的父項轉送規則可以與指向目標執行個體的轉向轉送規則建立關聯。在這種情況下,轉向轉送規則會從父項轉送規則繼承工作階段親和性和連線追蹤政策設定。
如需設定流量引導的操作說明,請參閱「設定流量引導」。
區域性後端服務
每個外部直通式網路負載平衡器都有一個區域性後端服務,用於定義負載平衡器的行為,以及流量如何分配至後端。後端服務的名稱即為 Google Cloud 控制台中顯示的外部直通式網路負載平衡器名稱。
每個後端服務都會定義下列後端參數:
通訊協定。後端服務會接受一或多個地區外部轉送規則指定的 IP 位址和通訊埠 (如有設定) 上的流量。後端服務會將封包傳遞至後端 VM,同時保留封包的來源和目的地 IP 位址、通訊協定,以及 (如果通訊協定是通訊埠為基礎) 來源和目的地通訊埠。
與外部直通式網路負載平衡器搭配使用的後端服務支援下列通訊協定選項:
TCP
、UDP
或UNSPECIFIED
。後端服務可搭配任何轉送規則使用,不受轉送規則通訊協定的影響。
UNSPECIFIED
使用特定通訊協定的後端服務 (TCP
或UDP
) 只能由使用相同通訊協定的轉送規則 (TCP
或UDP
) 參照。使用L3_DEFAULT
通訊協定的轉送規則只能參照使用UNSPECIFIED
通訊協定的後端服務。請參閱轉送規則通訊協定規格,瞭解可能的轉送規則和後端服務通訊協定組合。
流量分配。後端服務可根據所設定的工作階段相依性、連線追蹤政策和加權負載平衡設定,分配流量。您也可以設定後端服務,啟用連線排除功能,並指定負載平衡器的備援後端。這些設定大多有預設值,可讓您快速開始使用。詳情請參閱「外部直通網路負載平衡器的流量分配」。
健康狀態檢查。後端服務必須有相關聯的地區健康狀態檢查。
後端。每個後端服務都會在單一區域中運作,並將流量分配給同區域的執行個體群組或區域 NEG。您可以使用執行個體群組或區域 NEG 做為外部直通式網路負載平衡器的後端,但不能同時使用兩者:
- 如果您選擇「執行個體群組」,可以使用非代管執行個體群組、區域代管執行個體群組、地區代管執行個體群組,或執行個體群組類型的組合。
- 如果選擇可用區 NEG,則必須使用
GCE_VM_IP
可用區 NEG。
每個執行個體群組或 NEG 後端都有相關聯的虛擬私有雲端網路,即使該執行個體群組或 NEG 尚未連線至後端服務,也一樣。如要進一步瞭解網路如何與各類型後端建立關聯,請參閱「執行個體群組後端和網路介面」和「區域性 NEG 後端和網路介面」。
執行個體群組
外部直通式網路負載平衡器會將連線分配給受管理或非管理執行個體群組內的後端 VM。執行個體群組可在範圍內設為地區或區域。
每個執行個體群組都有相關聯的虛擬私有雲網路,即使該執行個體群組尚未連線至後端服務,也一樣。如要進一步瞭解網路如何與執行個體群組建立關聯,請參閱「執行個體群組後端和網路介面」。
外部直通式網路負載平衡器在設計上具備高可用性。由於負載平衡器機制不會依賴單一裝置或 VM 執行個體,因此沒有特殊的步驟可以使負載平衡器高度可用。您只需要確保後端 VM 執行個體部署至多個區域,讓負載平衡器能夠解決任何特定區域的潛在問題。
地區代管執行個體群組。如果您可以使用執行個體範本部署軟體,請使用地區代管執行個體群組。地區代管執行個體群組會自動在多個區域之間分配流量,提供最佳方案,避免任何特定區域出現潛在問題。
以下是使用地區代管執行個體群組的部署範例。執行個體群組含有執行個體範本,可定義應如何配置執行個體,而每個群組會在
us-central1
地區的三個區域中部署執行個體。搭配區域代管執行個體群組的外部直通式網路負載平衡器 區域代管或非代管執行個體群組。在不同區域 (在同一區域中) 使用區域執行個體群組,以防範任何特定區域發生潛在問題。
以下是使用區域執行個體群組的部署範例。這個負載平衡器可在兩個可用區提供可用性。
具備區域執行個體群組的外部直通式網路負載平衡器
區域性 NEG
外部直通式網路負載平衡器會在可用區網路端點群組中包含的 GCE_VM_IP
端點之間分配連線。這些端點必須位於負載平衡器所在的地區。如需瞭解一些建議的區域 NEG 用途,請參閱區域網路端點群組總覽。
NEG 中的端點必須是 VM 網路介面的內部 IP4 位址,且與區域 NEG 位於相同的子網路和區域。只要位於 NEG 子網路內,多 NIC VM 執行個體的任何網路介面的主要內部 IPv4 位址,都可以新增至 NEG。
區域性 NEG 支援 IPv4 和雙重堆疊 (IPv4 和 IPv6) VM。無論是 IPv4 還是雙重堆疊 VM,只要將端點附加至 NEG,只需指定 VM 執行個體即可。您不需要指定端點的 IP 位址。VM 執行個體必須一律位於 NEG 所在區域。
每個區域性 NEG 都有相關聯的 VPC 網路和子網路,即使該區域性 NEG 尚未連線至後端服務,也一樣。如要進一步瞭解網路如何與區域 NEG 建立關聯,請參閱「區域 NEG 後端和網路介面」。
執行個體群組後端和網路介面
在指定的 (代管或非代管) 執行個體群組中,所有 VM 執行個體的 nic0
網路介面都必須位於同一個虛擬私有雲網路中。
- 對於代管執行個體群組 (MIG),執行個體群組的 VPC 網路是在執行個體範本中定義。
- 對於非代管執行個體群組,執行個體群組的 VPC 網路定義為您新增至非代管執行個體群組的首個 VM 執行個體的
nic0
網路介面所使用的 VPC 網路。
nic0
介面的執行個體群組成員 VM。如果您想透過非 nic0
網路介面 (vNIC 或動態網路介面) 接收流量,就必須使用區域 NEG 搭配 GCE_VM_IP
端點。
區域性 NEG 後端和網路介面
建立含有 GCE_VM_IP
端點的新區域 NEG 時,您必須明確將 NEG 與 VPC 網路的子網路建立關聯,才能將任何端點新增至 NEG。建立 NEG 後,就無法變更子網路或 VPC 網路。
在特定 NEG 中,每個 GCE_VM_IP
端點實際上都代表網路介面。網路介面必須位於與 NEG 相關聯的子網路中。從 Compute Engine 執行個體的角度來看,網路介面可以使用任何識別碼。從 NEG 中端點的角度來看,網路介面會使用其主要內部 IPv4 位址進行識別。
有兩種方法可將 GCE_VM_IP
端點新增至 NEG:
- 如果您在新增端點時只指定 VM 名稱 (不含任何 IP 位址), Google Cloud 就必須在與 NEG 相關聯的子網路中,為 VM 建立網路介面。 Google Cloud為端點選擇的 IP 位址,是與 NEG 相關聯的子網路中 VM 網路介面的內部 IPv4 主要位址。
- 如果您在新增端點時同時指定 VM 名稱和 IP 位址,則您提供的 IP 位址必須是 VM 某個網路介面的內部 IPv4 主要位址。該網路介面必須位於與 NEG 相關聯的子網路中。請注意,指定 IP 位址是多餘的,因為與 NEG 相關聯的子網路中只能有一個網路介面。
如果動態網路介面卡是負載平衡網路端點群組的端點,就無法刪除。
後端服務和虛擬私有雲網路
後端服務不會與任何 VPC 網路建立關聯,但每個後端執行個體群組或區域 NEG 都會與 VPC 網路建立關聯,如前文所述。只要所有後端都位於相同的地區和專案,且所有後端的類型都相同 (執行個體群組或區域 NEG),您就可以新增使用相同或不同 VPC 網路的後端。
如要將封包分發至非 nic0
介面,您必須使用區域 NEG 後端 (搭配 GCE_VM_IP
端點)。
雙重堆疊後端 (IPv4 和 IPv6)
如果您希望負載平衡器使用雙重堆疊後端,同時處理 IPv4 和 IPv6 流量,請注意下列需求:
- 後端必須設在與負載平衡器 IPv6 轉送規則位於相同區域的雙層子網路中。針對後端,您可以使用子網路,並將
ipv6-access-type
設為EXTERNAL
或INTERNAL
。如果後端子網路的ipv6-access-type
設為INTERNAL
,您必須使用另一個僅限 IPv6 的子網路,並將ipv6-access-type
設為EXTERNAL
,以便負載平衡器的外部轉送規則使用。 - 後端必須設定為雙層堆疊,並將
stack-type
設為IPv4_IPv6
。如果後端子網路的ipv6-access-type
設為EXTERNAL
,您也必須將--ipv6-network-tier
設為PREMIUM
。如需操作說明,請參閱「建立含有 IPv6 位址的執行個體範本」。
僅限 IPv6 的後端
如果您希望負載平衡器使用僅限 IPv6 的後端,請注意下列規定:
- 非代管執行個體群組僅支援 IPv6 專用執行個體。不支援其他後端類型。
- 後端必須設定為雙重堆疊或僅限 IPv6 的子網路,且位於與負載平衡器 IPv6 轉送規則相同的地區。對於後端,您可以使用子網路,並將
ipv6-access-type
設為INTERNAL
或EXTERNAL
。如果後端子網路的ipv6-access-type
設為INTERNAL
,您必須使用另一個僅限 IPv6 的子網路,並將ipv6-access-type
設為EXTERNAL
,以便為負載平衡器的外部轉送規則使用。 - 後端必須設為僅支援 IPv6,並將 VM
stack-type
設為IPv6_ONLY
。如果後端子網路的ipv6-access-type
設為EXTERNAL
,您也必須將--ipv6-network-tier
設為PREMIUM
。如需操作說明,請參閱「建立含有 IPv6 位址的執行個體範本」。
請注意,您可以在雙重堆疊和僅限 IPv6 的子網路下建立僅限 IPv6 的 VM,但無法在僅限 IPv6 的子網路下建立雙重堆疊 VM。
健康狀態檢查
外部直通式網路負載平衡器會使用區域健康狀態檢查,判斷哪些執行個體可以接收新的連線。每個外部直通式網路負載平衡器的後端服務都必須與區域性健康狀態檢查建立關聯。負載平衡器會根據健康狀態檢查狀態,決定如何將新的連線轉送至後端執行個體。
如要進一步瞭解 Google Cloud 健康狀態檢查的運作方式,請參閱「健康狀態檢查的運作方式」。
外部直通式網路負載平衡器支援下列健康狀態檢查類型:
- HTTP、HTTPS 或 HTTP/2。如果後端 VM 使用 HTTP、HTTPS 或 HTTP/2 提供流量,則最好使用符合該通訊協定的健康狀態檢查。詳情請參閱「HTTP、HTTPS 和 HTTP/2 健康狀態檢查的成功標準」。
- SSL 或 TCP。如果後端 VM 不提供 HTTP 型流量,則應使用 SSL 或 TCP 健康狀態檢查。詳情請參閱「SSL 和 TCP 健康狀態檢查的成功標準」。
其他通訊協定流量的健康狀態檢查
除了本頁稍早的健康狀態檢查部分中列出的檢查項目外,Google Cloud 不提供任何特定通訊協定的健康狀態檢查。當您使用外部直通式網路負載平衡器來負載平衡 TCP 以外的通訊協定時,仍必須在後端 VM 上執行 TCP 型服務,以提供必要的健康狀態檢查資訊。
舉例來說,如果您要負載平衡 UDP 流量,系統會使用 UDP 通訊協定對用戶端要求進行負載平衡,且您必須執行 TCP 服務,才能向 Google Cloud 健康狀態檢查探測器提供資訊。為達成這項目標,您可以在每個向健康狀態檢查探測器傳回 HTTP 200 回應的後端 VM 上執行 HTTP 伺服器。您應在後端 VM 上執行自己的邏輯,以確保 HTTP 伺服器只會在正確設定並執行 UDP 服務的情況下才傳回 200。
防火牆規則
外部直通式網路負載平衡器是直通式負載平衡器,因此您可以使用 Google Cloud 防火牆規則控管負載平衡器後端的存取權。您必須建立輸入允許防火牆規則或輸入允許階層防火牆政策,才能允許健康狀態檢查和您要負載平衡的流量。
轉送規則和輸入防火牆規則或階層式防火牆政策可透過以下方式搭配運作:轉送規則會指定封包必須符合的通訊協定和 (如有定義) 通訊埠需求,才能轉送至後端 VM。Ingress 允許防火牆規則控管是否要將轉送的封包傳送至 VM 或捨棄。所有虛擬私有雲網路都設有默示的拒絕輸入防火牆規則,可封鎖來自任何來源的傳入封包。 Google Cloud 預設虛擬私有雲網路包含一組有限的預先填入的入站允許防火牆規則。
如要接受來自網際網路上任何 IP 位址的流量,您必須使用
0.0.0.0/0
來源範圍建立允許輸入的防火牆規則。如要只允許來自特定 IP 位址範圍的流量,請使用更嚴格的來源範圍。安全性最佳做法是,輸入允許防火牆規則應只允許您需要的 IP 通訊協定和通訊埠。當您使用通訊協定設為
L3_DEFAULT
的轉送規則時,限制通訊協定 (以及通訊埠) 設定就顯得格外重要。L3_DEFAULT
轉送規則會為所有支援的 IP 通訊協定轉送封包 (如果通訊協定和封包含有通訊埠資訊,則會在所有通訊埠轉送)。外部直通式網路負載平衡器會使用 Google Cloud 健康狀態檢查。因此,您必須一律允許來自健康檢查 IP 位址範圍的流量。這些 ingress 允許防火牆規則可針對負載平衡器健康狀態檢查的通訊協定和通訊埠進行設定。
要求和傳回封包的 IP 位址
當後端 VM 收到來自用戶端的負載平衡封包時,封包的來源和目的地如下:
- 來源:與 Google Cloud VM 相關聯的外部 IP 位址,或連線至負載平衡器的系統的網際網路可路由 IP 位址。
- 目的地:負載平衡器轉送規則的 IP 位址。
由於負載平衡器是直通式負載平衡器 (而非 Proxy),因此封包抵達時會附帶負載平衡器轉送規則的目的地 IP 位址。設定在後端 VM 上執行的軟體,以執行下列操作:
- 偵聽 (繫結至) 負載平衡器的轉送規則 IP 位址或任何 IP 位址 (
0.0.0.0
或::
) - 如果負載平衡器轉送規則的通訊協定支援通訊埠:偵聽 (繫結至) 負載平衡器轉送規則中包含的通訊埠
回傳封包會直接從負載平衡器的後端 VM 傳送至用戶端。回傳封包的來源和目的地 IP 位址取決於通訊協定:
- TCP 是連線導向,因此後端 VM 必須以來源 IP 位址與轉送規則 IP 位址相符的封包回應,才能讓用戶端將回應封包與適當的 TCP 連線建立關聯。
- UDP、ESP、GRE 和 ICMP 都是無連線的。後端 VM 可傳送回應封包,其來源 IP 位址會與轉送規則的 IP 位址相符,或與 VM 指派的任何外部 IP 位址相符。實際上,大多數用戶端都會預期回應來自傳送封包的相同 IP 位址。
下表列出回應封包的來源和目的地:
流量類型 | 來源 | 目的地 |
---|---|---|
TCP | 負載平衡器轉送規則的 IP 位址 | 要求封包的來源 |
UDP、ESP、GRE、ICMP | 在大多數情況下,負載平衡器轉送規則的 IP 位址 1 | 要求封包的來源。 |
1 如果 VM 有外部 IP 位址,或您使用 Cloud NAT,也可以將回應封包的來源 IP 位址設為 VM NIC 的主要內部 IPv4 位址。 Google Cloud 或 Cloud NAT 將回應封包的來源 IP 位址變更為 NIC 的外部 IPv4 位址或 Cloud NAT 外部 IPv4 位址,以便將回應封包傳送至用戶端的外部 IP 位址。不使用轉送規則的 IP 位址做為來源是進階情境,因為用戶端會從外部 IP 位址接收回應封包,但該 IP 位址與用戶端傳送要求封包的 IP 位址不符。
傳回路徑
外部直通式網路負載平衡器會使用虛擬私有雲網路外的特殊路徑,將傳入要求和健康狀態檢查探針導向至每個後端 VM。
負載平衡器會保留封包的來源 IP 位址。來自後端 VM 的回應會直接傳送至用戶端,而不會返回經過負載平衡器。業界稱這種機制為「伺服器直接回傳」。
從後端傳出的網際網路連線
將 VM 例項設為外部直通式網路負載平衡器的後端端點,即可使用負載平衡器的轉送規則 IP 位址做為傳出連線的來源 IP 位址,啟動與網際網路的連線。
一般來說,VM 執行個體一律會使用自己的外部 IP 位址或 Cloud NAT 來建立連線。您只會在特殊情況下使用轉送規則 IP 位址,例如需要 VM 執行個體在相同外部 IP 位址上發出及接收連線,且需要外部轉送網路負載平衡器提供的後端備援機制,以便處理入站連線。
從後端 VM 直接傳送至網際網路的封包,不受流量通訊協定和通訊埠的限制。即使傳出封包使用轉送規則的 IP 位址做為來源,封包的通訊協定和來源通訊埠也不必與轉送規則的通訊協定和通訊埠規格相符。不過,傳入回應封包必須符合轉送規則的 IP 位址、通訊協定和目的地通訊埠。詳情請參閱「外部直通式網路負載平衡器和外部通訊協定轉送的路徑」。
此外,任何對 VM 傳出連線的回應都會受到負載平衡的影響,就像所有其他用於負載平衡器的傳入封包一樣。這表示回應可能不會傳送至發起網際網路連線的相同後端 VM。如果傳出連線和負載平衡的傳入連線共用常見的通訊協定和通訊埠,您可以嘗試下列任一建議:
在後端 VM 之間同步傳出連線狀態,即使回應抵達的後端 VM 並非發起連線的 VM,也能提供連線服務。
使用備援設定,其中包含單一主要 VM 和單一備用 VM。接著,啟動傳出連線的有效後端 VM 一律會收到回應封包。
根據 Google Cloud的默示防火牆規則,從外部直通式網路負載平衡器後端連線至網際網路的這個路徑,是預設的預期行為。不過,如果您擔心開放這個路徑會造成安全性問題,可以使用指定的傳出防火牆規則,封鎖傳送至網際網路的未經授權外送流量。
共用 VPC 架構
除了 IP 位址外,外部直通式網路負載平衡器的所有元件都必須位於同一個專案中。下表摘要列出外部直通式網路負載平衡器的共用虛擬私有雲網路元件:
IP 位址 | 轉送規則 | 後端元件 |
---|---|---|
必須在負載平衡器或共用虛擬私有雲主機專案的專案中定義 地區外部 IP 位址。 | 必須在後端服務中的執行個體所屬專案中定義 地區外部轉送規則。 | 區域後端服務必須在後端 (執行個體群組或區域 NEG) 所在的專案和地區中定義。 定義與後端服務相關的健康狀態檢查時,所在的專案和區域必須與後端服務相同。 |
流量分配
外部直通式網路負載平衡器支援各種流量分配自訂選項,包括工作階段相依性、連線追蹤、加權負載平衡和備援。如要進一步瞭解外部直通式網路負載平衡器如何分配流量,以及這些選項如何相互影響,請參閱「外部直通式網路負載平衡器的流量分配」。
限制
您無法使用 Google Cloud 控制台執行下列工作:
- 建立或修改外部直通式網路負載平衡器,其轉送規則使用
L3_DEFAULT
通訊協定。 - 建立或修改外部直通式網路負載平衡器,並將後端服務通訊協定設為
UNSPECIFIED
。 - 建立或修改外部直通式網路負載平衡器,設定連線追蹤政策。
- 建立或修改轉送規則的來源 IP 流量轉送。
請改用 Google Cloud CLI 或 REST API。
- 建立或修改外部直通式網路負載平衡器,其轉送規則使用
外部直通式網路負載平衡器不支援 VPC 網路對等互連。
定價
如需價格資訊,請參閱「定價」。
後續步驟
- 如要設定外部直通式網路負載平衡器,並搭配後端服務只針對 TCP 或 UDP 流量 (支援 IPv4 和 IPv6 流量),請參閱「設定具有後端服務的外部直通式網路負載平衡器」。
- 如要為多個 IP 通訊協定 (支援 IPv4 和 IPv6 流量) 設定外部直通式網路負載平衡器,請參閱「為多個 IP 通訊協定設定外部直通式網路負載平衡器」。
- 如要設定具有區域 NEG 後端的外部直通式網路負載平衡器,請參閱「使用區域 NEG 設定外部直通式網路負載平衡器」
- 如要使用目標集區設定外部直通式網路負載平衡器,請參閱「使用目標集區設定外部直通式網路負載平衡器」。
- 如要瞭解如何將外部直通式網路負載平衡器從目標集區後端轉換至區域性後端服務,請參閱「將外部直通式網路負載平衡器從目標集區轉換至後端服務」。