外部代理网络负载均衡器概览

本文档介绍了配置 Google Cloud 外部代理网络负载均衡器时需要了解的概念。

外部代理网络负载均衡器是一种反向代理负载均衡器,它会将来自互联网的 TCP 流量分配到您的 Google Cloud Virtual Private Cloud (VPC) 网络中的虚拟机 (VM) 实例。使用外部代理网络负载均衡器时,传入的 TCP 或 SSL 用户流量会在该负载均衡器处终止。然后,新连接使用 TCP 或 SSL(推荐)将流量转发到最近的可用后端。如需查看更多应用场景,请参阅代理网络负载均衡器概览

外部代理网络负载均衡器可让您为世界各地的所有用户使用同一个 IP 地址。该负载均衡器会自动将流量路由到离用户最近的后端。

在此示例中,来自爱荷华州和波士顿用户的 SSL 流量会在负载均衡层终结,然后系统会建立与所选后端的单独连接。

具有 SSL 终止功能的 Cloud Load Balancing。
具有 SSL 终结功能的 Cloud Load Balancing(点击可放大)。

操作模式

您可以使用以下模式配置外部代理网络负载均衡器:

  • 传统代理网络负载均衡器是在全球分布式 Google Front End (GFE) 上实现的。此负载均衡器可以配置为分别使用目标 TCP 代理或目标 SSL 代理来处理 TCP 或 SSL 流量。使用高级层级时,此负载均衡器可以配置为全球负载均衡服务。使用标准层级时,此负载均衡器会配置为区域级负载均衡服务。全球外部代理网络负载均衡器也可用于其他使用 SSL 的协议,例如基于 SSL 的 WebSocket 和 IMAP。
  • 全球外部代理网络负载均衡器是基于全球分布式 GFE 实现,并支持高级流量管理功能。此负载均衡器可以配置为分别使用目标 TCP 代理或目标 SSL 代理来处理 TCP 或 SSL 流量。此负载均衡器配置为高级层级的全球负载均衡服务。全球外部代理网络负载均衡器也可用于其他使用 SSL 的协议,例如基于 SSL 的 WebSocket 和 IMAP。
  • 区域级外部代理网络负载均衡器在开源 Envoy 代理软件栈上实现。它只能处理 TCP 流量。此负载均衡器配置为区域级负载均衡服务,可以使用高级层级或标准层级。

识别模式

如需确定负载均衡器的模式,请完成以下步骤。

控制台

  1. 在 Google Cloud 控制台中,转到负载均衡页面。

    转到“负载均衡”

  2. 负载均衡器标签页上会显示负载均衡器类型、协议和区域。如果区域为空白,则负载均衡器为全球负载均衡器。

    下表总结了如何识别负载均衡器的模式。

    负载均衡器模式 负载均衡器类型 权限类型 区域
    传统代理网络负载均衡器 网络(传统代理) 外部
    全局外部代理网络负载均衡器 网络(代理) 外部
    区域级外部代理网络负载均衡器 网络(代理) 外部 指定一个区域

gcloud

  1. 使用 gcloud compute forwarding-rules describe 命令:

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME
    
  2. 在命令输出中,检查负载均衡方案、区域和网络层级。下表总结了如何识别负载均衡器的模式。

    负载均衡器模式 负载均衡方案 转发规则 网络层级
    传统代理网络负载均衡器 外部 Global 标准或优质
    全局外部代理网络负载均衡器 EXTERNAL_MANAGED Global 高级
    区域级外部代理网络负载均衡器 EXTERNAL_MANAGED 区域级 标准或优质

架构

下图展示了全球和区域级外部代理网络负载均衡器的组件。

全球

下图展示了全球外部代理网络负载均衡器部署的组件。此架构适用于全球外部代理网络负载均衡器和高级层级中的传统代理网络负载均衡器。



  
  全球外部代理网络负载均衡器组件
全球外部代理网络负载均衡器组件(点击可放大)。

区域

下图展示了区域级外部代理网络负载均衡器部署的组件。



  
  区域级外部代理网络负载均衡器组件
区域级外部代理网络负载均衡器组件(点击可放大)。

下面介绍了外部代理网络负载均衡器的组件。

代理专用子网

