應用程式負載平衡器和 Proxy 網路負載平衡器的 IPv6

本文說明應用程式負載平衡器和 Proxy 網路負載平衡器如何處理 IPv6 流量。這些負載平衡器是 Proxy 負載平衡器,也就是說,負載平衡器會終止傳入的用戶端連線。負載平衡器隨後會啟動新連線,將用戶端要求轉送至後端。視負載平衡器類型而定,您可以為這兩種連線或其中一種連線啟用 IPv6。

為負載平衡器啟用 IPv6 可享有下列優點:

  • 使用單一 Anycast IPv6 位址進行多地區部署。對於跨多個地區執行的應用程式執行個體,您只需一個負載平衡器 IPv6 位址。這表示您的 DNS 伺服器只有單一的 AAAA 記錄,而且您不需要在多個 IPv6 位址之間進行負載平衡。由於只有一個位址要進行快取,因此由用戶端快取 AAAA 記錄並不是問題。系統會自動將使用者對 IPv6 位址的要求進行負載平衡,並將負載平衡後的流量傳送至最近一個有可用容量且運作狀態良好的後端。
  • 執行雙層架構部署作業。如要同時為 IPv6 和 IPv4 用戶端提供服務,請建立兩個負載平衡器 IP 位址,一個用於 IPv6,另一個用於 IPv4。IPv4 用戶端會連線至 IPv4 位址,而 IPv6 用戶端則連線至 IPv6 位址。接著,系統會自動為這些用戶端負進行載平衡,並將負載平衡後的流量傳送至最近一個有可用容量且運作狀態良好的 IPv4 或 IPv6 雙重堆疊後端。如要查看哪些負載平衡器支援雙層堆疊後端,請參閱「表格:後端服務和支援的後端類型」。

  • 為 HTTP、HTTPS、HTTP/2、TCP 和 SSL/TLS IPv6 用戶端流量進行負載平衡。通訊協定支援功能取決於您使用的負載平衡器類型和轉送規則通訊協定

  • 具有單一 IPv6 負載平衡器位址的跨地區溢位。如果某個地區的後端資源不足或健康狀態不良,全球負載平衡器會自動將使用者的要求導向至具有可用資源的下一個最接近地區。當最接近的地區具有可用資源後,全域負載平衡就會恢復為透過這個地區提供服務。全域負載平衡要求您使用網路服務級別的進階級。

負載平衡器支援

對於 Proxy 負載平衡器 (例如應用程式負載平衡器和 Proxy 網路負載平衡器),可以個別設定從用戶端連線至負載平衡器的連線,以及從負載平衡器連線至後端的第二個連線。舉例來說,負載平衡器可以接受來自用戶端的 IPv4 流量、終止連線,然後透過新的 IPv6 連線將要求從負載平衡器轉送至後端,前提是後端必須是可處理 IPv6 連線的雙堆疊後端。

如要讓負載平衡器接收來自用戶端的 IPv6 連線,您必須為負載平衡器的轉送規則使用 IPv6 位址。負載平衡器後續連線至後端的連線預設使用 IPv4。不過,您可以透過在後端服務上設定 IP 位址選取政策選項,讓特定負載平衡器使用 IPv6。

下表說明所有 Proxy 負載平衡器支援哪些連線類型:

負載平衡器 從用戶端連線至負載平衡器 從負載平衡器連線至後端
全域外部應用程式負載平衡器
全域外部 Proxy 網路負載平衡器
可終止 IPv4 和 IPv6 連線。 以下任一項:
  • IPv4 連線:支援僅限 IPv4 或雙重堆疊後端
  • IPv6 連線:僅支援雙重堆疊後端*
傳統版應用程式負載平衡器
傳統版 Proxy 網路負載平衡器
可終止 IPv4 和 IPv6 連線。 僅限 IPv4 連線
區域性外部應用程式負載平衡器
區域性外部 Proxy 網路負載平衡器
區域性內部應用程式負載平衡器
區域性內部 Proxy 網路負載平衡器
跨區域內部應用程式負載平衡器
跨區域內部 Proxy 網路負載平衡器
僅限 IPv4。不支援 IPv6 流量。 以下任一項:
  • IPv4 連線:支援僅限 IPv4 或雙重堆疊後端
  • IPv6 連線:僅支援雙重堆疊後端*
* 只有執行個體群組和區域 NEG (含 GCE_VM_IP_PORT 端點) 可以設定為雙重堆疊

IPv6 終止功能的運作方式

全域和傳統版應用程式負載平衡器,以及 Proxy 網路負載平衡器,都支援 IPv6 終止功能。為這些負載平衡器設定 IPv6 終止功能,可讓後端在 IPv6 用戶端中以 IPv6 應用程式的形式顯示,如下圖所示:

負載平衡的 IPv6 終止功能。
負載平衡的 IPv6 終止功能 (按一下可放大)。

當使用者透過 IPv6 連線至負載平衡器時,會發生下列情況:

  1. 負載平衡器及其 IPv6 位址和轉送規則會等待使用者連線。
  2. IPv6 用戶端使用 IPv6 連線至負載平衡器。
  3. 負載平衡器會扮演反向 Proxy 的角色,並終止 IPv6 用戶端連線。根據後端服務的 IP 位址選擇政策,將要求放置在連往後端的 IPv4 或 IPv6 連線中。
  4. 在反向路徑中,負載平衡器會從後端接收回應,然後將該回應放置在連回原始用戶端的 IPv6 連線中。

