Cloud Load Balancing 概览

负载均衡器在应用的多个实例间分配用户流量。负载均衡通过分散负载,降低应用出现性能问题的风险。 Google 的 Cloud Load Balancing 构建于 Maglev、Andromeda、Google Front End 和 Envoy 等可靠、高性能的技术之上,与 Google 自己的产品所采用的技术相同。

Cloud Load Balancing 提供了全面的应用和网络负载均衡器组合。使用我们的全球代理负载均衡器,每秒可在多个区域的后端之间分配数百万个请求。我们的 Google Front End 舰队在全球 80 多个不同位置运行,所有这些操作都可通过一个任播 IP 地址实现。使用我们的区域代理负载均衡器实现强大的管辖区控制,将后端和代理保留在您选择的区域中,而无需担心 TLS/SSL 分流。使用我们的直通式负载均衡器快速将多个协议路由到具有直接服务器返回 (DSR) 性能的后端。

Cloud Load Balancing 概览
Cloud Load Balancing 概览(点击可放大)。

Cloud Load Balancing 提供以下负载均衡器功能:

  • 单个任播 IP 地址。凭借 Cloud Load Balancing,您可以将一个任播 IP 地址用作全球各区域中所有后端实例的前端。Cloud Load Balancing 提供跨区域负载均衡功能,包括自动多区域故障切换(即在主要后端健康状况不佳时,可将流量转移到故障切换后端)。Cloud Load Balancing 能够对用户、流量、网络、后端健康状况和其他相关条件的变化即时做出响应。

  • 无缝自动扩缩。Cloud Load Balancing 可以随着您的用户和流量的增长而调整,包括通过将流量转移到全球其他可以接收流量的区域,轻松处理数量巨大的瞬间意外峰值。自动扩缩功能无需预热:您可以在短短几秒的时间里从零调节至所有流量。

  • 软件定义的负载均衡。Cloud Load Balancing 是一项适用于所有流量的完全分布式、软件定义的代管式服务。Cloud Load Balancing 不是基于实例或基于设备的解决方案,因此您不会受限于物理负载均衡基础架构,也不会面对基于实例的负载均衡器固有的高可用性、扩缩和管理难题。

  • 第 4 层和第 7 层负载均衡。使用基于第 4 层的负载均衡,根据来自网络和传输层协议的数据(例如 TCP、UDP、ESP、GRE、ICMP 和 ICMPv6)来定向流量。基于第 7 层的负载均衡,根据特性(例如 HTTP 标头和统一资源标识符)添加请求路由决策。

  • 外部和内部负载均衡。当用户通过互联网访问您的应用时,您可以使用外部负载均衡。当您的客户端位于 Google Cloud 内部时,您可以使用内部负载均衡。

  • 全球和区域负载均衡。您可以将负载均衡的资源分布到单个或多个区域,以在靠近您的用户的位置终结连接,并满足您的高可用性要求。

  • 高级功能支持。Cloud Load Balancing 支持 IPv6 负载均衡、基于来源 IP 的流量导向加权负载均衡、WebSocket、用户定义的请求标头和专用虚拟 IP 地址 (VIP) 协议转发等功能。

    它还包括以下集成:

    • Cloud CDN 集成,实现缓存内容传送。全球外部应用负载均衡器和经典版应用负载均衡器均支持 Cloud CDN。
    • Google Cloud Armor 集成,可保护您的基础架构免受分布式拒绝服务 (DDoS) 攻击和其他定向应用攻击。始终开启的 DDoS 防护适用于全球外部应用负载均衡器、经典版应用负载均衡器、外部代理网络负载均衡器和外部直通网络负载均衡器。此外,Google Cloud Armor 仅支持外部直通式网络负载均衡器的高级网络 DDoS 防护。如需了解详情,请参阅配置高级网络 DDoS 防护

负载均衡器的类型

Cloud Load Balancing 提供两种类型的负载均衡器:应用负载均衡器和网络负载均衡器。如果您需要为具有 HTTP(S) 流量的应用配置第 7 层负载均衡器,则需要选择应用负载均衡器。如果您需要支持 TLS 分流的第 4 层负载均衡器(使用代理负载均衡器),或者需要对 UDP、ESP 和 ICMP 等 IP 协议的支持(使用直通式负载均衡器),则可以选择网络负载均衡器。

应用负载均衡器

应用负载均衡器是基于代理的第 7 层负载均衡器,可让您在任播 IP 地址后面运行和扩缩服务。应用负载均衡器会将 HTTP 和 HTTPS 流量分配到各个 Google Cloud 平台(例如 Compute Engine 和 Google Kubernetes Engine [GKE])上托管的后端,以及 Google Cloud 之外的外部后端。