代理专用子网提供了一组 IP 地址,供 Google 用于代表您运行 Envoy 代理。您必须在其中使用负载均衡器的 VPC 网络的每个区域中创建一个代理专用子网。此代理专用子网的 --purpose 标志设置为 REGIONAL_MANAGED_PROXY。同一区域和 VPC 网络中的所有基于 Envoy 的区域级负载均衡器共用来自同一代理专用子网的 Envoy 代理池。

一个区域和 VPC 网络中的所有负载均衡器的后端虚拟机或端点都会收到来自代理专用子网的连接。

注意事项:

  • 代理专用子网仅用于 Envoy 代理,不可用于您的后端。
  • 负载均衡器的 IP 地址不位于代理专用子网中。负载均衡器的 IP 地址由其外部代管式转发规则定义。

转发规则和 IP 地址

转发规则会按照 IP 地址、端口和协议将流量路由到由目标代理和后端服务组成的负载均衡配置。

每条转发规则都会引用一个 IP 地址,可用于应用的 DNS 记录。您可以预留可用的静态 IP 地址,也可以让 Cloud Load Balancing 为您分配一个 IP 地址。我们建议您预留静态 IP 地址。否则,每当您删除转发规则并创建新的转发规则时,都必须使用新分配的临时 IP 地址更新 DNS 记录。

此负载均衡器定义中使用的外部转发规则只能引用 1-65535 之间的一个端口。如果您希望支持多个连续端口,则需要配置多个转发规则。由于多个转发规则可以配置有相同的虚拟 IP 地址和不同的端口,因此,您可以将具有不同自定义端口的多个应用代理到同一 TCP 代理虚拟 IP 地址。如需了解详情,请参阅转发规则的端口规范

如需支持多个连续端口,您必须配置多个转发规则。多个转发规则可以配置有相同的虚拟 IP 地址和不同的端口。因此,您可以将具有不同自定义端口的多个应用代理到同一 TCP 代理虚拟 IP 地址。

下表比较了不同类型的负载均衡器。

负载均衡器模式 网络服务层级 转发规则、IP 地址和负载均衡方案 从互联网到负载均衡器前端的路由
传统代理网络负载均衡器 高级层级

全球外部转发规则

全球外部 IP 地址

负载均衡方案:EXTERNAL

请求路由到互联网中最靠近客户端的 GFE。
标准层级

区域级外部转发规则

区域级外部 IP 地址

负载均衡方案:EXTERNAL

请求路由到负载均衡器所在区域中的 GFE。
全局外部代理网络负载均衡器 优质层级

全球外部转发规则

全球外部 IP 地址

负载均衡方案:EXTERNAL_MANAGED

请求路由到互联网中最靠近客户端的 GFE。
区域级外部代理网络负载均衡器 高级层级和标准层级 *

区域级外部转发规则

区域级外部 IP 地址

负载均衡方案:EXTERNAL_MANAGED

请求路由到负载均衡器所在区域中的 Envoy 代理。
* 您无法使用 Google Cloud 控制台在高级层级中创建区域级外部代理网络负载均衡器。此外,Google Cloud 控制台对于这些负载均衡器仅提供支持标准层级的区域。请改用 gcloud 或 API。

目标代理

外部代理网络负载均衡器会终结来自客户端的连接并创建与后端的新连接。目标代理会将这些新连接路由到后端服务。

根据应用需要处理的流量类型,您可以使用目标 TCP 代理或目标 SSL 代理来配置外部代理网络负载均衡器。

  • 目标 TCP 代理:如果您需要 TCP 流量,则使用目标 TCP 代理来配置该负载均衡器。
  • 目标 SSL 代理:如果您需要加密的客户端流量,则使用目标 SSL 代理来配置该负载均衡器。这种类型的负载均衡器仅适用于非 HTTP(S) 流量。对于 HTTP(S) 流量,我们建议您使用外部应用负载均衡器

默认情况下,目标代理不会保留原始客户端 IP 地址和端口信息。您可以通过在目标代理上启用 PROXY 协议来保留此信息。

负载均衡器模式 网络服务层级 目标代理
传统代理网络负载均衡器 高级层级 targetTcpProxiestargetSslProxies
标准层级 targetTcpProxiestargetSslProxies
全局外部代理网络负载均衡器 优质层级 targetTcpProxiestargetSslProxies
区域级外部代理网络负载均衡器 高级层级和标准层级 regionTargetTcpProxies

