应用负载均衡器是一种基于代理的第 7 层负载均衡器,可让您运行和扩缩服务。应用负载均衡器将 HTTP 和 HTTPS 流量分配到各个 Google Cloud 平台(例如 Compute Engine、Google Kubernetes Engine (GKE)、Cloud Storage 和 Cloud Run)上托管的后端,以及通过互联网或混合连接进行连接的外部后端。
应用负载均衡器具有以下部署模式:
外部应用负载均衡器:对来自互联网上的客户端的流量进行负载均衡。如需了解架构详情,请参阅外部应用负载均衡器架构。
部署模式 网络服务层级 负载均衡方案 † IP 地址 前端端口 全球外部 优质层级 EXTERNAL_MANAGED IPv4
IPv6只能引用 1-65535 之间的一个端口。
区域外部 高级层级或标准层级 EXTERNAL_MANAGED IPv4 传统 在高级层级为全球级
在标准层级为区域级
外部 IPv4
IPv6(需要高级层级)内部应用负载均衡器:对 VPC 网络或连接到 VPC 网络的网络中的流量进行负载均衡。如需了解架构详情,请参阅内部应用负载均衡器架构。
部署模式 网络服务层级 负载均衡方案 † IP 地址 前端端口 区域内部 优质层级 INTERNAL_MANAGED IPv4 只能引用 1-65535 之间的一个端口。
跨区域内部*
优质层级 INTERNAL_MANAGED IPv4
† 负载均衡方案是负载均衡器转发规则和后端服务的一个属性,指示负载均衡器是可用于内部流量还是外部流量。负载均衡方案中的术语 *_MANAGED
表示负载均衡器作为 Google Front End (GFE) 上的托管式服务实现,或者作为开源 Envoy 代理上的托管式服务实现。在 *_MANAGED
负载均衡方案中,请求会路由到 GFE 或 Envoy 代理。
* 负载均衡器使用全球资源,可以部署在您选择的一个或多个 Google Cloud 区域中。
外部应用负载均衡器
外部应用负载均衡器使用 Google Front End (GFE) 或代管式代理实现。全球外部应用负载均衡器和传统应用负载均衡器使用全球分布的 GFE,通过使用 Google 的全球网络和控制平面协同运作。GFE 在高级层级中提供多区域负载均衡,进而将流量定向至运行状况良好、有充足容量的最近后端,并尽可能在离用户最近的位置终止 HTTP(S) 流量。全局外部应用负载均衡器和区域级外部应用负载均衡器使用开源 Envoy 代理软件来启用高级流量管理功能。
这些负载均衡器可以采用以下模式之一部署:全球、区域或传统。
外部应用负载均衡器支持以下功能:
- 高级流量管理,例如流量镜像、基于权重的流量分配和基于请求/响应的标头转换。如需了解详情,请参阅流量管理概览。
- 将流量进行负载均衡并分配到在各种 Google Cloud 平台(例如 Compute Engine、Google Kubernetes Engine (GKE)、Cloud Run 等)上托管的后端。 后端支持取决于负载均衡器的部署模式。如需了解详情,请参阅外部应用负载均衡器概览。
- 使用 Cloud CDN 的缓存响应。
- 使用 Google Cloud Armor 防范 DDoS 攻击或其他网络攻击。
- 使用 Ingress 或网关(完全编排)或独立 NEG 负载均衡到 GKE。
- App Hub(预览版)支持区域级外部应用负载均衡器。
下图显示了一个外部应用负载均衡器架构示例。
如需完整概览,请参阅外部应用负载均衡器的架构概览。
内部应用负载均衡器
内部应用负载均衡器是基于 Envoy 代理的区域第 7 层负载均衡器,可让您在内部 IP 地址后面运行和扩缩 HTTP 应用流量。内部应用负载均衡器支持一个区域中的后端,但可以配置为任何 Google Cloud 区域的客户端都可供全局访问。
负载均衡器将流量分发到托管在 Google Cloud、本地或其他云环境中的后端。内部应用负载均衡器还支持以下功能:
- 位置政策。 在后端实例组或网络端点组中,您可以配置请求如何分配到成员实例或端点。如需了解详情,请参阅流量管理。
- 全球访问权限。启用全球访问权限后,任何区域的客户端都能访问负载均衡器。 如需了解详情,请参阅启用全球访问权限。
- 从连接的网络访问。 您可以让负载均衡器从其自己的 Google Cloud Virtual Private Cloud (VPC) 网络以外的网络客户端访问。其他网络必须使用 VPC 网络对等互连、Cloud VPN 或 Cloud Interconnect 连接到负载均衡器的 VPC 网络。如需了解详情,请参阅访问连接的网络。
- 使用 Ingress(完全编排)与 GKE 兼容。 如需了解详情,请参阅为内部应用负载均衡器配置 Ingress。
- App Hub(预览版)支持区域级内部应用负载均衡器。
如需完整概览,请参阅内部应用负载均衡器的架构概览。
使用场景
以下部分介绍了应用负载均衡器的一些常见用例。
三层 Web 服务
您可以部署应用负载均衡器和网络负载均衡器的组合,以支持传统的三层 Web 服务。以下示例展示了如何根据您的流量类型部署每个层级:
- 网络层级。应用的前端由具有实例组后端的外部应用负载均衡器提供服务。流量从互联网进入,并通过负载均衡器代理到各个区域的一组实例组后端。这些后端会将 HTTP(S) 流量发送到一组内部应用负载均衡器。
- 应用层。 使用内部应用负载均衡器和实例组后端来部署和扩缩应用的中间件。负载均衡器将流量分配到中间件实例组。然后,这些中间件实例组会将流量发送到内部直通式网络负载均衡器。
- 数据库层。网络负载均衡器充当数据库层级的前端。它们将流量分配到各个区域的数据存储后端。
区域级内部应用负载均衡器的全球访问权限
如果您为区域级内部应用负载均衡器启用全球访问权限,则 Web 层客户端虚拟机可以位于其他区域。
此多层应用示例显示以下内容:
- 面向互联网的全球可用 Web 层,可使用外部应用负载均衡器对流量进行负载均衡。
us-east1
地区中的内部后端负载均衡数据库层,可通过全球 Web 层访问。europe-west1
地区中属于 Web 层的客户端虚拟机,可访问位于us-east1
中的内部负载均衡数据库层。
具有管辖区合规性的工作负载
某些具有法规或合规性要求的工作负载要求网络配置和流量终止位于特定区域。对于这些工作负载,区域级外部应用负载均衡器通常是提供这些工作负载所需的管辖区控制的首选选项。
高级流量管理
应用负载均衡器支持高级流量管理功能,可让您对流量的处理方式进行精细控制。这些功能包括:
- 您可以更新流量的管理方式,而无需修改应用代码。
- 您可以根据 HTTP(S) 参数(例如主机、路径、标头和其他请求参数)智能路由流量。例如,您可以使用 Cloud Storage 存储桶来处理任何静态视频内容,还可以使用实例组或 NEG 来处理所有其他请求。
- 您可以使用基于权重的流量分配来缓解部署应用新版本的风险。例如,您可以将 95% 的流量发送到旧版服务,将 5% 的流量发送到新版服务。验证新版本按预期运行后,您可以逐渐改变百分比,直到 100% 的流量到达新版服务。流量分配通常用于部署新版本、A/B 测试、服务迁移、对旧式服务进行现代化改造以及类似流程。
以下示例显示了使用内部应用负载均衡器实现的基于路径的路由示例。每个路径都由不同的后端处理。
如需了解详情,请参阅以下内容:
使用 Service Extensions 的可扩展性
使用 Service Extensions 标注,您可以将自定义逻辑注入负载均衡数据路径。借助这些扩展程序,您可以指示受支持的应用负载均衡器在数据处理期间对用户管理的应用或服务进行 gRPC 调用。
如需了解详情,请参阅 Service Extensions 概览。
将旧版服务迁移到 Google Cloud
通过将现有服务迁移到 Google Cloud,您可以释放本地容量,并降低维护本地基础架构的费用和负担。您可以临时设置混合部署,以将流量路由到当前本地服务和相应的 Google Cloud 服务端点。
下图演示了使用内部应用负载均衡器的设置。如果您使用的是内部负载均衡器,则可以将 Google Cloud 负载均衡器配置为使用基于权重的流量拆分功能,在这两项服务之间拆分流量。通过流量拆分,您可以先向 Google Cloud 服务发送 0% 的流量,而向本地服务发送 100% 的流量。然后,您可以逐步增加发送到 Google Cloud 服务的流量的比例。最终,所有流量都会发送到 Google Cloud 服务,并且您可以停用本地服务。
GKE 应用的负载均衡
您可以通过以下三种方式为 GKE 集群部署应用负载均衡器:
- GKE Gateway Controller。仅由全球外部应用负载均衡器、传统应用负载均衡器和区域级内部应用负载均衡器提供支持。如需查看设置说明,请参阅部署网关。
- GKE Ingress 控制器。您可以使用内置的 GKE Ingress 控制器,该控制器代表 GKE 用户部署 Google Cloud 负载均衡器。这与独立负载均衡架构相同,只不过其生命周期完全由 GKE 完全自动化并进行控制。受外部和内部应用负载均衡器支持。如需了解设置说明,请参阅以下内容:
- 独立的可用区级 NEG。 独立 NEG 通过 GKE NEG 控制器部署和管理,但所有负载均衡资源(转发规则、健康检查等)都需要手动部署。外部和内部应用负载均衡器都支持这些。
适用于 Cloud Run、Cloud Run functions 和 App Engine 应用的负载均衡服务
您可以将应用应用负载均衡器用作 Google Cloud 无服务器应用的前端。这使您可以将无服务器应用配置为服务来自不与任何其他服务共享的专用 IP 地址的请求。
如需进行此设置,请使用无服务器 NEG 作为负载均衡器的后端。下图展示了如何将无服务器应用与应用负载均衡器集成。
全球外部
下图展示了无服务器 NEG 在全球外部应用负载均衡器架构中的位置。
区域外部
下图展示了无服务器 NEG 在区域级外部应用负载均衡器架构中的位置。 此负载均衡器仅支持 Cloud Run 后端。
区域内部
下图展示了无服务器 NEG 在区域级内部应用负载均衡器模型中的位置。 此负载均衡器仅支持 Cloud Run 后端。
跨区域内部
下图展示了无服务器 NEG 在跨区域内部应用负载均衡器模型中的位置。 此负载均衡器仅支持 Cloud Run 后端。
相关文档:
- 无服务器 NEG 概览
- 使用 Cloud Run、Cloud Run functions 或 App Engine 后端设置全球外部应用负载均衡器
- 使用 Cloud Run 后端设置区域级外部应用负载均衡器
- 使用 Cloud Run 后端设置区域内部应用负载均衡器
- 使用 Cloud Run 设置跨区域内部应用负载均衡器
负载均衡到 Google Cloud 外部的后端
应用负载均衡器支持将流量负载均衡到超出 Google Cloud 端点的端点(例如本地数据中心和其他云环境)。外部后端通常可通过以下任一方式访问:
可通过公共互联网访问。对于这些端点,请使用互联网 NEG 作为负载均衡器的后端。互联网 NEG 配置为指向外部后端上的单个 FQDN:Port 或 IP:Port 端点。 互联网 NEG 可以是全球级,也可以是区域级。
下图演示了如何使用全球互联网 NEG 连接到可通过公共互联网访问的外部后端。
如需了解详情,请参阅互联网 NEG 概览。
可使用混合连接(Cloud Interconnect 或 Cloud VPN)进行访问。 对于这些端点,您可以使用混合 NEG 作为负载均衡器的后端。混合 NEG 配置为指向外部后端上的 IP:Port 端点。
下图演示了如何连接到可使用 Cloud Interconnect 或 Cloud VPN 访问的外部后端。
外部
内部
如需了解详情,请参阅混合 NEG 概览。
与 Private Service Connect 集成
Private Service Connect 允许跨属于不同群组、团队、项目或组织的 VPC 网络以不公开方式使用服务。您可以使用 Private Service Connect 访问 Google API 和服务,或另一个 VPC 网络中的代管式服务。
您可以使用全局外部应用负载均衡器来访问使用 Private Service Connect 发布的服务。如需了解详情,请参阅 Private Service Connect 后端简介。
您可以使用内部应用负载均衡器将请求发送到受支持的区域级 Google API 和服务。如需了解详情,请参阅通过后端访问 Google API。
高可用性和跨区域故障切换
跨区域故障切换仅适用于全球外部应用负载均衡器、传统应用负载均衡器和跨区域内部应用负载均衡器。在多个区域中创建具有后端的全球后端服务时,这些负载均衡器可让您提高服务可用性。如果某个特定区域中的后端发生故障,流量可以安全地故障切换到另一个区域。
如需详细了解故障切换的工作原理,请参阅以下主题: