本文档介绍应用负载平衡器和代理网络负载平衡器如何处理 IPv6 流量。这些负载均衡器是代理负载均衡器,这意味着传入的客户端连接会在负载均衡器处终止。然后,负载均衡器会发起一个新连接,以将客户端请求转发到后端。根据负载均衡器的类型,您可以为这两种连接中的任一连接或同时为这两种连接启用 IPv6。
为负载均衡器启用 IPv6 有以下好处:
- 使用单个任播 IPv6 地址进行多区域部署。跨多个区域运行的应用实例只需要一个负载均衡器 IPv6 地址。这意味着您的 DNS 服务器具有单个 AAAA 记录,并且您不需要在多个 IPv6 地址之间进行负载均衡。由于只有一个要缓存的地址,因此客户端的 AAAA 记录缓存将不成问题。用户对 IPv6 地址的请求会自动被负载均衡服务引向最近的具有可用容量且运行状况良好的后端。
运行双栈部署。如需同时为 IPv6 和 IPv4 客户端提供服务,请创建两个负载均衡器 IP 地址(一个用于 IPv6,另一个用于 IPv4)。IPv4 客户端连接到 IPv4 地址,IPv6 客户端连接到 IPv6 地址。然后,这些客户端会自动负载均衡到最近的具有可用容量且健康状况良好的 IPv4 或 IPv6 双栈后端。如需查看哪些负载平衡器支持双栈后端,请参阅表格:后端服务和受支持的后端类型。我们将免费提供 IPv6 转发规则,因此您只需支付 IPv4 的费用。
负载均衡 HTTP、HTTPS、HTTP/2、TCP 和 SSL/TLS IPv6 客户端流量。协议支持取决于您使用的负载均衡器类型和转发规则协议。
- 通过单个 IPv6 负载均衡器地址跨区域溢出。如果一个区域中的后端已用完资源或运行状况不佳,则全球负载均衡器会自动将来自用户的请求定向到具有可用资源的下一个最近区域。当最近的区域具有可用资源时,全球负载均衡将转回来继续通过此区域处理请求。如需实现全球负载均衡,您需要使用 Network Service Tiers 的优质层级。
负载平衡器支持
对于基于代理的负载均衡器(例如应用负载均衡器和代理网络负载均衡器),客户端到负载均衡器的连接和负载均衡器到后端的第二个连接可以独立配置。例如,负载均衡器可以接受来自客户端的 IPv4 流量,终止连接,然后通过新的 IPv6 连接将请求从负载均衡器转发到后端,前提是后端是能够处理 IPv6 连接的双栈后端。
如需让负载均衡器能够接收来自客户端的 IPv6 连接,您必须为负载均衡器的转发规则使用 IPv6 地址。默认情况下,从负载均衡器到后端的后续连接使用 IPv4。不过,您可以通过在后端服务上配置 IP 地址选择政策选项,让某些负载平衡器使用 IPv6。
下表介绍了所有基于代理的负载平衡器支持哪些连接类型:
负载平衡器 | 从客户端到负载均衡器的连接 | 从负载均衡器到后端的连接 |
---|---|---|
全球外部应用负载平衡器 Global external proxy Network Load Balancer |
可以终止 IPv4 和 IPv6 连接。 | 以下任一项:
|
传统应用负载平衡器 传统代理网络负载平衡器 |
可以终止 IPv4 和 IPv6 连接。 | 仅限 IPv4 连接 |
区域级外部应用负载平衡器 区域级外部代理网络负载平衡器 区域级内部应用负载平衡器 区域级内部代理网络负载平衡器 跨区域内部应用负载平衡器 跨区域内部代理网络负载平衡器 |
仅限 IPv4。不支持 IPv6 流量。 | 以下任一项:
|
GCE_VM_IP_PORT
端点)才能配置为双栈。
IPv6 终结的运作方式
全球版和传统版应用负载平衡器以及代理网络负载平衡器支持 IPv6 终止。通过为这些负载平衡器配置 IPv6 终结功能,可以让后端作为 IPv6 应用显示给 IPv6 客户端,如下图所示:
当用户通过 IPv6 连接到负载均衡器时,会发生以下情况:
- 负载均衡器及其 IPv6 地址和转发规则等待用户连接。
- IPv6 客户端使用 IPv6 连接到负载均衡器。
- 负载均衡器充当反向代理,并终结 IPv6 客户端连接。它会根据后端服务 IP 地址选择政策,通过 IPv4 或 IPv6 连接将请求发送到后端。
- 在反向路径上,负载均衡器会接收来自后端的响应,然后通过 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(单栈)的负载均衡器资源转换为 IPv4 和 IPv6(双栈)。通过更新负载均衡器资源,您可以将 IPv6 流量自动路由到后端。
如需了解如何将负载均衡器资源和后端转换为双栈,请参阅以下文档:
负载均衡器 | 文档 |
---|---|
全球外部应用负载平衡器 跨区域内部应用负载平衡器 区域级外部应用负载平衡器 区域级内部应用负载平衡器 |
将应用负载平衡器转换为 IPv6 |
全球外部代理网络负载平衡器 跨区域内部代理网络负载平衡器 区域级外部代理网络负载平衡器 区域级内部代理网络负载平衡器 |
将代理网络负载平衡器转换为 IPv6 |
价格
IPv6 终结的转发规则是免费提供的。您不需要为临时 IPv6 地址付费。无论是否使用,预留的 IPv6 地址都按现有费率收费。此外,IPv6 负载均衡的价格与 IPv4 负载均衡的价格相同。如需详细了解负载均衡价格,请参阅网络价格。
限制
- 传统代理网络负载均衡器和传统应用负载均衡器不支持双栈后端;IPv6 流量由负载均衡器终止,然后通过 IPv4 连接代理到后端。
区域级外部应用负载平衡器、区域级内部应用负载平衡器、区域级内部代理网络负载平衡器、 跨区域内部代理网络负载平衡器、跨区域内部应用负载平衡器 和区域级外部代理网络负载平衡器不支持 IPv6 前端。Ingress IPv4 流量通过 IPv4 或 IPv6 连接代理到 IPv4 和 IPv6(双栈)后端。
只有具有
GCE_VM_IP_PORT
端点的虚拟机实例组后端和可用区级网络端点组 (NEG) 支持双栈(IPv4 和 IPv6)后端。