TCP 代理负载平衡概览

Google Cloud TCP 代理负载平衡可让您为世界各地的所有用户使用同一个 IP 地址。TCP 代理负载平衡器可以自动将流量路由到最靠近用户的后端。

如需实现全球性负载平衡,您需要使用 Network Service Tiers 的优质层级(此为默认层级)。否则,系统将在区域范围内处理负载平衡。

TCP 代理负载平衡用于处理众所周知的特定端口(例如用于简单邮件传输协议 (SMTP) 的端口 25)上的 TCP 流量。如需了解详情,请参阅端口规范。对于在这些端口上加密的客户端流量,请使用 SSL 代理负载平衡

如需了解各种 Google Cloud 负载平衡器之间的具体区别,请参阅以下文档:

TCP 代理负载平衡同时支持使用 IPv4 和 IPv6 地址来路由客户端流量。客户端 IPv6 请求在负载平衡层终止,然后通过 IPv4 经过代理转发到您的后端。

使用 TCP 代理负载平衡时,您可以在负载平衡层终止客户端 TCP 会话,随后使用 TCP 或 SSL 将流量转发到您的后端实例。

TCP 代理负载平衡示例

使用 TCP 代理负载平衡,经由 TCP 连接传输的流量会在负载平衡层终止,然后通过代理转发到最靠近的可用后端。

在此示例中,来自首尔用户和波士顿用户的流量的连接会在负载平衡层终止。这些连接在图中标为 1a2a。系统建立了从负载平衡器到选定后端实例的单独连接。这些连接在图中标为 1b2b

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

TCP 代理负载平衡可以配置为全球负载平衡服务。 使用这种配置时,您可以将后端部署到多个区域中,全球性负载平衡服务会自动将流量定向到离用户最近的区域。如果一个区域已满负荷,则负载平衡器会自动将新的连接定向到另一个具有可用容量的区域。现有用户连接将保留在当前区域中。

优势

以下是使用 TCP 代理负载平衡的一些优点:

  • 智能路由。负载平衡器可以将请求路由到有容量可用的后端位置。相比之下,L3/L4 负载平衡器必须将请求路由到区域后端,但不考虑容量。使用更智能的路由可以按 N+1 或 N+2(而不是 x*N)模式进行预配。

  • 安全修补。如果 TCP 栈中出现漏洞,Cloud Load Balancing 会在负载平衡器上自动应用补丁程序,以确保后端安全。

  • TCP 代理负载平衡支持以下端口:25、43、110、143、195、443、465、587、700、993、995、1883、3389、5222、5432、5671、5672、5900、5901、6379、8085、8099、9092、9200、9300。

网络服务层级中的负载平衡器行为

如果您使用优质层级,则 TCP 代理负载平衡是一项全球性服务。您可以只拥有一个后端服务,但该后端服务(在优质层级中)可以在多个区域拥有后端。流量按以下方式分配给后端:

  1. 当客户端发送请求时,负载平衡服务根据来源 IP 地址确定请求的大致来源。
  2. 负载平衡服务确定后端服务所拥有的后端的位置、后端的总体容量以及后端当前的总体使用率。
  3. 如果距离用户最近的后端实例具有可用容量,则请求会被转发给最近的一组后端。
  4. 发送到指定区域的传入请求会在该区域中的所有可用后端实例之间均匀分配。不过,如果负载非常小,则分配看上去可能不均匀。
  5. 如果指定区域中没有运行状况良好且有可用容量的后端实例,负载平衡器会改为将请求发送到具有可用容量的次近区域。

如果您使用标准层级,则 TCP 代理负载平衡是一项区域性服务。其后端必须全部位于负载平衡器的外部 IP 地址和转发规则使用的区域内。

组件

下面介绍了 TCP 代理负载平衡器的组件。

转发规则和地址

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

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

目标代理

TCP 代理负载平衡会终止来自客户端的 TCP 连接并创建与后端的新连接。默认情况下,系统不会保留原始客户端 IP 地址和端口信息。您可以使用 PROXY 协议来保留此信息。目标代理会将传入请求直接路由到后端服务。

后端服务

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

每个 TCP 代理负载平衡器都有一个后端服务资源。对后端服务的更改不是即时的。更改可能需要几分钟才能传播到 Google 前端 (GFE)。

