混合负载平衡概览

Cloud Load Balancing 支持将流量负载平衡到超出 Google Cloud 端点的端点(例如本地数据中心和其他可使用混合连接访问的公有云)。

混合策略是一种切实可行的解决方案,可让您适应不断变化的市场需求并逐步对应用进行现代化改造。这可能是用于支持迁移到基于云的现代解决方案的临时混合部署,也可以是组织的 IT 基础架构的永久固定装置。

设置混合负载平衡还可以将 Cloud Load Balancing 的网络功能的优势应用于 Google Cloud 之外的现有基础架构上运行的服务。

以下 Google Cloud 负载平衡器支持混合负载平衡:

使用场景:将流量路由到本地位置或其他云

此功能的最简单使用场景是将流量从 Google Cloud 负载平衡器路由到 Google Cloud、本地位置或其他云。客户端可以来自公共互联网、Google Cloud 内部或本地客户端的流量。

公共客户端

您可以使用 HTTP(S) 负载平衡将流量从外部客户端路由到 Google Cloud、本地或其他云中的后端。使用 HTTP(S) 负载平衡,您还可为本地服务启用增值网络功能。您可以:

  • 使用 Google 的全球边缘基础架构来终止较靠近用户的连接,从而缩短延迟时间。
  • 使用 Google Cloud Armor 保护您的服务;Google Cloud Armor 是一种边缘 DDoS 防御/WAF 安全产品,适用于通过外部 HTTP(S) 负载平衡器访问的服务。
  • 可让您的服务使用 Cloud CDN 优化交付。借助 Cloud CDN,您可以在靠近用户的位置缓存内容。Cloud CDN 提供缓存失效操作和 Cloud CDN 签名网址等功能。
  • 使用 Google 管理的 SSL 证书。您可以重复使用已用于其他 Google Cloud 产品的证书和私钥。这样就不需要管理单独的证书。

下图展示了使用外部 HTTP(S) 负载平衡器的混合部署。

使用 HTTP(S) 负载平衡的混合连接(点击可放大)
使用外部 HTTP(S) 负载平衡的混合连接(点击可放大)

在该图中,来自公共互联网上客户端的流量通过 Google Cloud 负载平衡器(例如外部 HTTP(S) 负载平衡器)进入您的私有本地或云网络。当流量到达负载平衡器时,您可以应用网络边缘服务,例如 Google Cloud Armor DDoS 防护或 Identity-Aware Proxy (IAP) 用户身份验证。

请求的路由方式(是否路由到 Google Cloud 后端或本地/云端端点)取决于网址映射的配置方式。根据网址映射,负载平衡器会为请求选择后端服务。如果所选后端服务配置了混合连接 NEG(仅适用于非 Google Cloud 端点),则负载平衡器会通过 Cloud VPNCloud Interconnect 将流量转发到其预期目标。

内部客户端(在 Google Cloud 中或本地)

您还可为 Google Cloud 内部的客户端设置混合部署。在这种情况下,客户端流量源自 Google Cloud VPC 网络、本地网络或其他云,并路由到可以位于 Google Cloud、本地的端点或其他云中的端点。请注意,内部 HTTP(S) 负载平衡是一种区域级负载平衡器,这意味着它只能将流量路由到负载平衡器资源所在 GCP 可用区或区域中的端点。

下图展示了使用内部 HTTP(S) 负载平衡器的混合部署。

使用内部 HTTP(S) 负载平衡的混合连接(点击可放大)
使用内部 HTTP(S) 负载平衡的混合连接(点击可放大)

使用场景:迁移到云

通过将现有服务迁移到云,您可以释放本地容量,并降低维护本地基础架构的费用和负担。您可以临时设置混合部署,以将流量路由到当前本地服务和相应的 Google Cloud 服务端点。

下图展示了使用内部 HTTP(S) 负载平衡进行的设置。

迁移到 Google Cloud(点击可放大)
迁移到 Google Cloud(点击可放大)

如果您使用内部 HTTP(S) 负载平衡来处理内部客户端,则可以将 Google Cloud 负载平衡器配置为使用基于权重的流量拆分来在这两项服务之间拆分流量。通过流量拆分,您可以先向 Google Cloud 服务发送 0% 的流量,而向本地服务发送 100% 的流量。然后,您可以逐步增加发送到 Google Cloud 服务的流量的比例。最终,所有流量都会发送到 Google Cloud 服务,并且您可以停用本地服务。

混合架构

本部分介绍配置混合负载平衡部署所需的负载平衡架构和资源。

本地服务和其他云服务与其他任何 Cloud Load Balancing 后端一样。主要区别在于使用混合连接 NEG 来配置这些后端的端点。端点必须是您的客户端可通过混合连接(如 Cloud VPN 或 Cloud Interconnect)进行访问的有效 IP:port 组合。

下图展示了为外部 HTTP(S) 负载平衡启用混合负载平衡所需的 Google Cloud 资源。

混合连接的外部 HTTP(S) 负载平衡器资源(点击可放大)
混合连接的外部 HTTP(S) 负载平衡器资源(点击可放大)

