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

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

為負載平衡器啟用 IPv6 的優點如下:

  • 在多區域部署作業中使用單一任意傳播 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 網路負載平衡器),您可以分別設定從用戶端到負載平衡器的連線,以及從負載平衡器到後端的第二個連線。舉例來說,只要後端是雙重堆疊後端,且具備處理 IPv6 連線的能力,負載平衡器就能接受來自用戶端的 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 位址 (或兩者)。外部負載平衡器使用可公開路由的外部 IP 位址,而內部負載平衡器則使用無法從網際網路存取的內部私人 IP 位址。您可以在網站的 DNS 記錄中使用這些 IP 位址。

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

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

IPv6 位址格式

建立轉送規則時,系統會根據負載平衡器類型,採取下列 IPv6 位址分配行為:

  • 如果是全域外部應用程式負載平衡器和全域外部 Proxy 網路負載平衡器,Google Cloud 會為 IPv6 轉送規則分配 /64 IPv6 位址範圍。Google Cloud CLI 會列出最低有效位元為 0 的 IPv6 位址,但負載平衡器會接受整個範圍的流量。如果是全域外部應用程式負載平衡器,您可能會在X-Forwarded-For標頭中看到已分配範圍內的其他負載平衡器 IPv6 位址,具體取決於用戶端連線的 IPv6 伺服器 IP 位址。

  • 如果是內部應用程式負載平衡器和內部 Proxy 網路負載平衡器,將 --ip-version 設為 IPV6 時, Google Cloud 會為轉送規則建立隨機 /96 前置字元 IPv6 位址範圍。這個轉送規則位址是從自訂模式的雙重堆疊或僅限 IPv6 的子網路中分配/64,該子網路必須設定 INTERNAL 的 --ipv6-access-type,以及 IPV4_IPV6 或 IPV6_ONLY 的 --stack-type。

  • 如果是區域性外部應用程式負載平衡器和區域性外部 Proxy 網路負載平衡器,且 --ip-version 設為 IPV6,則 Google Cloud 會為轉送規則建立隨機 /96 前置字元 IPv6 位址範圍。這項轉送規則的位址是從自訂模式的雙重堆疊或僅限 IPv6 的子網路/64子網路分配而來,該子網路必須設定 ipv6-access-type 為 EXTERNAL,且 stack-type 為 IPV4_IPV6 或 IPV6_ONLY。--endpoint-type 旗標必須設為 NETLB,才能用於轉送規則。

格式化 IPv6 位址時,請按照 RFC 5952 第 4 節的建議操作。 Google Cloud

應用程式負載平衡器適用的 IPv6 終止功能和用戶端 IP 標頭

當負載平衡器將用戶端的 IPv6 連線 Proxy 至後端的 IPv4 連線時,原始來源 IP 位址會替換為負載平衡器的 IP 位址。不過,後端通常有知情必要,才能記錄、做出決策或其他用途,以得知原始來源 IP 位址。Google Cloud 提供會傳播至後端的 HTTP 標頭,其中包含原始 IPv6 用戶端 IP 位址。

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

定價

如要瞭解 IP 位址定價,請參閱「網路定價:虛擬私有雲」。

如需負載平衡定價詳情,請參閱「網路定價:Cloud Load Balancing」。

限制

  • 傳統版 Proxy 網路負載平衡器和傳統版應用程式負載平衡器不支援雙堆疊後端;IPv6 流量會由負載平衡器終止,然後透過 IPv4 連線 Proxy 傳送至後端。
  • 建立 IPv6 轉送規則時,系統會從子網路自動分配 /96 IPv6 位址範圍。不過,只有這個 /96 範圍內的第一個地址 (例如結尾為 :0:0) 可供用戶端連線。請確認用戶端和 DNS 記錄已設定為使用這個特定第一個位址。這適用於區域外部應用程式負載平衡器、區域內部應用程式負載平衡器、區域內部 Proxy 網路負載平衡器、 跨區域內部 Proxy 網路負載平衡器、跨區域內部應用程式負載平衡器 ,以及區域外部 Proxy 網路負載平衡器 (搶先版)。

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

後續步驟