SSL 证书

只有在您使用目标 SSL 代理部署全球外部代理网络负载均衡器和传统代理网络负载均衡器时,才需要 SSL 证书。

使用目标 SSL 代理的外部代理网络负载均衡器需要在负载均衡器配置中包含私钥和 SSL 证书:

  • Google Cloud 提供了两种为目标 SSL 代理分配私钥和 SSL 证书的配置方法:Compute Engine SSL 证书和 Certificate Manager。如需了解每个配置的说明,请参阅 SSL 证书概览中的证书配置方法

  • Google Cloud 提供两种证书类型:自行管理的证书和 Google 管理的证书。如需了解每种类型的说明,请参阅 SSL 证书概览中的证书类型

后端服务

后端服务会将传入的流量定向到一个或多个关联的后端。每个后端由实例组网络端点组以及有关后端服务容量的信息组成。后端服务容量可以基于 CPU 或每秒请求数 (RPS) 计算。

每个负载均衡器都有一个后端服务资源,用于指定要为可用后端执行的健康检查

对后端服务所做的更改不是即时生效的。更改可能需要几分钟才能传播到 GFE。为确保最大限度地减少对用户造成的中断,您可以在后端服务上启用连接排空功能。在终止后端、手动移除后端或通过自动扩缩程序移除后端时可能会发生此类中断。如需详细了解如何使用连接排空功能来最大限度地减少服务中断,请参阅启用连接排空功能

如需详细了解后端服务资源,请参阅后端服务概览

下表指定了支持的后端功能。

负载均衡器模式 后端服务上支持的后端
实例组 可用区级 NEG 互联网 NEG 无服务器 NEG 混合 NEG Private Service Connect NEG GKE
传统代理网络负载均衡器 使用独立的可用区级 NEG
全局外部代理网络负载均衡器 GCE_VM_IP_PORT 类型端点 *
区域级外部代理网络负载均衡器 GCE_VM_IP_PORT 类型端点 仅限区域级 NEG 添加 Private Service Connect NEG

* 仅支持 SSL 协议。

后端和 VPC 网络

所有后端都必须位于同一项目中,但可以位于不同的 VPC 网络中。不同的 VPC 网络不需要使用 VPC 网络对等互连连接,因为 GFE 代理系统直接与各自的 VPC 网络中的后端进行通信。

与后端通信的协议

为外部代理网络负载均衡器配置后端服务时,您需要设置后端服务用来与后端通信的协议。

  • 对于全球外部代理网络负载均衡器,您可以选择 TCP 或 SSL。
  • 对于全球外部代理网络负载均衡器,您可以选择 TCP 或 SSL。
  • 对于区域级外部代理网络负载均衡器,您可以使用 TCP。

该负载均衡器仅使用您指定的协议,不会尝试通过其他协议协商连接。

防火墙规则

以下防火墙规则是必需的:

  • 对于全球外部代理网络负载均衡器,允许来自 GFE 的流量到达后端的入站流量 allow 防火墙规则。
  • 对于全球外部代理网络负载均衡器,允许来自 GFE 的流量到达后端的入站流量 allow 防火墙规则。
  • 对于区域级外部代理网络负载均衡器,允许来自代理专用子网的流量到达后端的入站流量防火墙规则。
  • 允许来自健康检查探测范围的流量到达后端的入站流量 allow 防火墙规则。如需详细了解健康检查探测以及必须允许来自它们的流量的原因,请参阅探测 IP 范围和防火墙规则

防火墙规则在虚拟机实例级层(而不是在 GFE 代理级层)实现。您无法使用防火墙规则来阻止流量到达负载均衡器。

这些防火墙规则的端口必须如下配置:

  • 允许发送到每个后端服务的健康检查的目的地端口的流量。
  • 对于实例组后端:通过后端服务的已命名端口与每个实例组上与该已命名端口关联的端口号之间的映射来确定要配置的端口。分配给同一后端服务的各实例组的端口号可能各不相同。
  • 对于 GCE_VM_IP_PORT NEG 可用区级 NEG 后端:允许发送到端点的端口号的流量。

下表汇总了防火墙规则所需的来源 IP 地址范围。