下图展示了为内部 HTTP(S) 负载平衡启用混合负载平衡所需的 Google Cloud 资源。

混合连接的内部 HTTP(S) 负载平衡器资源(点击可放大)
混合连接的内部 HTTP(S) 负载平衡器资源(点击可放大)

区域与全球

Cloud Load Balancing 路由取决于已配置的负载平衡器的范围:

外部 HTTP(S) 负载平衡对于来自互联网的流量,可将外部 HTTP(S) 负载平衡器配置为使用全球或区域路由,具体取决于所使用的网络层。您应该在已配置混合连接的区域中创建负载平衡器的混合 NEG 后端。还必须相应地配置非 Google Cloud 端点,以充分利用基于邻近度的负载平衡。

内部 HTTP(S) 负载平衡对于来自内部客户端的流量,内部 HTTP(S) 负载平衡器是区域级负载平衡器。也就是说,它只能将流量路由到负载平衡器所在区域中的端点。内部 HTTP(S) 负载平衡器的组件必须在配置混合连接所在的区域中配置。由于内部 HTTP(S) 负载平衡不支持全球访问,因此访问负载平衡器的客户端必须位于同一区域中。

例如,如果在 us-central1 中配置了 Cloud VPN 网关或 Cloud Interconnect VLAN 连接,则内部 HTTP(S) 负载均衡器所需的资源(后端服务、混合 NEG、转发规则等)必须us-central1 区域中创建。访问负载均衡器的客户端还必须位于 us-central1 区域中。

网络连接要求

在配置混合负载平衡部署之前,必须设置以下资源:

  • Google Cloud VPC 网络。在 Google Cloud 中配置的 VPC 网络。这是将在其中创建混合负载平衡资源(转发规则、目标代理、后端服务等)的网络。本地、其他云和 Google Cloud 子网 IP 地址和 IP 地址范围不得重叠。当 IP 地址重叠时,子网路由优先于远程连接。
  • 混合连接您的 Google Cloud 和本地或其他云环境必须通过 Cloud Interconnect VLAN 连接或使用 Cloud Router 路由器的 Cloud VPN 隧道通过混合连接进行连接。我们建议您使用高可用性连接。 启用了全球动态路由的 Cloud Router 路由器会通过 BGP 了解特定端点并将其编程到您的 Google Cloud VPC 网络中。不支持区域动态路由。也不支持静态路由。

    Cloud Interconnect/Cloud VPN 和 Cloud Router 路由器必须在要用于混合负载均衡部署的 VPC 网络中配置。Cloud Router 路由器还必须向您的本地环境通告以下路由
    • Google 的健康检查探测所使用的范围:35.191.0.0/16130.211.0.0/22
    • 相应区域的代理专用子网的范围(仅对于内部 HTTP(S) 负载均衡)。
  • 本地或其他云上的网络端点 (IP:Port)。在本地或其他云环境中配置的一个或多个 IP:Port 网络端点,可通过 Cloud Interconnect 或 Cloud VPN 路由。如果有多个指向 IP 端点的路径,则路由将遵循 VPC 路由概览Cloud Router 概览中所述的行为。
  • 本地或其他云中的防火墙规则。您必须在本地或其他云环境中创建以下防火墙规则:
    • 入站流量允许防火墙规则,用于允许从 Google 的运行状况检查探测到您的端点的流量。对于外部 HTTP(S) 负载平衡器、内部 HTTP(S) 负载平衡器、TCP 代理负载平衡器和 SSL 代理负载平衡器,允许的范围是:35.191.0.0/16130.211.0.0/22。 请注意,这些范围还必须由 Cloud Router 路由器通告给您的本地网络。如需了解详情,请参阅探测 IP 地址范围和防火墙规则
    • 入站流量允许防火墙规则,用于允许负载平衡的流量到达端点。
    • 对于内部 HTTP(S) 负载平衡,您还需要创建防火墙规则,以允许来自该区域的代理专用子网的流量到达端点。

负载平衡器组件

根据负载平衡器的类型,您可以使用标准或优质网络服务层级设置混合负载平衡部署。

混合负载平衡器需要仅适用于后端服务的特殊配置。前端配置与任何其他负载平衡器相同。此外,内部 HTTP(S) 负载平衡器需要代理专用子网来代表您运行 Envoy 代理。

前端配置

混合负载平衡不需要特殊的前端配置。转发规则用于根据 IP 地址、端口和协议将流量路由到目标代理。然后,目标代理会终止来自客户端的连接。

HTTP(S) 负载平衡器使用网址映射来设置基于网址将请求路由到相应的后端服务。

如需详细了解这些组件中的每个组件,请参阅特定负载平衡器概览的架构部分:

后端服务

后端服务向负载平衡器提供配置信息。负载平衡器使用后端服务中的信息将传入的流量定向到一个或多个挂接的后端。