每项后端服务都会指定要为可用后端执行的运行状况检查

为了尽量减少用户遭遇的中断,您可以在后端服务上启用连接排空功能。在终止后端、手动移除后端或通过自动扩缩器移除后端时可能会发生此类中断。如需详细了解如何利用连接排空功能来尽可能减少服务中断,请参阅启用连接排空

后端协议

为 TCP 代理负载平衡器配置后端服务时,您需要设置后端服务用来与后端通信的协议。您可以选择 SSLTCP。负载平衡器仅使用您指定的协议,不会尝试通过其他协议协商连接。

防火墙规则

后端实例必须允许来自负载平衡器 GFE/运行状况检查范围的连接。这意味着您必须创建防火墙规则以允许来自 130.211.0.0/2235.191.0.0/16 的流量到达您的后端实例或端点。这些 IP 地址范围将用作运行状况检查数据包以及发送到后端的所有负载平衡数据包的来源。

您为此防火墙规则配置的端口必须允许流量传入后端实例或端点:

  • 您必须允许每个转发规则使用的端口
  • 您必须允许针对每个后端服务配置的每个运行状况检查所使用的端口

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

如需详细了解运行状况检查探测以及为什么需要允许来自 130.211.0.0/2235.191.0.0/16 的流量,请参阅探测 IP 地址范围和防火墙规则

来源 IP 地址

每个后端虚拟机 (VM) 实例或容器所识别的数据包的来源 IP 地址是以下范围内的 IP 地址:

  • 35.191.0.0/16
  • 130.211.0.0/22

经过负载平衡处理的实际流量的来源 IP 地址与运行状况检查探测 IP 地址范围相同。

后端所识别的流量的来源 IP 地址不是负载平衡器的 Google Cloud 外部 IP 地址。换句话说,存在两个 HTTP:SSL 或 TCP 会话:

  • 会话 1(从原始客户端到负载平衡器 (GFE)):

    • 来源 IP 地址:原始客户端(如果客户端位于 NAT 后面,则为外部 IP 地址)。
    • 目的地 IP 地址:您的负载平衡器的 IP 地址。
  • 会话 2(从负载平衡器 (GFE) 到后端虚拟机或容器):

    • 来源 IP 地址:以下范围之一的某个 IP 地址:35.191.0.0/16130.211.0.0/22

      您无法预测实际的来源地址。

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

平衡模式

当您向后端服务添加后端时,可以设置负载平衡模式

对于 TCP 代理负载平衡,平衡模式可以为 CONNECTIONUTILIZATION

如果负载平衡模式为 CONNECTION,则系统会根据后端可以处理的并发连接数来分配负载。您还必须指定以下参数之一:maxConnections(区域托管实例组除外)、maxConnectionsPerInstancemaxConnectionsPerEndpoint

如果负载平衡模式为 UTILIZATION,则系统会根据实例组中的实例利用率来分配负载。

如需了解如何比较负载平衡器类型和支持的平衡模式,请参阅负载平衡方法

会话亲和性

会话亲和性将来自同一客户端的所有请求发送到同一个后端(只要该后端运行状况良好且有可用容量)。

TCP 代理负载平衡提供客户端 IP 亲和性,它将来自同一客户端 IP 地址的所有请求转发到同一个后端。

开放端口

TCP 代理负载平衡器是反向代理负载平衡器。负载平衡器终止传入的连接,然后打开从负载平衡器通向后端的新连接。反向代理功能由 Google 前端 (GFE) 提供。

GFE 拥有多个开放端口,可支持其他 Google Cloud 负载平衡器和其他 Google 服务。如果您针对负载平衡器的外部 IP 地址运行安全或端口扫描,则其他端口可能会打开。

这不会影响 TCP 代理负载平衡器。在定义 SSL 代理负载平衡器时使用的外部转发规则只能引用一组特定的端口。使用其他 TCP 目的地端口的流量不会转发到负载平衡器的后端。 尝试打开未经授权的端口的 TCP 会话,您可以验证系统未处理其他端口的流量。处理请求的 GFE 会使用 TCP 重置 (RST) 数据包关闭连接。

后续步骤