负载均衡器在应用的多个实例间分配用户流量。负载均衡通过分散负载,降低应用出现性能问题的风险。 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 提供以下负载均衡器功能:
单个任播 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 标头和统一资源标识符)添加请求路由决策。
外部和内部负载均衡。定义负载均衡器是可用于外部访问还是内部访问。外部负载均衡器接受来自互联网的流量,而内部负载均衡器仅接受 RFC 1918 流量。当用户通过互联网访问您的应用时,您可以使用外部负载均衡。当您的客户端位于 Google Cloud 内部时,您可以使用内部负载均衡。如需了解详情,请参阅外部负载均衡与内部负载均衡。
全球和区域负载均衡。定义负载平衡器的范围。全球负载均衡器支持多个区域中的后端,而区域负载均衡器支持单个区域中的后端。即使区域负载均衡器的 IP 地址位于某个区域,但区域负载均衡器可在全球范围内访问。您可以将后端分布到单个或多个区域,以在靠近您的用户的位置终止连接,并满足您的高可用性要求。如需了解详情,请参阅全球负载均衡与区域负载均衡。
高级层级和标准层级中的流量路由。Google Cloud 中的负载均衡服务有不同的版本,具体取决于您选择的网络层级(即高级层级或标准层级),前者比后者更昂贵。优质层级利用 Google 的高品质全球骨干网,而标准层级则使用公共互联网在网络中路由流量。您选择的网络层级取决于您对企业工作负载的优先级是成本还是性能。某些负载均衡服务仅在高级层级中提供,而不在标准层级中提供。如需了解详情,请参阅优质与标准网络服务层级。
高级功能支持。Cloud Load Balancing 支持 IPv6 负载均衡、基于来源 IP 的流量导向、加权负载均衡、WebSocket、用户定义的请求标头和专用虚拟 IP 地址 (VIP) 协议转发等功能。
它还包括以下集成:
- 与 Cloud CDN 集成,实现缓存内容传送。全球外部应用负载均衡器和经典版应用负载均衡器均支持 Cloud CDN。
- 与 Google Cloud Armor 集成,可保护您的基础架构免受分布式拒绝服务 (DDoS) 攻击和其他定向应用攻击。始终开启的 DDoS 防护适用于全球外部应用负载均衡器、经典版应用负载均衡器、外部代理网络负载均衡器和外部直通网络负载均衡器。此外,Google Cloud Armor 仅支持外部直通式网络负载均衡器的高级网络 DDoS 防护。如需了解详情,请参阅配置高级网络 DDoS 防护。
Google Cloud 负载平衡器类型
Cloud Load Balancing 提供两种类型的负载均衡器:应用负载均衡器和网络负载均衡器。如果您需要为具有 HTTP(S) 流量的应用配置第 7 层负载均衡器,则需要选择应用负载均衡器。如果您需要支持 TLS 分流的第 4 层负载均衡器(使用代理负载均衡器),或者需要对 UDP、ESP 和 ICMP 等 IP 协议的支持(使用直通式负载均衡器),则可以选择网络负载均衡器。
下表简要介绍了不同类型的 Google Cloud 负载平衡器,并按其所运行的 OSI 层级和是否用于外部访问进行了分类。
lan Cloud Load Balancing | 外部 (接受互联网流量) |
内部 (仅接受 RFC 1918 流量) |
---|---|---|
应用负载平衡器 HTTPS 第 7 层负载均衡 |
|
|
网络负载平衡器 TCP/SSL/其他 第 4 层负载均衡 |
||
代理网络负载均衡器 | ||
|
|
|
直通式网络负载均衡器 | ||
|
|
应用负载均衡器
应用负载均衡器是基于代理的第 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 流量负载均衡。此负载均衡器只能在高级层级中配置。
如需详细了解直通式网络负载平衡器,请参阅直通式网络负载平衡器。
负载均衡器组件
负载均衡器是一个由多个相互作用的组件组成的系统。没有单个 API 资源可代表负载均衡器。而是由多个组件协同工作,在多个后端之间分配传入流量。
下图展示了应用负载平衡器、代理网络负载平衡器和直通式网络负载平衡器的核心组件。
应用负载均衡器
代理网络负载均衡器
直通式网络负载均衡器
以下信息概要介绍了负载均衡器的关键组件,从流量到达负载均衡器的那一刻开始,一直到流量被路由到后端资源的阶段。如需更深入地了解每个负载均衡器组件,请参阅每个部分中链接的页面。
转发规则
转发规则指定负载均衡器用于接受流量的 IP 地址、IP 协议以及一个或多个端口。转发规则及其附加的 IP 地址表示 Google Cloud 负载均衡器的前端。
如需了解详情,请参阅转发规则概览。
目标代理
目标代理会终结来自客户端的传入连接,并创建从负载均衡器到后端的新连接。
第一个连接源自客户端,并在负载均衡器的目标代理处终止。
第二个连接从目标代理开始,到后端实例结束,后端实例会处理客户端请求。
第一个连接会在 Google Front End (GFE) 或专门指定的子网(称为代理专用子网)中终止,该子网专门为 Envoy 代理预留。如需了解负载均衡器是基于 GFE 还是基于 Envoy,请参阅本文档的 Google Cloud 负载均衡器的底层技术部分中的表格。
目标代理仅供基于代理的负载平衡器(例如应用负载平衡器和代理网络负载平衡器)使用。对于这类负载平衡器,来自后端实例的响应会发送回目标代理,而不是直接发送到客户端。
如需了解详情,请参阅目标代理。
代理专用子网
代理专用子网提供了专为 Google Cloud 负载均衡器使用的 Envoy 代理预留的 IP 地址池。代理会终止传入连接,然后创建与后端的新连接。
如需了解详情,请参阅基于 Envoy 的负载平衡器的代理专用子网
SSL 证书
SSL 证书(也称为传输层安全协议 [TLS] 证书)有助于客户端与负载平衡器之间进行安全通信。基于代理的负载平衡器的转发规则引用目标 HTTPS 代理或目标 SSL 代理需要私钥和 SSL 证书作为负载平衡器的目标代理配置的一部分。
如需了解详情,请参阅 SSL 证书。
网址映射
终止连接后,目标 HTTP(S) 代理会使用网址映射来决定将新请求(目标代理部分中所述的第二个连接)路由到何处。请求会路由到后端服务或后端存储桶。网址映射仅供应用负载平衡器使用。由于应用负载平衡器在 OSI 模型的第 7 层运行,因此可以根据 HTTP 属性(例如域名、请求路径和查询参数)做出路由决策。
如需了解详情,请参阅网址映射。
后端服务
后端服务定义了负载均衡器分配流量的方式。后端服务配置包含一组值,例如用于连接到后端的协议、各种分发和会话设置、健康检查和超时。
这些设置可对负载均衡器的行为进行精细控制,并允许您将流量定向到正确的后端,后端可以是虚拟机实例组或网络端点组 (NEG)。
如需了解详情,请参阅后端服务概览。
后端存储桶
如果您的工作负载使用 HTTP(S) 协议传送静态内容,您可以使用 Cloud Storage 存储桶存储静态内容,然后使用后端存储桶将请求路由到该存储桶。
健康检查
配置负载均衡器的后端服务时,您需要为其后端指定一个或多个健康检查。顾名思义,健康检查用于确定负载均衡器的后端实例是否健康状况良好。此确定基于后端响应传入流量的功能。后端需要响应的流量取决于负载均衡器的类型。您可以同时使用第 7 层和第 4 层协议创建健康检查,以监控负载均衡实例。
防火墙规则
为了使健康检查正常运行,您必须创建入站 allow
防火墙规则,以允许健康检查探测到达您的后端。
基于 Google Front End 的负载平衡器需要入站流量允许防火墙规则,以允许来自 Google Front End 的 CIDR 的流量连接到您的后端。基于开源 Envoy 代理的负载平衡器需要入站 allow
防火墙规则,以允许来自代理专用子网的流量到达后端实例。
如需了解详情,请参阅防火墙规则。
后端
后端是经过负载均衡的流量的最终目的地。
不同的负载平衡器支持不同类型的后端。向后端服务添加后端时,您可以指定一种均衡模式,用于评估后端处理新请求的容量,并确定如何在后端之间分配流量。
如需了解详情,请参阅后端。
Google Cloud 负载平衡器的底层技术
下表列出了每个 Google Cloud 负载均衡器所依托的底层技术。
- Google 前端 (GFE) 是位于 Google 入网点 (PoP) 的软件定义分布式系统,可与其他系统和控制层面协同执行全球负载均衡。
- Andromeda 是 Google Cloud 的软件定义网络虚拟化堆栈。
- Maglev 是用于网络负载均衡的分布式系统。
- Envoy 是专为云原生应用设计的开源边缘和服务代理。
负载平衡器 | 技术 |
---|---|
全球外部应用负载均衡器 | 基于 Envoy 的 Google Front-End (GFE) |
传统应用负载均衡器 | GFE |
区域级外部应用负载均衡器 | Envoy |
跨区域内部应用负载均衡器 | Envoy |
区域级内部应用负载均衡器 | Envoy |
全局外部代理网络负载均衡器 | 基于 Envoy 的 GFE |
传统代理网络负载均衡器 | GFE |
区域级外部代理网络负载均衡器 | Envoy |
区域级内部代理网络负载均衡器 | Envoy |
跨区域内部代理网络负载均衡器 | Envoy |
外部直通式网络负载均衡器 | Maglev |
内部直通式网络负载均衡器 | Andromeda |
选择负载均衡器
如需确定要使用的 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 |
* 负载均衡方案是负载均衡器转发规则和后端服务的一个属性,指示负载均衡器是可用于内部流量还是外部流量。
`EXTERNAL_MANAGED` 或 `INTERNAL_MANAGED` 中的术语托管式表示负载均衡器作为 Google Front End (GFE) 或开源 Envoy 代理上的代管式服务实现。在托管式负载均衡方案中,请求会路由到 GFE 或 Envoy 代理。
EXTERNAL_MANAGED
后端服务附加到 EXTERNAL
转发规则。但是,EXTERNAL
后端服务无法附加到 EXTERNAL_MANAGED
转发规则。
如需使用仅适用于全球外部应用负载平衡器的新功能,我们建议您按照将资源从传统版应用负载平衡器迁移到全球外部应用负载平衡器中所述的迁移流程,将现有的 EXTERNAL
资源迁移到 EXTERNAL_MANAGED
。
接口
您可以使用以下接口配置和更新负载均衡器:
Google Cloud CLI:Google 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 负载均衡基础架构。
后续步骤
- 如需帮助确定哪个 Google Cloud 负载均衡器最符合您的需求,请参阅选择负载均衡器。
- 如需查看 Cloud Load Balancing 提供的负载均衡功能的比较概览,请参阅负载均衡器功能比较。