如需设置混合负载平衡部署,您需要使用位于 Google Cloud 内部和 Google Cloud 外部的后端来配置负载平衡器。

  • 非 Google Cloud 后端(本地或其他云)

    对于您可以使用 Google 的混合连接产品(Cloud VPN 或 Cloud Interconnect)以及可以通过有效的 IP:Port 组合访问的任何目的地,都可以配置为负载平衡器的端点。

    按如下方式配置非 Google Cloud 后端:

    1. 将每个非 Google Cloud 网络端点的 IP:Port 组合添加到混合连接网络端点组 (NEG)。确保可使用混合连接(通过 Cloud VPN 或 Cloud Interconnect)从 Google Cloud 访问此 IP 地址和端口。对于混合连接 NEG,请将网络端点类型设置为 NON_GCP_PRIVATE_IP_PORT
    2. 在创建 NEG 时,指定 Google Cloud 可用区,以最大限度地减少 Google Cloud 与本地或其他云环境之间的地理位置距离。例如,如果您在德国法兰克福的某一本地环境中托管一项服务,则可以在创建 NEG 时指定 europe-west3-a Google Cloud 可用区。
    3. 将此混合连接 NEG 添加为后端服务的后端。
  • Google Cloud 后端

    按如下方式配置 Google Cloud 端点:

    1. 为 Google Cloud 后端创建单独的后端服务。
    2. 在您设置混合连接的同一区域内配置多个后端(可用区级 NEG 或实例组)。

需要考虑的其他事项:

  • 每个混合连接 NEG 只能包含相同类型 (NON_GCP_PRIVATE_IP_PORT) 的网络端点。

  • 后端服务不能同时使用其他 NEG 类型或实例组作为后端。后端服务上所有后端的类型必须相同。 如果您在 Google Cloud 上有后端,则必须为其创建单独的后端服务。这是因为基于 Google Cloud 的后端将使用不同类型的后端(实例组或可用区级 NEG),并且不支持具有混合后端类型的后端服务。

  • 后端服务的负载均衡方案必须是 EXTERNAL_MANAGED(对于全球外部 HTTP(S) 负载均衡器)、EXTERNAL(对于全球外部 HTTP(S) 负载均衡器(经典版)、TCP 代理负载均衡器和 SSL 代理负载均衡器)或者 INTERNAL_MANAGED(对于内部 HTTP(S) 负载均衡器)。INTERNAL_SELF_MANAGED 支持使用混合连接 NEG 的 Traffic Director 多环境部署

  • 后端服务协议必须是 HTTPHTTPSHTTP2 之一(对于 HTTP(S) 负载均衡器),以及 TCPSSL(对于 TCP 代理负载均衡器和 SSL 代理负载均衡器)。如需查看每个负载均衡器支持的后端服务协议列表,请参阅从负载均衡器到后端的协议

  • 对于外部和内部 HTTP(S) 负载平衡,后端的平衡模式都必须为 RATE;对于 TCP/SSL 代理负载平衡,后端模式必须为 CONNECTION。如需详细了解平衡模式,请参阅后端服务概览

  • 如需添加更多网络端点,请更新附加到后端服务的后端。

健康检查

每个后端服务都必须与用于检查后端运行状况的运行状况检查相关联。为了让运行状况检查探测能够正常工作,您必须创建防火墙规则以允许来自 Google 的探测 IP 地址范围130.211.0.0/2235.191.0.0/16)的流量到达访问端点。

对于 Google Cloud 外部的后端,请在本地和其他云网络上创建防火墙规则。请与您的网络管理员联系,了解相关信息。 用于混合连接的 Cloud Router 路由器还必须通告 Google 运行状况检查探测所使用的范围。要通告的范围包括 35.191.0.0/16130.211.0.0/22

对于 Google Cloud 中的后端,请在 Google Cloud 中创建防火墙规则,如本示例所示

限制

  • Google Cloud Console 不支持混合连接 NEG。如需创建、删除或管理混合连接 NEG,您必须使用 Google Cloud CLI 或 REST API。
  • 用于混合连接的 Cloud Router 必须通过全球动态路由启用。不支持区域动态路由和静态路由。
  • 必须在同一区域中配置内部 HTTP(S) 负载平衡和混合连接。如果这些它们是在不同的区域中配置的,您可能会看到后端运行状况良好,但系统不会将客户端的请求转发到后端。
  • 从负载平衡器到此处记录的后端的加密连接的注意事项,也适用于在混合连接 NEG 中配置的非 Google Cloud 后端端点。

    请务必检查混合连接配置的安全设置。目前,高可用性 Cloud VPN 连接默认加密 (IPSec)。Cloud Interconnect 连接默认不加密。如需了解详情,请参阅 Google Cloud 中的传输加密白皮书。

日志记录

与记录针对其他 HTTP(S) 负载平衡后端发出的请求一样,代理到混合 NEG 中端点的请求会记录到 Cloud Logging。如需了解详情,请参阅 HTTP(S) 负载平衡日志记录和监控

如果您为负载平衡器启用 Cloud CDN,则系统还会记录缓存命中数。

配额

您可以根据现有网络端点组配额允许的网络端点来配置任意数量的混合 NEG。如需了解详情,请参阅 NEG 后端每个 NEG 的端点数

后续步骤