外部直通式網路負載平衡器屬於第 4 層區域性負載平衡器,可將外部流量分配給與負載平衡器位於相同區域的後端 (執行個體群組或網路端點群組 (NEG))。這些後端必須位於相同區域和專案,但可以位於不同的 VPC 網路。這些負載平衡器是以 Maglev 和 Andromeda 網路虛擬化堆疊為基礎建構而成。
外部直通式網路負載平衡器可接收來自下列來源的流量:
- 網際網路上的任何用戶端
- Google Cloud 具備外部 IP 的 VM
- Google Cloud 可透過 Cloud NAT 或執行個體型 NAT 存取網際網路的 VM
外部直通式網路負載平衡器不是 Proxy。負載平衡器本身不會終止使用者連線,負載平衡的封包會傳送至後端 VM,來源和目的地的 IP 位址、通訊協定和通訊埠 (如適用) 都不會變更。後端 VM 隨即會終止使用者連線。來自後端 VM 的回應會直接傳送至用戶端,而不會透過負載平衡器傳回。這個程序稱為伺服器直接回傳 (DSR)。
後端服務型外部直通式網路負載平衡器支援下列功能:
- 代管和非代管執行個體群組後端。後端服務型外部直通式網路負載平衡器支援代管和非代管執行個體群組做為後端。相較於非代管執行個體群組,代管執行個體群組可自動執行後端管理作業,並提供更優異的擴充性和可靠性。
- 區域性 NEG 後端。後端服務型外部直通式網路負載平衡器支援搭配
GCE_VM_IP端點使用可用區 NEG。可用區性 NEGGCE_VM_IP端點可讓您執行下列操作:- 將封包轉送至任何網路介面,而不只是
nic0。 - 將同一個
GCE_VM_IP端點放在兩個以上的可用區 NEG 中,並連線至不同的後端服務。
- 將封包轉送至任何網路介面,而不只是
- 支援多種通訊協定。後端服務型外部直通式網路負載平衡器可對 TCP、UDP、ESP、GRE、ICMP 和 ICMPv6 流量進行負載平衡。
- 支援 IPv6 連線。後端服務型外部直通式網路負載平衡器可處理 IPv4 和 IPv6 流量。
- 精細的流量分配控管機制。後端服務可根據設定的工作階段相依性、連線追蹤政策和加權負載平衡設定,分配流量。您也可以設定後端服務,為負載平衡器啟用連線排除功能,並指定容錯移轉後端。這些設定大多有預設值,可讓您快速上手。詳情請參閱「外部直通式網路負載平衡器的流量分配」。
- 支援非舊版區域健康狀態檢查。以後端服務為基礎的外部直通式網路負載平衡器支援區域健康狀態檢查,可使用任何支援的健康狀態檢查通訊協定。
- Google Cloud Armor 整合。Cloud Armor 支援外部直通式網路負載平衡器的進階網路 DDoS 防護功能。詳情請參閱「設定進階網路 DDoS 防護功能」。
GKE 整合:如果您在 GKE 中建構應用程式,建議使用內建的 GKE Service 控制器,代表 GKE 使用者部署Google Cloud 負載平衡器。這與本頁面所述的獨立負載平衡架構相同,但生命週期完全自動化,並由 GKE 控制。
相關 GKE 說明文件:
架構
下圖說明外部直通式網路負載平衡器的元件:
負載平衡器由多個設定元件組成。單一負載平衡器可包含下列項目:
- 一或多個區域外部 IP 位址
- 一或多項區域外部轉送規則
- 一個區域性外部後端服務
- 一或多個後端:全為執行個體群組,或全為區域 NEG 後端 (
GCE_VM_IP端點) - 與後端服務相關聯的健康狀態檢查
此外,您必須建立防火牆規則,允許負載平衡流量和健康狀態檢查探測器連線至後端 VM。
IP 位址
外部直通式網路負載平衡器至少需要一項轉送規則。轉送規則參照的區域外部 IP 位址可從網際網路上的任何位置存取。
如果是 IPv4 流量,轉送規則會參照單一區域外部 IPv4 位址。區域性外部 IPv4 位址來自各 Google Cloud 區域專屬的集區。您可以指定已保留的外部 IP 位址,也可以讓 Google Cloud 自動指派臨時 IPv4 位址。
如果是 IPv6 流量,轉送規則會參照雙重堆疊或僅限 IPv6 子網路的
/96IPv6 位址範圍。子網路必須在虛擬私有雲網路中指派外部 IPv6 子網路範圍。外部 IPv6 位址僅適用於進階級。您可以指定保留的外部 IPv6 位址、自訂暫時性 IPv6 位址,或讓系統自動指派暫時性 IPv6 位址,藉此指派
/96IPv6 位址範圍。 Google Cloud如要指定自訂暫時性 IPv6 位址,請使用 gcloud CLI 或 API。控制台不支援為轉送規則指定自訂暫時性 IPv6 位址。 Google Cloud
如要進一步瞭解 IPv6 支援,請參閱虛擬私有雲文件中的「IPv6 子網路範圍」和「IPv6 位址」。
如果您需要保留與專案相關聯的位址,以便在刪除轉送規則後重複使用,或需要多個轉送規則參照相同的 IP 位址,請為轉送規則使用保留的 IP 位址。
外部直通式網路負載平衡器支援標準級和進階級的區域性外部 IPv4 位址。IP 位址和轉送規則必須使用相同的網路層級。地區性外部 IPv6 位址僅適用於進階級。
轉送規則
區域外部轉送規則會指定負載平衡器接收流量的通訊協定和通訊埠。外部直通式網路負載平衡器不是 Proxy,因此如果封包攜帶通訊埠資訊,就會以相同的通訊協定和通訊埠將流量傳送至後端。轉送規則與 IP 位址一同組成負載平衡器的前端。
負載平衡器會保留連入封包的來源 IP 位址。連入封包的目的地 IP 位址是與負載平衡器轉送規則相關聯的 IP 位址。
傳入流量會與轉送規則相符,轉送規則是特定 IP 位址 (IPv4 位址或 IPv6 位址範圍)、通訊協定,以及通訊埠(如果通訊協定是以通訊埠為準) 的組合。通訊埠可以是單一通訊埠、通訊埠範圍或所有通訊埠。轉送規則接著會將流量導向負載平衡器的後端服務。
如果轉送規則參照 IPv4 位址,則轉送規則不會與任何子網路建立關聯。也就是說,其 IP 位址來自任何Google Cloud 子網路範圍以外。
如果轉送規則參照
/96IPv6 位址範圍,轉送規則必須與子網路建立關聯,且該子網路必須是 (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 位址、通訊協定和通訊埠。也就是說,剩餘的轉送規則候選項目包括導引轉送規則 (下一節會說明)。選取轉送導向規則,其來源範圍包含最明確 (最長前置碼比對) 的 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 網路介面的主要內部 IPv4 位址,且與區域 NEG 位於相同子網路和區域。只要多重 NIC VM 執行個體任何網路介面的主要內部 IPv4 位址位於 NEG 的子網路中,即可新增至 NEG。
區域 NEG 支援 IPv4 和雙重堆疊 (IPv4 和 IPv6) VM。對於 IPv4 和雙重堆疊 VM,將端點附加至 NEG 時,只要指定 VM 執行個體即可。您不需要指定端點的 IP 位址。VM 執行個體一律必須與 NEG 位於相同區域。
即使區域 NEG 尚未連線至後端服務,每個區域 NEG 仍會與虛擬私有雲網路和子網路建立關聯。如要進一步瞭解網路與區域 NEG 的關聯,請參閱「區域 NEG 後端和網路介面」。
執行個體群組後端和網路介面
在指定的 (代管或非代管) 執行個體群組中,所有 VM 執行個體都必須在同一個虛擬私有雲網路中擁有 nic0 網路介面。
- 如果是代管執行個體群組 (MIG),執行個體群組的虛擬私有雲網路是在執行個體範本中定義。
- 對於非代管執行個體群組,執行個體群組的虛擬私有雲網路定義為您新增至非代管執行個體群組的第一個 VM 執行個體所使用的
nic0網路介面虛擬私有雲網路。
nic0 介面上的執行個體群組成員 VM。如要在非 nic0 網路介面 (vNIC 或動態網路介面) 上接收流量,請務必使用具有 GCE_VM_IP 端點的區域 NEG。
區域性 NEG 後端和網路介面
使用 GCE_VM_IP 端點建立新的區域 NEG 時,必須先將 NEG 與虛擬私有雲網路的子網路建立關聯,才能將任何端點新增至 NEG。建立 NEG 後,子網路和 VPC 網路都無法變更。
在指定的 NEG 中,每個 GCE_VM_IP 端點實際上代表一個網路介面。網路介面必須位於與 NEG 相關聯的子網路中。從 Compute Engine 執行個體的角度來看,網路介面可以使用任何ID。從 NEG 端點的角度來看,網路介面是透過主要內部 IPv4 位址識別。
將 GCE_VM_IP 端點新增至 NEG 的方式有兩種:
- 如果您在新增端點時只指定 VM 名稱 (不含任何 IP 位址), Google Cloud 會要求 VM 在與 NEG 相關聯的子網路中具有網路介面。端點選擇的 IP 位址,是與 NEG 相關聯子網路中,VM 網路介面的主要內部 IPv4 位址。 Google Cloud
- 如果您在新增端點時同時指定 VM 名稱和 IP 位址,提供的 IP 位址必須是 VM 其中一個網路介面的主要內部 IPv4 位址。該網路介面必須位於與 NEG 相關聯的子網路中。請注意,指定 IP 位址是多餘的,因為與 NEG 相關聯的子網路中只能有一個網路介面。
如果動態 NIC 是負載平衡網路端點群組的端點,則無法刪除動態 NIC。
後端服務和虛擬私有雲網路
後端服務不會與任何虛擬私有雲網路建立關聯,但如先前所述,每個後端執行個體群組或區域網路端點群組都會與虛擬私有雲網路建立關聯。只要所有後端都位於相同區域和專案,且所有後端都是相同類型 (執行個體群組或區域 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。
健康狀態檢查
健康狀態檢查資訊可用於判斷哪些後端可接收新的連線,您也可以控管現有連線是否會繼續連線至健康狀態不良的後端。如要進一步瞭解符合資格的後端,請參閱「外部直通網路負載平衡器的流量分配」。
健康狀態檢查類型、通訊協定和通訊埠
負載平衡器的後端服務必須參照地區健康狀態檢查,並使用任何支援的健康狀態檢查通訊協定和通訊埠。健康狀態檢查通訊協定和通訊埠詳細資料不必與負載平衡器後端服務通訊協定和轉送規則 IP 通訊埠資訊相符。
由於所有支援的健康狀態檢查通訊協定都依賴 TCP,因此當您使用外部直通式網路負載平衡器,平衡其他通訊協定的連線和流量時,後端 VM 必須執行 TCP 型伺服器,才能回應健康狀態檢查探測作業。舉例來說,您可以搭配使用 HTTP 健康狀態檢查,並在每個後端 VM 上執行 HTTP 伺服器。在本範例中,您的指令碼或軟體負責設定 HTTP 伺服器,只有在監聽負載平衡連線的軟體正常運作時,才會傳回狀態 200。
如要進一步瞭解支援的健康狀態檢查通訊協定和通訊埠,請參閱「健康狀態檢查類別、通訊協定和通訊埠」 和「健康狀態檢查運作方式」。
健康狀態檢查封包
如果是執行個體群組後端,健康狀態檢查探測器會將封包傳送至每個後端 VM 的nic0網路介面。如果是GCE_VM_IP區域 NEG 後端,健康狀態檢查探測器會將封包傳送至NEG 虛擬私有雲網路中的網路介面。健康狀態檢查封包具有下列特性:
- 來自相關健康狀態檢查探測 IP 範圍的來源 IP 位址。
- 目的地 IP 位址,與參照外部直通式網路負載平衡器後端服務的轉送規則 IP 位址相符。
- 與您在健康狀態檢查中指定的通訊埠編號相符的目的地通訊埠。
後端 VM 上執行的軟體必須繫結並監聽相關的 IP 位址和通訊埠組合。最簡單的方法是將軟體設定為繫結至任何 VM IP 位址的相關連接埠 (0.0.0.0),並監聽這些連接埠。詳情請參閱「探查封包目的地」。
防火牆規則
由於外部直通式網路負載平衡器屬於直通式負載平衡器,因此您可以使用 Google Cloud 防火牆規則 Google Cloud 控管負載平衡器後端的存取權。您必須建立允許輸入的防火牆規則或允許輸入的階層式防火牆政策,才能允許健康狀態檢查和負載平衡流量。
轉送規則和允許輸入防火牆規則或階層式防火牆政策會以以下方式搭配運作:轉送規則會指定封包必須符合的通訊協定和通訊埠需求 (如有定義),才能轉送至後端 VM。輸入允許防火牆規則可控管轉送的封包是否要遞送至 VM 或捨棄。所有 VPC 網路都有默示拒絕輸入防火牆規則,會封鎖來自任何來源的輸入封包。 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 設定外部直通式網路負載平衡器」一文。
- 如要使用目標集區設定外部直通式網路負載平衡器,請參閱「使用目標集區設定外部直通式網路負載平衡器」。
- 如要瞭解如何將外部直通式網路負載平衡器從目標集區後端轉換為區域性後端服務,請參閱「將外部直通式網路負載平衡器從目標集區轉換為後端服務」。
- 如要使用預建的 Terraform 範本,簡化 Google Cloud網路基礎架構的設定和管理作業,請瀏覽 Simplified Cloud Networking Configuration Solutions GitHub 存放區。