SSL 代理负载平衡概览

通过使用 Google Cloud SSL 代理负载平衡处理 SSL 流量,您可以终止负载平衡层的用户 SSL (TLS) 连接,然后使用 SSL(推荐)或 TCP 协议平衡后端实例之间的连接。如需了解受支持的后端类型,请参阅后端

SSL 代理负载平衡用于处理非 HTTP(S) 流量。对于 HTTP(S) 流量,我们建议您使用 HTTP(S) 负载平衡

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

对于客户端流量,SSL 代理负载平衡可支持 IPv4 和 IPv6 地址。客户端 IPv6 请求在负载平衡层终止,然后通过 IPv4 经过代理转发到您的虚拟机。

SSL 代理负载平衡是一种可在全球部署的负载平衡服务。您可以在多个区域部署后端,负载平衡器会自动将流量定向到具有容量的最近区域。如果最近的区域已达到最大负载,则负载平衡器会自动将新的连接定向到另一个具有可用容量的区域。现有用户连接将保留在当前区域中。

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

优点

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

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

  • 更好地利用后端。如果使用的加密算法不便于 CPU 高效运行,则 SSL 处理可能会占用大量 CPU 资源。为了最大限度地提高 CPU 性能,请使用 ECDSA SSL 证书和 TLS 1.2,并且优先选择 ECDHE-ECDSA-AES128-GCM-SHA256 加密套件用于负载平衡器和后端实例之间的 SSL 处理。

  • 证书管理。面向客户的 SSL 证书可以是您获取和管理的证书(自行管理的证书),也可以是 Google 为您获取和管理的证书(Google 管理的证书)。每个 Google 管理的 SSL 证书最多支持 100 个域名。Google 管理的证书支持多个域名。您只需在负载平衡器上预配证书即可。在虚拟机上,您可以使用自签名证书来简化管理。

  • 安全修补。如果 SSL 或 TCP 堆栈中出现漏洞,我们会自动在负载平衡器上应用补丁程序来确保您的虚拟机安全。

  • SSL 代理负载平衡支持以下端口: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。当您将 Google 管理的 SSL 证书与 SSL 代理负载平衡结合使用时,流量的前端端口必须为 443,您才能预配和续订 Google 管理的 SSL 证书。

  • SSL 政策。通过 SSL 政策,您可以控制 SSL 代理负载平衡器与客户端协商的 SSL 功能。

备注

  • 通过未加密的 TCP 在负载平衡层和后端实例之间发送流量,您可以从后端分流 SSL 处理;但是,此举也会降低安全性。因此,我们不建议您这样做。

  • 虽然 SSL 代理负载平衡可以处理 HTTPS,但我们不建议这样做。您应该使用 HTTP(S) 负载平衡来处理 HTTPS 流量。如需了解详情,请参阅常见问题解答

  • 您可以使用 gcloud 命令行工具创建 SSL 政策。

  • SSL 代理负载平衡器不支持基于客户端证书的身份验证(也称为双向 TLS 身份验证)。

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

以下部分介绍了 SSL 代理负载平衡的工作原理。

用例

使用 SSL 代理负载平衡,SSL 连接会在负载平衡层终止,然后通过代理转发到最靠近的可用后端。

在本示例中,爱荷华州和波士顿用户的流量会在负载平衡层终止,然后系统会建立通向所选后端的独立连接。

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

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

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

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

如果您使用标准层级,则 TCP 代理负载平衡是一项区域性服务。其后端必须全部位于负载平衡器的外部 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 地址。

控制 TLS 终止的地理位置

SSL 代理负载平衡器可在全球各处的地理位置终止 TLS,从而最大程度减少客户端与负载平衡器之间的延迟时间。如果您需要控制 TLS 终止的地理位置,应改用网络负载平衡,并终止位于所需区域的后端上的 TLS。

开放端口

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

您设置的防火墙规则会阻止从 GFE 流向后端实例的流量,但不会阻止流向 GFE 的传入流量。

SSL 代理负载平衡器具有许多开放端口,可支持在同一架构上运行的其他 Google 服务。如果您针对负载平衡器的外部 IP 地址运行安全或端口扫描,可能有其他端口看上去处于开放状态。

这不会影响 SSL 代理负载平衡器。在定义 SSL 负载平衡器时使用的外部转发规则只能引用 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 端口的流量不会转发到该负载平衡器的后端。

防火墙规则

后端实例必须允许来自负载平衡器 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 地址范围和防火墙规则

平衡模式

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

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

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

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

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

SSL 证书

您必须在目标 SSL 代理上安装一个或多个 SSL 证书

目标 SSL 代理会使用这些证书来保护 Google 前端 (GFE) 和客户端之间的通信。这些证书可以是自行管理的 SSL 证书或 Google 管理的 SSL 证书。

如需了解 SSL 证书限制和配额,请参阅负载平衡配额页面上的 SSL 证书

为了获得最佳安全性,请对 SSL 代理负载平衡器部署使用端到端加密。如需了解详情,请参阅从负载平衡器到后端的加密

如需了解有关 Google 如何对用户流量进行加密的一般信息,请参阅 Google Cloud 中的传输加密白皮书。

常见问题解答

我何时应该使用 HTTP(S) 负载平衡而不是 SSL 代理负载平衡?

虽然 SSL 代理负载平衡可以处理 HTTPS 流量,但 HTTP(S) 负载平衡还具有额外功能,这使其在大多数情况下成为更好的选择。

HTTP(S) 负载平衡具有以下额外功能:

  • 通过协商处理 HTTP/2 和 SPDY/3.1。
  • 拒绝无效的 HTTP 请求或响应。
  • 根据网址主机和路径将请求转发给不同的虚拟机。
  • Cloud CDN 集成。
  • 在后端实例之间更均匀地分布请求负载,从而提供更好的后端利用率。HTTPS 会对每个请求单独执行负载平衡,而 SSL 代理负载平衡会将来自同一 SSL 或 TCP 连接的所有字节发送到同一个后端实例。

SSL 代理负载平衡可用于其他使用 SSL 的协议,例如使用 SSL 的 WebSocket 和 IMAP。

我可以看到通向负载平衡层的连接的原始 IP 地址吗?

是。您可以将负载平衡器配置为在开头添加一个 PROXY 协议版本 1 标头,以保留原始连接信息。如需了解详情,请参阅更新代理的 PROXY 协议标头

后续步骤