Cloud Load Balancing 概览

负载平衡器在应用的多个实例间分配用户流量。负载平衡通过分散负载,降低应用出现性能问题的风险。

负载平衡的简单概览(点击放大)
负载平衡的简单概览(点击放大)

关于 Cloud Load Balancing

使用 Cloud Load Balancing,您可以通过每秒可响应超过 100 万次查询的系统在尽可能接近用户的位置传送内容。

Cloud Load Balancing 是一项完全分布式、软件定义的代管式服务。它并非基于硬件,因此您无需管理物理负载平衡基础架构。

Google Cloud 提供以下负载平衡功能:

  • 使用单一 IP 地址作为前端
  • 智能地自动扩缩后端
  • 当用户通过互联网访问您的应用时提供外部负载平衡
  • 当您的客户端位于 Google Cloud 内部时提供内部负载平衡
  • 当您的应用可在单个地区内使用时提供地区负载平衡
  • 当您的应用可在全球范围内使用时提供全球负载平衡
  • 直通式负载平衡(另请参阅直接服务器返回 (DSR) 或直接路由
  • 基于代理的负载平衡(作为传递负载平衡的替代方案)
  • 基于第 4 层的负载平衡,根据来自网络和传输层协议的数据(例如 IP 地址和 TCP 或 UDP 端口)来定向流量
  • 基于第 7 层的负载平衡,根据特性(例如 HTTP 标头和统一资源标识符)添加基于内容的路由决策
  • Cloud CDN 集成,实现缓存内容传送

如需了解更多功能,请参阅负载平衡器功能

Cloud Load Balancing 类型

下表总结了每种 Google Cloud 负载平衡器的特征,包括该负载平衡器是使用内部 IP 地址还是外部 IP 地址,该负载平衡器用于地区还是全球,以及支持的 Network Service Tiers 和流量类型。

内部还是外部 地区还是全球 支持的网络层级 代理还是直通 流量类型 负载平衡器类型
内部 地区 仅优质 直通 TCP 或 UDP 内部 TCP/UDP
地区 仅优质 代理 HTTP 或 HTTPS 内部 HTTP(S)
外部 地区 优质或标准 直通 TCP 或 UDP TCP/UDP 网络
优质层级为全球

标准层级实际为地区1
优质或标准 代理 TCP TCP 代理
优质或标准 代理 SSL SSL 代理
优质或标准 代理 HTTP 或 HTTPS 外部 HTTP(S)

1“实际为地区”表示,虽然后端服务是全球的,但如果选择标准层级,外部转发规则和外部 IP 地址必须是地区级的,并且连接到全球后端服务的后端实例组或网络端点组 (NEG) 必须与转发规则和 IP 地址处于同一地区中。如需了解详情,请参阅为 HTTP(S) 负载平衡、TCP 代理负载平衡和 SSL 代理负载平衡配置标准层级

全球负载平衡与地区负载平衡

如果您的后端分布在多个地区,您的用户需要访问相同的应用和内容,并且您希望使用单个任播 IP 地址提供访问权限,应选用全球负载平衡。全球性负载平衡还可以提供 IPv6 终结功能。

如果您的后端位于一个地区,并且您只需要 IPv4 终止服务,应选用地区负载平衡

外部负载平衡与内部负载平衡

Google Cloud 的负载平衡器可分为外部负载平衡器和内部负载平衡器两类:

  • 外部负载平衡器将来自互联网的流量分配到您的 Google Cloud Virtual Private Cloud (VPC) 网络。如需实现全球负载平衡,您需要使用 Network Service Tiers 的优质层级。对于地区负载平衡,您可以使用标准层级。

  • 内部负载平衡器将流量分配给 Google Cloud 中的实例。

外部和内部负载平衡类型(点击放大)
外部和内部负载平衡类型(点击放大)

下图演示了一种常见使用场景,即结合使用外部和内部负载平衡。在此图中,来自旧金山、爱荷华州和新加坡用户的流量被定向到一个外部负载平衡器,该负载平衡器将这些流量分配到 Google Cloud 网络中的不同地区。两个内部负载平衡器在 us-central1asia-east1 这两个地区之间分配流量。在 us-central1 中,内部负载平衡器在 us-central1-aus-central1-b 这两个区域之间分配流量。

外部和内部负载平衡如何协同工作(点击放大)
外部和内部负载平衡如何协同工作(点击放大)

流量类型

在确定要使用哪种负载平衡器时,您还需要考虑一个因素,那就是您需要负载平衡器处理哪类流量:

  • 如果是 HTTP 和 HTTPS 流量,请使用:
    • 外部 HTTP(S) 负载平衡
    • 内部 HTTP(S) 负载平衡
  • 如果是 TCP 流量,请使用:
    • TCP 代理负载平衡
    • 网络负载平衡
    • 内部 TCP/UDP 负载平衡
  • 如果是 UDP 流量,请使用:
    • 网络负载平衡
    • 内部 TCP/UDP 负载平衡

后端地区和网络

下表总结了对处于不同 VPC 网络中的后端的支持。该表还提供了有关多 NIC 负载平衡支持的信息。

负载平衡器类型 后端地区和网络 多 NIC 相关备注
内部 TCP/UDP 负载平衡 所有后端必须与后端服务在同一 VPC 网络和地区内。后端服务还必须与转发规则在同一地区和 VPC 网络中。 通过使用多个负载平衡器,它可以对同一后端的多个 NIC 进行负载平衡
内部 HTTP(S) 负载平衡 所有后端必须与后端服务在同一 VPC 网络和地区内。后端服务还必须与转发规则在同一地区和 VPC 网络中。 后端虚拟机的 nic0 必须在转发规则使用的网络和地区中。
HTTP(S) 负载平衡、SSL 代理负载平衡、TCP 代理负载平衡 在优质层级中:后端可以位于任何地区的任何 VPC 网络中。

在标准层级中:后端必须与转发规则在同一地区,但可以位于任何 VPC 网络中。
负载平衡器仅将流量发送到 nic0 所属的任一 VPC 网络的第一个网络接口 (nic0)。

防火墙规则

下表总结了负载平衡器访问时所需的最低防火墙规则。

负载平衡器类型 所需的最低入站允许防火墙规则 概览 示例
外部 HTTP(S) 负载平衡
  • 运行状况检查范围
概览 示例
内部 HTTP(S) 负载平衡
  • 运行状况检查范围
  • 代理专用子网
概览 示例
内部 TCP/UDP 负载平衡
  • 运行状况检查范围
  • 客户端的内部来源 IP 地址
概览 示例
SSL 代理负载平衡
  • 运行状况检查范围
概览 示例
TCP 代理负载平衡
  • 运行状况检查范围
概览 示例
网络负载平衡
  • 运行状况检查范围
  • 互联网上客户端的外部来源 IP 地址
    (例如 0.0.0.0/0 或一组特定范围)
概览 示例

外部负载平衡器的 DDoS 防护

Google Cloud 提供不同的 DDos 防护,具体取决于负载平衡器类型。

基于代理的外部负载平衡器

所有基于 Google Cloud 代理的外部负载平衡器会自动从 Google 前端 (GFE)(它是 Google 生产基础架构的一部分)继承 DDoS 保护。

除了 GFE 提供的自动 DDoS 防护之外,您还可以为外部 HTTP(S) 负载平衡器配置 Google Cloud Armor

直通式外部负载平衡器

唯一的直通式外部负载平衡器是网络负载平衡器。这些负载平衡器使用与为 Compute Engine 虚拟机实现外部 IP 地址相同的 Google 路由基础架构来实现。对于进入网络负载平衡器的入站流量,Google Cloud 会限制每个虚拟机的传入数据包。

如需了解详情,请参阅进入外部 IP 地址的入站流量

Google Cloud 负载平衡器的底层技术

本部分详细介绍各类 Google Cloud 负载平衡器,包括跳转至概览文档的链接,以便您更深入地了解相关信息。

外部和内部负载平衡类型及底层技术(点击放大)
外部和内部负载平衡类型及底层技术(点击放大)
  • Google 前端 (GFE) 是位于 Google 入网点 (PoP) 的软件定义分布式系统,可与其他系统和控制层面协同执行全球负载平衡。
  • Andromeda 是 Google Cloud 的软件定义网络虚拟化堆栈。
  • Maglev 是用于网络负载平衡的分布式系统。
  • Envoy 代理是专为云原生应用设计的开源边缘和服务代理。

内部 HTTP(S) 负载平衡

内部 HTTP(S) 负载平衡建立在 Andromeda 网络虚拟化堆栈上,是基于开源 Envoy 代理的代管式服务。此负载平衡器为第 7 层应用数据提供基于代理的负载平衡。您可以使用网址映射来指定流量路由方式。该负载平衡器使用内部 IP 地址作为后端的前端。

外部 HTTP(S) 负载平衡

HTTP(S) 负载平衡是以 GFE 为基础实现的。这些 GFE 分布于全球各地,可通过 Google 的全球网络和控制层面协同运作。在优质层级中,GFE 可提供跨地区负载平衡,进而将流量定向至运行状况良好、有充足容量的最近后端,并尽可能在离用户最近的位置终止 HTTP(S) 流量。

内部 TCP/UDP 负载平衡

内部 TCP/UDP 负载平衡基于 Andromeda 网络虚拟化堆栈构建而成。借助内部 TCP/UDP 负载平衡,您可以通过只能由内部虚拟机实例访问的内部负载平衡 IP 地址来平衡 TCP/UDP 流量负载。使用内部 TCP/UDP 负载平衡时,系统会配置内部负载平衡 IP 地址作为内部后端实例的前端。因此您的负载平衡服务只需使用内部 IP 地址。总体而言,您的配置会变得更加简单。

内部 TCP/UDP 负载平衡支持地区代管实例组,因此您可以在整个地区内实现自动扩缩,保护您的服务免遭区域故障的影响。

外部 TCP/UDP 网络负载平衡

网络负载平衡基于 Maglev。这种负载平衡器可让您根据传入的 IP 协议数据(如地址、端口和协议类型)来平衡系统的流量负载。它是一种地区非代理负载平衡系统。网络负载平衡适用于处理 UDP 流量,以及 SSL 代理和 TCP 代理负载平衡器不支持的端口上的 TCP 和 SSL 流量。网络负载平衡器是一种直通式负载平衡器,因此它不会代理来自客户端的连接。

SSL 代理负载平衡

SSL 代理负载平衡是以全球分布的 GFE 为基础实现的。如果您选择 Network Service Tiers 的优质层级,SSL 代理负载平衡器将面向全球。在优质层级中,您可以在多个地区部署后端,该负载平衡器会自动将用户流量定向到有处理能力的最近地区。如果您选择标准层级,SSL 代理负载平衡器只能在单个地区的各后端之间引导流量。

TCP 代理负载平衡

TCP 代理负载平衡是以全球分布的 GFE 为基础实现的。如果您选择 Network Service Tiers 的优质层级,TCP 代理负载平衡器将是全球的。在优质层级中,您可以在多个地区部署后端,该负载平衡器会自动将用户流量定向到有处理能力的最近地区。如果您选择标准层级,TCP 代理负载平衡器只能在单个地区的各后端之间引导流量。

接口

您可以通过以下接口配置和更新负载平衡器:

  • gcloud 命令行工具Cloud SDK 内包含的命令行工具。在 HTTP(S) 负载平衡文档中会经常调用此工具来完成任务。如需全面了解此工具,请参阅 gcloud 工具指南。您可以在 gcloud compute 命令组中找到与负载平衡相关的命令。

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

    gcloud compute http-health-checks create --help
    
  • Google Cloud Console:负载平衡任务可以通过 Google Cloud Console 完成。

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

后续步骤

  • 如需帮助确定哪个 Google Cloud 负载平衡器最符合您的需求,请参阅选择负载平衡器