负载均衡器模式 健康检查来源范围 请求来源范围
传统代理网络负载均衡器
  • 35.191.0.0/16
  • 130.211.0.0/22
这些范围适用于 GFE 中的健康检查探测和请求。
全局外部代理网络负载均衡器
  • 35.191.0.0/16
  • 130.211.0.0/22
这些范围适用于 GFE 中的健康检查探测和请求。
区域级外部代理网络负载均衡器1、2
  • 35.191.0.0/16
  • 130.211.0.0/22
这些范围适用于健康检查探测。

1 对于混合 NEG,无需将 Google 的健康检查探测范围列入许可名单。但是,如果您在单个后端服务中结合使用混合和可用区级 NEG,则需要将可用区级 NEG 的 Google 健康检查探测范围列入许可名单。

2 对于区域级互联网 NEG,健康检查是可选的。来自使用区域级互联网 NEG 的负载均衡器的流量源自代理专用子网,然后(使用 Cloud NAT)经过 NAT 转换为手动或自动分配的 NAT IP 地址。此流量包括健康检查探测以及从负载均衡器发送到后端的用户请求。如需了解详情,请参阅区域级 NEG:使用 Cloud NAT 出站

来源 IP 地址

后端所识别的数据包的来源 IP 地址是负载均衡器的 Google Cloud 外部 IP 地址。换句话说,存在两个 TCP 连接。

对于传统代理网络负载均衡器和全球外部代理网络负载均衡器
  • 连接 1,即从原始客户端到负载均衡器 (GFE) 的连接:

    • 来源 IP 地址:原始客户端(如果客户端位于 NAT 或转发代理后面,则为外部 IP 地址)。
    • 目标 IP 地址:您的负载均衡器的 IP 地址。
  • 连接 2,即从负载均衡器 (GFE) 到后端虚拟机或端点的连接:

    • 来源 IP 地址防火墙规则中指定的某个范围中的一个 IP 地址。

    • 目的地 IP 地址:VPC 网络中的后端虚拟机或容器的内部 IP 地址。

对于区域级外部代理网络负载均衡器
  • 连接 1,从原始客户端到负载均衡器(代理专用子网):

    • 来源 IP 地址:原始客户端(如果客户端位于 NAT 或转发代理后面,则为外部 IP 地址)。
    • 目标 IP 地址:您的负载均衡器的 IP 地址。
  • 连接 2,从负载均衡器(代理专用子网)到后端虚拟机或端点):

    • 来源 IP 地址代理专用子网中的 IP 地址,该 IP 地址在与负载均衡器部署在同一区域和网络的所有基于 Envoy 的负载均衡器之间共享。

    • 目的地 IP 地址:VPC 网络中的后端虚拟机或容器的内部 IP 地址。

开放端口

外部代理网络负载均衡器是反向代理负载均衡器。负载均衡器终结传入的连接,然后打开从负载均衡器通向后端的新连接。这些负载均衡器使用全球 Google Front End (GFE) 代理实现。

GFE 具有多个开放端口,用于支持在同一架构上运行的其他 Google 服务。运行端口扫描时,您可能会看到 GFE 上运行的其他 Google 服务的其他开放端口。

从审核角度对基于 GFE 的负载均衡器的 IP 地址运行端口扫描没有用,原因如下:

  • 执行 TCP SYN 探测时,端口扫描(例如使用 nmap)通常不需要响应数据包或 TCP RST 数据包。GFE 仅会针对已配置转发规则的端口发送 SYN-ACK 数据包以响应 SYN 探测。此外,GFE 仅会将数据包发送到您的后端,以响应发送到负载均衡器的 IP 地址以及在其转发规则上配置的目的地端口的数据包。发送到其他 IP 地址或端口的数据包不会发送到后端。

    GFE 可实现 Google Cloud Armor 等安全功能。借助 Google Cloud Armor 标准版,GFE 可提供始终有效的保护,以防范耗尽容量的 DDoS 攻击和基于协议的 DDoS 攻击以及泛洪攻击。即使您未明确配置 Google Cloud Armor,也可以使用此保护。您仅需在配置安全政策或注册 Managed Protection Plus 时支付费用。

  • 发送到负载均衡器的 IP 地址的数据包可以由 Google 舰队中的任何 GFE 进行响应;但是,扫描负载均衡器 IP 地址和目标端口组合只会查询每个 TCP 连接的单个 GFE。负载均衡器的 IP 地址未分配给单个设备或系统。因此,扫描基于 GFE 的负载均衡器的 IP 地址不会扫描 Google 舰队中的所有 GFE。

