用来实现 HTTP(S)、SSL 代理和 TCP 代理负载平衡的 IPv6 终结功能

Google Cloud 支持具有 HTTP(S) 负载平衡SSL 代理负载平衡TCP 代理负载平衡的 IPv6 客户端。负载平衡器会接受来自用户的 IPv6 连接,然后将这些连接代理到您的后端。

您可为以下负载平衡器配置 IPv4 和 IPv6 外部地址:

  • 外部 HTTP(S) 负载平衡器
  • SSL 代理负载平衡器
  • TCP 代理负载平衡器
全局 IPv6 负载平衡(点击放大)
全局 IPv6 负载平衡(点击放大)

IPv6 终结功能使您能够处理来自用户的 IPv6 请求,然后充当代理,将这些请求经由 IPv4 传递到后端。您可使用 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 客户端连接到 IPv4 地址,IPv6 客户端连接到 IPv6 地址。然后,这些客户端将自动被负载平衡服务引向最近的具有可用容量且运行状况良好的后端。我们将免费提供 IPv6 转发规则,因此您只需支付 IPv4 的费用。

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

IPv6 终结和代理

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

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

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

  1. 负载平衡器及其 IPv6 地址和转发规则等待用户连接。
  2. IPv6 客户端通过 IPv6 连接到负载平衡器。
  3. 负载平衡器充当反向代理,并终止 IPv6 客户端连接。它将请求置于后端的 IPv4 连接中。
  4. 在反向路径上,负载平衡器从后端接收 IPv4 响应,然后将其置于返回至原始客户端的 IPv6 连接中。

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

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

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

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

IPv6 地址格式

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

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

客户端 IP 地址标头与用来实现 HTTP(S) 负载平衡的 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 是外部 HTTP(S) 负载平衡器的 IPv6 地址。

价格

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

后续步骤