SSL 代理负载平衡概览

SSL 代理负载平衡是一种反向代理负载平衡器,它将来自互联网的 SSL 流量分配到您的 Google Cloud VPC 网络中的虚拟机实例。

为 SSL 流量使用 SSL 代理负载平衡时,用户 SSL (TLS) 连接会在负载平衡层终止,然后使用 SSL(推荐)或 TCP 代理到最近的可用后端实例。如需了解受支持的后端类型,请参阅后端

如果使用优质层级,SSL 代理负载平衡可以配置为全球负载平衡服务。如果使用标准层级,SSL 代理负载平衡器会在区域范围处理负载平衡。如需了解详情,请参阅 Network Service Tiers 中的负载平衡器行为

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

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

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

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

优势

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

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

  • 智能路由。负载平衡器可以将请求路由到有容量可用的后端位置。相比之下,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 堆栈中出现漏洞,我们会自动在负载平衡器上应用补丁程序来确保您的虚拟机安全。

  • 支持以下常见端口: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 功能。

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

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

TCP 代理负载平衡可以配置为优质层级中的全球性负载平衡服务,以及标准层级中的区域性服务。

优质层级

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

流量按以下方式分配给后端:

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

Standard 层级

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

架构

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

转发规则和 IP 地址

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

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

您在 SSL 代理负载平衡器中使用的每个外部转发规则都只能引用转发规则的端口规范中列出的任一端口。

目标代理

SSL 代理负载平衡会终止来自客户端的 SSL 连接并创建与后端的新连接。目标代理会将传入请求直接路由到后端服务。

默认情况下,系统不会保留原始客户端 IP 地址和端口信息。您可以使用 PROXY 协议来保留此信息。

SSL 证书

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

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

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

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

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

后端服务

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

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

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

防火墙规则

后端实例必须允许来自负载平衡器 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 地址。

保留客户端来源 IP 地址

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

开放端口

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

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

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

这不会影响 SSL 代理负载平衡器。SSL 代理负载平衡器定义中使用的外部转发规则都只能引用转发规则的端口规范中列出的端口之一。 目标端口为其他 TCP 端口的流量不会转发到该负载平衡器的后端。

流量分配

TCP 代理负载平衡器将流量分配给后端的方式取决于平衡模式以及所选的用于选择后端的哈希方法(会话亲和性)。

平衡模式

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

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

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

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

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

会话粘性

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

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

故障转移

如果后端运行状况不佳,流量会被自动重定向到同一区域内的运行状况良好的后端。如果一个区域内的所有后端运行状况不佳,则流量将分配到其他区域内运行状况良好的后端(仅限优质层级)。如果所有后端运行状况不佳,则负载平衡器会丢弃流量。

使用说明和限制

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

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

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

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

  • 虽然 SSL 代理负载平衡可以处理 HTTPS 流量,但我们不建议这样做。您应该使用 HTTP(S) 负载平衡来处理 HTTPS 流量。HTTP(S) 负载平衡还具有以下功能,这使其在大多数情况下成为更好的选择:

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

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

后续步骤