考虑到这一点,您可以通过以下几种更有效的方法审核后端实例的安全性:

  • 安全审核者应检查负载均衡器配置的转发规则配置。转发规则定义负载均衡器接受数据包并将其转发到后端的目的地端口。对于基于 GFE 的负载均衡器,每条外部转发规则只能引用单个目的地 TCP 端口

  • 安全审核者应检查适用于后端虚拟机的防火墙规则配置。您设置的防火墙规则会阻止从 GFE 流向后端虚拟机的流量,但不会阻止流向 GFE 的传入流量。如需了解最佳做法,请参阅防火墙规则部分

共享 VPC 架构

传统代理网络负载均衡器和区域级外部代理网络负载均衡器支持使用共享 VPC 网络的部署。借助共享 VPC,您可以明确划分网络管理员和服务开发者的职责。开发团队可以专注于在服务项目中构建服务,网络基础架构团队则负责预配和管理负载均衡。如果您还不熟悉共享 VPC,请阅读共享 VPC 概览文档

IP 地址 转发规则 目标代理 后端组件
外部 IP 地址必须在负载均衡器所在的项目中定义。 外部转发规则必须在后端实例所在的项目(服务项目)中定义。 目标 TCP 或 SSL 代理必须在后端实例所在的项目中定义。

对于全球外部代理网络负载均衡器,全球后端服务必须在后端实例所在的项目中定义。这些实例必须位于作为后端连接到后端服务的实例组中。与后端服务关联的健康检查必须在后端服务所在的项目中定义。

对于区域级外部代理网络负载均衡器,后端虚拟机通常位于服务项目中。您必须在该服务项目中定义区域级后端服务和健康检查。

流量分配

将后端实例组或 NEG 添加到后端服务时,您可以指定一种负载均衡模式,用于定义衡量后端负载和目标容量的方法。

对于外部代理网络负载均衡器,均衡模式可以为 CONNECTIONUTILIZATION

  • 如果负载均衡模式为 CONNECTION,则系统会根据后端可以处理的连接总数来分配负载。
  • 如果负载均衡模式为 UTILIZATION,则系统会根据实例组中的实例利用率来分配负载。 此均衡模式仅适用于虚拟机实例组后端。

流量在后端之间的分配方式取决于负载均衡器的模式。

传统代理网络负载均衡器

对于全球外部代理网络负载均衡器,均衡模式用于选择最首选的后端(实例组或 NEG)。然后,流量通过轮循方式在后端的实例或端点之间分配。

连接的分配方式

全球外部代理网络负载均衡器可以配置为高级层级的全球负载均衡服务,以及标准层级的区域级服务。

从每个可用区级 GCE_VM_IP_PORT NEG、可用区级实例组或区域级实例组的可用区的角度看,均衡模式和目标选择决定了后端完整性。然后,流量会通过一致哈希在可用区中分配。

对于高级层级

  • 您可以只拥有一个后端服务,但该后端服务可以在多个区域拥有后端。对于全球负载均衡,您可以在多个区域部署后端,负载负载器会自动将流量定向到离用户最近的区域。如果一个区域已经满负荷,则负载均衡器会自动将新的连接定向到另一个具有可用容量的区域。现有用户连接将保留在当前区域中。

  • Google 会从全球所有入网点通告您的负载均衡器的 IP 地址。每个负载均衡器 IP 地址都是全球任播。

  • 如果您使用多个区域中的后端来配置后端服务,则 Google Front End (GFE) 会尝试将请求定向到离用户最近的区域中的健康后端实例组或 NEG。

对于标准层级

  • Google 会从与转发规则的区域关联的接入点通告负载均衡器的 IP 地址。负载均衡器使用区域级外部 IP 地址。

  • 您只能在转发规则所在的区域中配置后端。负载均衡器仅将请求定向到该区域中的健康后端。

全局外部代理网络负载均衡器

对于全球外部代理网络负载均衡器,流量分配取决于负载均衡模式和负载均衡位置政策。

