用于应用负载均衡器和代理网络负载均衡器的 IPv6

本文档介绍代理负载均衡器如何处理 IPv6 流量。在本文档中,仅 IPv4(单栈)是指仅使用 IPv4 地址的资源,而 IPv4 和 IPv6(双栈)是指同时使用 IPv4 和 IPv6 地址的资源。

Google Cloud 支持将 IPv6 流量用于基于后端服务的直通式网络负载均衡器。如需了解详情,请参阅基于后端服务的外部直通式网络负载均衡器基于后端服务的内部直通式网络负载均衡器概览

全球外部应用负载均衡器和全球外部代理网络负载均衡器会终止入站流量 IPv6 流量,然后通过 IPv4 或 IPv6 连接来代理流向 IPv4 和 IPv6(双栈)后端的此流量。

下表指明了哪些负载均衡器支持 IPv6 前端以及 IPv4 和 IPv6(双栈)后端:

功能 应用负载均衡器 代理网络负载均衡器
内部 外部 内部 外部
IPv6 前端 全球
传统+
全球
传统+
IPv4 和 IPv6(双栈)后端 跨区域*
区域级*
全球*
区域级*
跨区域*
区域级*
全球*
区域级*

* 支持 IPv4 和 IPv6(双栈)实例组和可用区级 NEG 后端。可用区级 NEG 仅支持在 GCE_VM_IP_PORT 类型端点上使用双栈。

+ 高级层级支持

本文档中的以下部分介绍了全球外部应用负载均衡器和全球外部代理网络负载均衡器如何处理 IPv6 流量。

以下示例展示了全球 IPv6 客户端的负载均衡的工作原理:

全球 IPv6 负载均衡。
全球 IPv6 负载均衡(点击可放大)。

借助 IPv6 终结功能,您可以处理来自用户的 IPv6 请求,并通过 IPv4 或 IPv6 将这些请求代理至后端。您可使用 IPv6 执行以下操作:

  • 使用单个任播 IPv6 地址进行多区域部署。跨多个区域运行的应用实例只需要一个负载均衡器 IPv6 地址。这意味着您的 DNS 服务器具有单个 AAAA 记录,并且您不需要在多个 IPv6 地址之间进行负载均衡。由于只有一个要缓存的地址,因此客户端的 AAAA 记录缓存将不成问题。用户对 IPv6 地址的请求会自动被负载均衡服务引向最近的具有可用容量且运行状况良好的后端。

  • 负载均衡 HTTP、HTTPS、HTTP/2、TCP 和 SSL/TLS IPv6 客户端流量。

  • 通过单个 IPv6 负载均衡器地址跨区域溢出。如果一个区域中的后端已用完资源或运行状况不佳,则全球负载均衡器会自动将来自用户的请求定向到具有可用资源的下一个最近区域。当最近的区域具有可用资源时,全球负载均衡将转回来继续通过此区域处理请求。如需实现全球负载均衡,您需要使用 Network Service Tiers 的优质层级。

  • 运行双栈部署。如需同时为 IPv6 和 IPv4 客户端提供服务,请创建两个负载均衡器 IP 资源(一个用于 IPv6,另一个用于 IPv4),并将这两个资源与相同的应用实例关联。IPv4 客户端连接到 IPv4 地址,IPv6 客户端连接到 IPv6 地址。然后,这些客户端会自动负载均衡到最近的具有可用容量且健康状况良好的 IPv4 或 IPv6 双栈后端。如需查看哪些负载均衡器支持双栈后端,请参阅表:后端服务和受支持的后端类型。我们会免费提供 IPv6 转发规则,因此您只需支付 IPv4 的费用。

    将 IPv4 和 IPv6 流量定向到相同的后端。
    将 IPv4 和 IPv6 流量定向到相同的后端(点击可放大)。

IPv6 终结和代理

通过为负载均衡器配置 IPv6 终结功能,可以让后端作为 IPv6 应用显示给 IPv6 客户端,如下图所示:

用来实现负载均衡的 IPv6 终结功能。
用来实现负载均衡的 IPv6 终结功能(点击可放大)。

当用户通过 IPv6 连接到负载均衡器时,会发生以下情况:

  1. 负载均衡器及其 IPv6 地址和转发规则等待用户连接。
  2. IPv6 客户端使用 IPv6 连接到负载均衡器。
  3. 负载均衡器充当反向代理,并终结 IPv6 客户端连接。它会根据后端服务 IP 地址选择政策,通过 IPv4 或 IPv6 连接将请求发送到后端。
  4. 在反向路径上,负载均衡器会接收来自后端的响应,然后通过 IPv6 连接发回至原始客户端。