負載平衡器轉送規則的 IPv6 位址分配

設定外部負載平衡器時,您會提供一或多個轉送規則,而每個轉送規則都具有一個外部公開轉送 IPv4 或 IPv6 IP 位址 (或兩者皆有)。您可以在網站的 DNS 記錄中使用這個 IP 位址。

建立轉送規則時,您可以使用系統為專案保留的靜態 IP 位址,也可以在建立規則時讓轉送規則自動取得臨時 IP 位址。您的專案會保留一個靜態 IP 位址,該靜態 IP 位址可保留到您刻意釋出為止。只要存在轉送規則,臨時位址就屬於轉送規則。如果您刪除轉送規則,系統會將臨時位址釋回 Google Cloud 集區。

如果您的負載平衡器同時需要 IPv4 和 IPv6 位址,您可以建立兩個轉送規則,將一個規則與 IPv4 位址建立關聯,並將另一個與 IPv6 位址建立關聯。接下來,您可以將兩個規則與同一個負載平衡器建立關聯。

IPv6 位址格式

Google Cloud 會將 /64 IPv6 位址範圍分配給 IPv6 轉送規則。Google Cloud CLI 列出最低有效 64 位元設定為 0 的 IPv6 位址,但負載平衡器會接受整個範圍內的流量。因此,您可能會在 X-Forwarded-For 標頭中看到分配範圍內其他負載平衡器的 IPv6 位址,實際情形視用戶端連線的 IPv6 伺服器 IP 而定。

設定 IPv6 位址的格式時, Google Cloud 請遵循 RFC 5952 第 4 節中的建議。

外部應用程式負載平衡器的 IPv6 終止機制下的用戶端 IP 標頭

當負載平衡器透過 Proxy 將用戶端的 IPv6 連線連至後端的 IPv4 連線時,原始來源的 IP 位址會替換為負載平衡器的 IP 位址。不過,後端通常需要知道原始來源 IP,才能進行記錄、決策或其他用途。Google Cloud 提供一個包含原始 IPv6 用戶端 IP 的 HTTP 標頭,該標頭會傳播至後端。

IPv6 的 HTTP 標頭與 IPv4 的相似。要求的格式如下:

  • X-Forwarded-For: CLIENT_IP_ADDRESS, GLOBAL_FORWARDING_RULE_EXTERNAL_IP_ADDRESSES

最後一個元素會顯示負載平衡器 IP 位址。倒數第二個元素會顯示負載平衡器所見的用戶端 IP 位址。如果用戶端或中間的 Proxy 在將要求傳送到負載平衡器之前加入其他 X-Forwarded-For 標頭,則 X-Forwarded-For 標頭中可能還會包含其他元素。

X-Forwarded-For 標頭範例可能如下所示:

X-Forwarded-For: 2001:db8:abcd:1::1234, 2607:f8b0:4005:801::200e

2001:db8:abcd:1::1234 是用戶端的 IPv6 位址。2607:f8b0:4005:801::200e 是外部應用程式負載平衡器的 IPv6 位址。

從僅限 IPv4 轉換為雙重堆疊

您可以將使用僅限 IPv4 (單一堆疊) 的負載平衡器資源,轉換為 IPv4 和 IPv6 (雙重堆疊)。更新負載平衡器資源後,您就能自動將 IPv6 流量轉送至後端。

如需將負載平衡器資源和後端轉換為雙層架構的操作說明,請參閱下列說明文件:

負載平衡器 說明文件
全域外部應用程式負載平衡器
跨區域內部應用程式負載平衡器
區域性外部應用程式負載平衡器
區域性內部應用程式負載平衡器
將應用程式負載平衡器轉換為 IPv6
全域外部 Proxy 網路負載平衡器
跨區域內部 Proxy 網路負載平衡器
區域性外部 Proxy 網路負載平衡器
區域性內部 Proxy 網路負載平衡器
將 Proxy 網路負載平衡器轉換為 IPv6

定價

IPv6 終止功能的轉送規則不需支付額外費用。系統不會向您收取臨時 IPv6 位址的費用。無論是否有使用,保留的 IPv6 位址是以現有費率收費。否則,IPv6 負載平衡的價格與 IPv4 負載平衡的價格相同。如需負載平衡的價格詳細資料,請參閱網路定價

限制

  • 傳統版 Proxy 網路負載平衡器和傳統版應用程式負載平衡器不支援雙堆疊後端;負載平衡器會終止 IPv6 流量,然後透過 IPv4 連線將 Proxy 傳送至後端。
  • 區域性外部應用程式負載平衡器、區域性內部應用程式負載平衡器、區域性內部 Proxy 網路負載平衡器、 跨區域內部 Proxy 網路負載平衡器、跨區域內部應用程式負載平衡器,以及 區域性外部 Proxy 網路負載平衡器,均不支援 IPv6 前端。透過 IPv4 或 IPv6 連線,將入站 IPv4 流量轉送至 IPv4 和 IPv6 (雙重堆疊) 後端。

  • 只有含有 GCE_VM_IP_PORT 端點的 VM 執行個體群組後端和區域性網路端點群組 (NEG) 支援雙重堆疊 (IPv4 和 IPv6) 後端。

後續步驟