均衡模式决定了应发送到每个组(实例组或 NEG)的流量的权重和比例。负载均衡位置政策 (LocalityLbPolicy) 决定了组中后端的负载均衡方式。

当后端服务收到流量时,它首先会根据后端的均衡模式将流量定向到后端(实例组或 NEG)。选择后端后,系统会根据负载均衡位置政策在后端组中的实例或端点之间分配流量。

详情请参阅以下内容:

连接的分配方式

使用高级层级时,全球外部代理网络负载均衡器可以配置为全球负载均衡服务。

从每个可用区级 GCE_VM_IP_PORT NEG 或可用区级实例组的角度来看,均衡模式和目标选择决定了后端完整性。然后,流量会通过一致哈希在可用区中分配。

  • 您可以只拥有一个后端服务,但该后端服务可以在多个区域拥有后端。对于全球负载均衡,您可以在多个区域部署后端,负载负载器会自动将流量定向到离用户最近的区域。如果一个区域已经满负荷,则负载均衡器会自动将新的连接定向到另一个具有可用容量的区域。现有用户连接将保留在当前区域中。

  • Google 会从全球所有入网点通告您的负载均衡器的 IP 地址。每个负载均衡器 IP 地址都是全球任播。

  • 如果您使用多个区域中的后端来配置后端服务,则 Google Front End (GFE) 会尝试将请求定向到离用户最近的区域中的健康后端实例组或 NEG。

区域级外部代理网络负载均衡器

对于区域级外部代理网络负载均衡器,流量分配取决于负载均衡模式和负载均衡位置政策。

均衡模式决定了应发送到每个组(实例组或 NEG)的流量的权重和比例。负载均衡位置政策 (LocalityLbPolicy) 决定了组中后端的负载均衡方式。

当后端服务收到流量时,它首先会根据后端的均衡模式将流量定向到后端(实例组或 NEG)。选择后端后,系统会根据负载均衡位置政策在后端组中的实例或端点之间分配流量。

详情请参阅以下内容:

会话亲和性

会话亲和性会将来自同一客户端的所有请求发送到同一后端(前提是该后端健康状况良好且具有容量)。

外部代理网络负载均衡器(全球和区域级)提供以下类型的会话亲和性:

  • NONE,没有为负载均衡器设置会话亲和性。
  • 客户端 IP 亲和性,将来自同一客户端 IP 地址的所有请求转发到同一后端。

故障切换

如果后端运行状况不佳,流量会被自动重定向到同一区域内的运行状况良好的后端。如果一个区域内的所有后端健康状况不佳,则流量将分配到其他区域内健康状况良好的后端(仅限全球模式和传统模式)。如果所有后端运行状况不佳,则负载均衡器会丢弃流量。

GKE 应用的负载均衡

如果您在 Google Kubernetes Engine 中构建应用,则可以使用独立 NEG 将流量的负载直接均衡到容器。使用独立 NEG 时,您需要负责创建用于创建 NEG 的 Service 对象,然后将 NEG 与后端服务相关联,以便负载均衡器可以连接到 Pod。

如需查看相关文档,请参阅通过独立可用区级 NEG 实现容器原生负载均衡

限制

  • 您无法使用 Google Cloud 控制台在高级层级创建区域级外部代理网络负载均衡器。此外,Google Cloud 控制台对于这些负载均衡器仅提供支持标准层级的区域。请改用 gcloud CLI 或 API。

  • 在客户端向负载均衡器发送数据之前,全球外部代理网络负载均衡器不会创建与后端的 TCP 连接。这意味着依赖服务器(或后端)来发送第一个数据包的应用将无法运行。

  • 以下限制仅适用于使用 SSL 目标代理部署的传统代理网络负载均衡器和全球外部代理网络负载均衡器:

    • 传统代理网络负载均衡器和全球外部代理网络负载均衡器不支持基于客户端证书的身份验证(也称为双向 TLS 身份验证)。

    • 传统代理网络负载均衡器和全球外部代理网络负载均衡器仅支持证书的通用名称 (CN) 属性或主题备用名称 (SAN) 属性的网域中的小写字符。只有在目标代理中设置为主证书时,系统才会返回网域中包含大写字符的证书。

后续步骤