限制

  • 传统代理网络负载均衡器和传统应用负载均衡器不支持双栈后端;IPv6 流量由负载均衡器终止,然后通过 IPv4 连接代理到后端。

  • 区域级外部应用负载均衡器、跨区域内部应用负载均衡器、区域级内部应用负载均衡器、区域级内部代理网络负载均衡器、跨区域内部代理网络负载均衡器或区域级外部代理网络负载均衡器不支持 IPv6 前端。Ingress IPv4 流量通过 IPv4 或 IPv6 连接代理到 IPv4 和 IPv6(双栈)后端。

  • 只有具有 GCE_VM_IP_PORT 端点的虚拟机实例组后端和可用区级网络端点组 (NEG) 支持 IPv4 和 IPv6(双栈)。

负载均衡器转发规则的 IPv6 地址分配

配置外部负载均衡器时,您需要为其提供一条或多条全局转发规则,每条规则都具有公开路由的外部 IPv4 或/和 IPv6 IP 地址。您可以在网站的 DNS 记录中使用此 IP 地址。

创建转发规则时,您可以使用为项目预留的静态 IP 地址,或者可以在创建转发规则时让该规则自动获取临时 IP 地址。静态 IP 地址将预留至您的项目中,您可以一直保留它直至特意将其释放。只要转发规则存在,临时地址就属于转发规则。如果您删除转发规则,则临时地址将被释放回 Google Cloud 池。

如果您的负载均衡器同时需要 IPv4 和 IPv6 地址,则可以创建两条转发规则,并将其中一条与 IPv4 地址相关联,将另一条与 IPv6 地址相关联。然后,您可以将这两条规则与同一负载均衡器相关联。

IPv6 地址格式

Google Cloud 会向 IPv6 转发规则分配一个 /64 IPv6 地址范围。 Google Cloud CLI 会列出最低有效 64 位设置为 0 的 IPv6 地址,但负载均衡器将接受全范围的流量。因此,您可能会在 X-Forwarded-For 标头中看到分配范围内的其他负载均衡器 IPv6 地址,具体取决于客户端连接到的 IPv6 服务器 IP 地址。

当设置 IPv6 地址的格式时,Google Cloud 遵循 RFC 5952 第 4 节中的建议。

客户端 IP 标头与外部应用负载均衡器的 IPv6 终结功能

当负载均衡器将来自客户端的 IPv6 连接代理到您的后端的 IPv4 连接时,原始来源 IP 地址会被替换为该负载均衡器的 IP 地址。但是,后端通常需要知道原始来源 IP 地址来进行日志记录、作出决策或用于其他目的。 Google Cloud 会提供一个 HTTP 标头,该标头会传播到包含原始 IPv6 客户端 IP 地址的后端。

IPv6 的 HTTP 标头与 IPv4 的 HTTP 标头类似。请求的格式如下:

  • X-Forwarded-For: CLIENT_IP_ADDRESS, GLOBAL_FORWARDING_RULE_EXTERNAL_IP_ADDRESSES

最后一个元素显示负载均衡器 IP 地址。倒数第二个元素显示负载均衡器所观察到的客户端 IP 地址。如果客户端或中间代理在将请求发送到负载均衡器之前添加了其他 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 和 IPv6(双栈)。通过更新负载均衡器资源,您可以将 IPv6 流量自动路由到后端。

如需了解如何将负载均衡器资源和后端转换为双栈,请参阅以下文档:

负载均衡器 文档
全球外部应用负载均衡器
跨区域内部应用负载均衡器
区域级外部应用负载均衡器
区域级内部应用负载均衡器
将应用负载均衡器转换为 IPv6
SSL 代理和 TCP 代理全球外部代理网络负载均衡器
跨区域内部代理网络负载均衡器
区域级外部代理网络负载均衡器
区域级内部代理网络负载均衡器
将代理网络负载均衡器转换为 IPv6

价格

IPv6 终结的转发规则是免费提供的。您不需要为临时 IPv6 地址付费。无论是否使用,预留的 IPv6 地址都按现有费率收费。此外,IPv6 负载均衡的价格与 IPv4 负载均衡的价格相同。如需详细了解负载均衡价格,请参阅网络价格

后续步骤

* IP 地址选择协议