应用负载均衡器可以在外部或内部进行部署,具体取决于应用是面向互联网还是内部:

  • 外部应用负载均衡器Google Front End (GFE)Envoy 代理上作为代管式服务实现。客户端可以从互联网上的任何位置连接到这些负载均衡器。请注意以下几点:

    • 这些负载均衡器可以采用以下模式部署:全球、区域级或传统
      • 全球外部应用负载均衡器支持多个区域中的后端。
      • 区域级外部应用负载均衡器仅支持单个区域中的后端。
      • 传统应用负载均衡器在高级层级中是全球负载均衡器。在标准层级中,它们只能将流量分配到单个区域内的后端。
    • 应用负载均衡器使用开源 Envoy 代理来启用高级流量管理功能
  • 内部应用负载均衡器基于 Andromeda 网络虚拟化堆栈和开源 Envoy 代理构建而成。此负载均衡器为第 7 层应用数据提供内部基于代理的负载均衡。负载均衡器使用内部 IP 地址,该地址只能由同一 VPC 网络中的客户端或连接到您的 VPC 网络的客户端访问。请注意以下几点:

    • 这些负载均衡器可以采用以下模式部署:区域级或跨区域
    • 区域级内部应用负载均衡器仅支持单个区域中的后端。
    • 跨区域内部应用负载均衡器支持多个区域中的后端,并且始终可在全球范围内访问。任何 Google Cloud 区域的客户端都可以将流量发送到负载均衡器。

下图显示了一个应用负载均衡器架构示例。

应用负载均衡器架构。
应用负载均衡器架构(点击可放大)。

网络负载均衡器

网络负载均衡器是第 4 层负载均衡器,可处理 TCP、UDP 或其他 IP 协议流量。这些负载均衡器可用作代理负载均衡器或直通式负载均衡器。您可以根据应用的需求及其需要处理的流量类型来选择负载均衡器。如果您要配置支持本地和其他云环境中的高级流量控制和后端的反向代理负载均衡器,请选择代理网络负载均衡器。如果您要保留客户端数据包的来源 IP 地址、希望服务器直接返回响应,或者想要处理各种 IP 协议(例如 TCP、UDP、ESP、GRE、ICMP 和 ICMPv6),请选择直通式网络负载均衡器。

代理网络负载均衡器

代理网络负载均衡器是第 4 层反向代理负载均衡器,用于将 TCP 流量分配到 Google Cloud VPC 网络中的虚拟机 (VM) 实例。流量会在负载均衡层终结,然后使用 TCP 转发到最近的可用后端。

代理网络负载均衡器可以在外部或内部进行部署,具体取决于应用是面向互联网还是内部。

  • 外部代理网络负载均衡器是第 4 层负载均衡器,用于将来自互联网的流量分配到 Google Cloud VPC 网络、本地或其他云环境中的后端。这些负载均衡器构建在 Google Front End (GFE)Envoy 代理上。

    这些负载均衡器可以采用以下模式部署:全球、区域级或传统

    • 全球外部代理网络负载均衡器支持多个区域中的后端。
    • 区域级外部代理网络负载均衡器支持单个区域中的后端。
    • 传统代理网络负载均衡器在高级层级中是全球负载均衡器。在标准层级中,它们只能将流量分配到单个区域内的后端。
  • 内部代理网络负载均衡器是基于 Envoy 代理的区域级第 4 层负载均衡器,可让您在内部 IP 地址后面运行和扩缩只能由同一 VPC 网络中的客户端或连接到您的 VPC 网络的客户端访问的 TCP 服务流量。

    这些负载均衡器可以采用以下模式之一部署:区域级或跨区域。

    • 区域级内部代理网络负载均衡器仅支持单个区域中的后端。
    • 跨区域内部代理网络负载均衡器支持多个区域中的后端,并且始终可在全球范围内访问。任何 Google Cloud 区域的客户端都可以将流量发送到负载均衡器。

下图展示了一个代理网络负载均衡器架构示例。

代理网络负载均衡器架构。
代理网络负载均衡器架构(点击可放大)。

直通式网络负载均衡器

直通式网络负载均衡器是第 4 层区域级直通负载均衡器。这些负载均衡器会在与负载均衡器位于同一区域的后端之间分配流量。它们是使用 Andromeda 虚拟网络和 Google Maglev 实现的。

顾名思义,这些负载均衡器不是代理。经过负载均衡的数据包由具有数据包的来源和目的地 IP 地址、协议的后端虚拟机接收,并且如果协议基于端口,则来源和目的地端口保持不变。经过负载均衡的连接会在后端终结。来自后端虚拟机的响应直接发送到客户端,而不是通过负载均衡器返回。其行业术语称为直接服务器返回 (DSR)。

这些负载均衡器以两种模式部署,具体取决于负载均衡器是面向互联网的负载均衡器还是内部负载均衡器:

  • 外部直通式网络负载均衡器基于 Maglev 构建。无论网络服务层级如何,客户端都可以从互联网上的任何位置连接到这些负载均衡器。负载均衡器还可以接收来自具有外部 IP 地址的 Google Cloud 虚拟机的流量,或者接收来自可通过 Cloud NAT 或基于实例的 NAT 访问互联网的 Google Cloud 虚拟机的流量。

    您可以使用后端服务目标池来部署外部直通式网络负载均衡器的后端。对于新部署,我们建议使用后端服务。

  • 内部直通式网络负载均衡器基于 Andromeda 网络虚拟化堆栈构建而成。借助内部直通式网络负载均衡器,您可以在只能由位于同一 VPC 网络中的系统或连接到 VPC 网络的系统访问的内部负载均衡 IP 地址后面进行 TCP/UDP 流量负载均衡。此负载均衡器只能在高级层级中配置。

下图展示了直通式网络负载均衡器架构示例。

直通式网络负载均衡器架构。
直通式网络负载均衡器架构(点击可放大)。

选择负载均衡器

如需确定要使用的 Cloud Load Balancing 产品,您必须先确定负载均衡器必须处理的流量类型。一般来说,如果您需要为具有 HTTP(S) 流量的应用提供灵活的功能集,则需要选择应用负载均衡器。当您需要大规模分流 TLS 或支持 UDP,或者需要向应用公开客户端 IP 地址时,应选择网络负载均衡器。

根据您的应用要求,您可以进一步缩小选择范围:您的应用是外部(面向互联网)还是内部,您需要在全球范围还是在区域范围内部署后端,以及您是需要高级网络服务层级还是标准网络服务层级。

下图显示了 Cloud Load Balancing 的所有可用部署模式。 如需了解详情,请参阅选择负载均衡器

选择负载均衡器。
选择负载均衡器(点击可放大)。

1 全球外部应用负载均衡器支持两种操作模式:全球模式和传统模式。

2 全球外部代理网络负载均衡器支持两种操作模式:全球模式和传统模式。

3 直通式网络负载均衡器会保留客户端来源 IP 地址。直通式网络负载均衡器还支持其他协议,例如 UDP、ESP 和 ICMP。

Google Cloud 负载均衡器类型摘要

下表提供了有关各负载均衡器的更多具体信息。

负载均衡器 部署模式 流量类型 网络服务层级 负载均衡方案
应用负载均衡器 全球外部 HTTP 或 HTTPS 优质层级 EXTERNAL_MANAGED
区域外部 HTTP 或 HTTPS 高级层级或标准层级 EXTERNAL_MANAGED
经典版 HTTP 或 HTTPS

在高级层级为全球级

在标准层级为区域级

外部
区域级内部 HTTP 或 HTTPS 优质层级 INTERNAL_MANAGED
跨地区内部 HTTP 或 HTTPS 优质层级 INTERNAL_MANAGED
代理网络负载均衡器 全球外部 具有可选 SSL 分流的 TCP 优质层级 EXTERNAL_MANAGED
区域外部 TCP 高级层级或标准层级 EXTERNAL_MANAGED
经典版 具有可选 SSL 分流的 TCP

在高级层级为全球级

在标准层级为区域级

外部
区域级内部 无 SSL 分流的 TCP 优质层级 INTERNAL_MANAGED
跨地区内部 无 SSL 分流的 TCP 优质层级 INTERNAL_MANAGED
直通式网络负载均衡器

外部

始终为区域级

TCP、UDP、ESP、GRE、ICMP 和 ICMPv6 高级层级或标准层级 外部

内部

始终为区域级

TCP、UDP、ICMP、ICMPv6、SCTP、ESP、AH 和 GRE 优质层级 INTERNAL

负载均衡方案是负载均衡器转发规则后端服务的一个特性,指示负载均衡器是可用于内部流量还是外部流量。

负载均衡方案中的术语 *_MANAGED 表示负载均衡器作为 Google Front End (GFE) 上的托管式服务实现,或者作为开源 Envoy 代理上的托管式服务实现。在 *_MANAGED 负载均衡方案中,请求会路由到 GFE 或 Envoy 代理。

接口

您可以使用以下接口配置和更新负载均衡器:

  • Google Cloud CLIGoogle Cloud CLI 中包含的命令行工具;本文档经常调用此工具来完成任务。如需全面了解此工具,请参阅 gcloud CLI 指南。您可以在 gcloud compute 命令组中找到与负载均衡相关的命令。

    您还可以使用 --help 标志获取有关任何 gcloud 命令的详细帮助。

    gcloud compute http-health-checks create --help
    
    
  • Google Cloud 控制台:负载均衡任务可使用 Google Cloud 控制台来完成。

  • REST API:所有负载均衡任务均可使用 Cloud Load Balancing API 来完成。API 参考文档介绍了可供您使用的资源和方法。

  • Terraform:使用开源基础架构即代码工具(如 Terraform)预配、更新和删除 Google Cloud 负载均衡基础架构。

后续步骤