无服务器网络端点组概览

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

网络端点组 (NEG) 为负载平衡器指定了一组后端端点。无服务器 NEG 是指向 Cloud RunApp EngineCloud FunctionsAPI Gateway 服务的后端。

无服务器 NEG 可以表示以下各项之一:

  • 一项 Cloud Run 服务或一组服务。
  • 一个 Cloud Functions 函数或一组函数。
  • 一个 App Engine 应用(标准或 Flex 应用)、应用内的一项特定服务、应用的某一特定版本或一组服务。
  • 一种 API Gateway,用于通过所有服务一致的 REST API 访问您的服务,而不考虑服务实现。此功能目前为预览版

使用场景

以下负载均衡器支持无服务器 NEG:

为无服务器应用启用 HTTP(S) 负载均衡器后,您可以执行以下操作:

  • 配置无服务器应用,使其通过未与其他服务共享的专用 IPv4 IP 地址提供服务。
  • 将单个网址映射到同一网域处提供的多个无服务器函数或服务。在本文档中,请参阅网址掩码
  • 与其他 Google Cloud 计算平台共享网址空间。通过使用多个后端服务,单个负载均衡器可以将流量发送到多个后端类型。负载均衡器会根据请求网址的主机或路径选择正确的后端服务。
  • 重复使用您用于 Compute Engine、Google Kubernetes Engine 和 Cloud Storage 的相同 SSL 证书和私钥。重复使用相同证书就不需要为无服务器应用管理单独的证书。

全球外部 HTTP(S) 负载均衡器和全球外部 HTTP(S) 负载均衡器(经典版)

设置全球外部 HTTP(S) 负载均衡器或全球外部 HTTP(S) 负载均衡器(经典版)可让无服务器应用与现有云服务集成。您可以执行以下操作:

  • 使用 Google Cloud Armor 保护您的服务;Google Cloud Armor 是一种边缘 DDoS 防御/WAF 安全产品,适用于通过外部 HTTP(S) 负载均衡器访问的服务。此功能存在一些限制,尤其是对于 Cloud Run 和 App Engine。
  • 可让您的服务使用 Cloud CDN 优化交付。Cloud CDN 在更靠近您的用户的位置缓存内容。Cloud CDN 提供缓存失效操作和 Cloud CDN 签名网址等功能。
  • 使用 Google Edge 基础架构终结更靠近用户的 HTTP(S) 连接,从而缩短延迟时间。

如需了解如何配置具有无服务器计算后端的负载均衡器,请参阅以下文档:

HTTP(S) 负载均衡与 API Gateway 的集成使无服务器后端能够利用 Cloud Load Balancing 提供的所有功能。如需了解详情,请参阅 API Gateway 的 HTTP(S) 负载均衡。如需配置 HTTP(S) 负载均衡以将流量路由到 API Gateway,请参阅适用于 API Gateway 的 HTTP(S) 负载均衡使用入门。此功能目前为预览版

区域级外部 HTTP(S) 负载均衡器

使用区域级外部 HTTP(S) 负载均衡器,您可以在(Cloud Run)后端运行具有监管或合规性要求的工作负载。例如,如果您需要应用的网络配置和流量终止在特定区域,则区域级外部 HTTP(S) 负载均衡器通常是遵守必要司法管辖区控制的首选方案。

如需了解如何使用无服务器计算后端配置区域级外部 HTTP(S) 负载均衡器,请参阅使用 Cloud Run 设置区域级外部 HTTP(S) 负载均衡器

内部 HTTP(S) 负载平衡器

使用 Cloud Run 后端配置内部 HTTP(S) 负载均衡时,您可以执行以下操作:

  • 为您的 Cloud Run 服务启用内部 HTTP(S) 负载均衡的高级流量管理功能,例如故障注入、标头重写、重定向、流量拆分等。
  • 将旧版服务从 Compute Engine、GKE 或本地无缝迁移到 Cloud Run,并利用基于权重的流量拆分将流量逐步转移到 Cloud Run,而无需停机。
  • 使用 VPC Service Controls 保护您的 Cloud Run 服务
  • 为在 Cloud Run、Compute Engine 和 GKE 中运行的服务建立单一政策强制执行内部入口点。

如需了解如何使用无服务器计算后端配置内部 HTTP(S) 负载均衡器,请参阅使用 Cloud Run 设置内部 HTTP(S) 负载均衡器

本页面的其余部分介绍了如何将无服务器 NEG 与 HTTP(S) 负载均衡器搭配使用。

如需详细了解其他类型的 NEG,请参阅网络端点组概览

端点类型

无服务器 NEG 没有任何网络端点,例如端口或 IP 地址。它们只能指向位于 NEG 所在区域的现有 Cloud RunApp EngineAPI GatewayCloud Functions 服务。

当您创建无服务器 NEG 时,请指定 Cloud RunApp EngineAPI GatewayCloud Functions 服务的完全限定域名 (FQDN)。端点类型为 SERVERLESS。无服务器 NEG 不支持其他端点类型。

无服务器 NEG 不能具有多个端点。此端点指向一个无服务器应用或网址掩码。负载均衡器用作无服务器计算应用的前端,并将流量代理到指定的端点。但是,如果后端服务在不同区域包含多个无服务器 NEG,则负载均衡器会将流量发送到最近区域的 NEG,以最大限度地减少请求延迟时间。

网络层级

对于全球外部 HTTP(S) 负载均衡器,您可以通过标准或优质网络服务层级在负载均衡器中使用无服务器 NEG。仅当您想要在多个区域中设置无服务器 NEG 时,才需要使用优质层级。

区域级外部 HTTP(S) 负载均衡器始终是标准层级。

内部 HTTP(S) 负载均衡器始终使用优质层级。

负载均衡组件

使用无服务器 NEG 后端的负载均衡器需要仅适用于后端服务的特殊配置。前端配置与任何其他基于代理的 Google Cloud 负载均衡器相同。此外,内部 HTTP(S) 负载均衡器需要代理专用子网来代表您运行 Envoy 代理。

下图展示了一个无服务器 NEG 部署示例。

外部 HTTP(S)

下图展示了无服务器 NEG 在全球外部 HTTP(S) 负载均衡器架构中的位置。

适用于无服务器应用的全球外部 HTTP(S) 负载均衡
适用于无服务器应用的全球外部 HTTP(S) 负载均衡

下图展示了无服务器 NEG 在区域级外部 HTTP(S) 负载均衡器架构中的位置。

适用于无服务器应用的区域级外部 HTTP(S) 负载均衡
适用于无服务器应用的区域级外部 HTTP(S) 负载均衡

内部 HTTP(S)

此图展示了无服务器 NEG 在内部 HTTP(S) 负载均衡模型中的位置。

简单的 HTTPS 负载平衡(点击放大)
无服务器应用的内部 HTTP(S) 负载均衡

前端组件

使用无服务器 NEG 后端实现负载均衡无需特殊的前端配置。转发规则用于根据 IP 地址、端口和协议将流量路由到目标代理。然后,目标代理会终止来自客户端的连接。

HTTP(S) 负载均衡器使用网址映射来设置基于网址将请求路由到相应的后端服务。

如需详细了解这些组件中的每个组件,请参阅特定负载均衡器概览的架构部分:

后端服务

后端服务向负载均衡器提供配置信息。负载均衡器使用后端服务中的信息将传入的流量定向到一个或多个挂接的后端。无服务器 NEG 可用作某些负载均衡器的后端。

全球后端服务(由全球外部 HTTP(S) 负载均衡器使用)可以连接多个无服务器 NEG,但每个区域只有一个无服务器 NEG。区域后端服务(由内部 HTTP(S) 负载均衡器和区域级外部 HTTP(S) 负载均衡器使用)只能附加一个无服务器 NEG。

每个无服务器 NEG 可以指向以下任一项:

  • 单个函数或服务的 FQDN
  • 指向在同一网域中提供的多个函数或服务的网址掩码

网址掩码是一个网址架构模板,用于告知无服务器 NEG 后端如何将用户请求映射到正确的服务。如果您对无服务器应用使用自定义网域,并且在同一网域中提供多个服务,则网址掩码非常有用。您可以为自定义网域创建具有通用网址掩码的 NEG,而不是为每个函数或服务创建单独的无服务器 NEG。如需详细了解相关信息并查看示例,请参阅网址掩码

如需了解将无服务器 NEG 添加为后端的其他限制,请参阅限制

网址掩码

无服务器 NEG 后端可以指向单个 Cloud Run(App Engine 或 Cloud Functions,如果适用),或者指向网址掩码(指向多个服务)。网址掩码是网址架构的模板。无服务器 NEG 使用此模板将请求映射到相应的服务。

网址掩码是一项可选功能,可让您在无服务器应用由多个 Cloud Run、Cloud Functions 或 App Engine 服务组成时,更轻松地配置无服务器 NEG。与内部 HTTP(S) 负载均衡器搭配使用的无服务器 NEG 只能使用指向 Cloud Run 服务的网址掩码。

如果您的无服务器应用映射到自定义网域而不是 Google Cloud 提供的默认地址,则网址掩码非常有用。使用 example.com 等自定义网域时,您可以将多个服务部署到同一网域上的不同子网域或路径。在此类情况下,您可以为自定义网域(例如 example.com/<service>)创建单个使用通用网址掩码的无服务器 NEG,而不是为每个服务创建单独的无服务器 NEG 后端。NEG 从请求的网址中提取服务名称。

以下示例展示了一个具有单个后端服务和无服务器 NEG 的外部 HTTP(S) 负载均衡器,它使用网址掩码将用户请求映射到不同服务。

将流量分配到无服务器应用(点击放大)
使用网址掩码将流量分配给不同的服务

当应用的服务使用可预测的网址架构时,网址掩码最适合。使用网址掩码而不是网址映射的优势在于,您无需为 loginsearch 服务创建单独的无服务器 NEG。您也无需在每次向应用添加新服务时都修改负载平衡器配置。

如需了解如何为无服务器 NEG 构造和配置网址掩码,请参阅:

限制

  • 无服务器 NEG 不能有任何网络端点,如 IP 地址或端口。
  • 无服务器 NEG 只能指向创建 NEG 所在区域中的无服务器应用。
  • 对于使用无服务器 NEG 后端的负载均衡器,必须在 NEG 指向的支持性 Cloud Run、App Engine、API Gateway 或 Cloud Functions 服务所在的项目中创建无服务器 NEG。如果您连接的服务与无服务器 NEG 不在同一个项目中,则您可能会看到请求失败。
  • 使用无服务器 NEG 配置的负载均衡器无法检测底层无服务器应用或服务是否按预期工作。这意味着,即使您的服务返回错误,负载均衡器也会继续将流量定向到它。将用户流量路由到服务的新版本之前,请务必对新版本进行全面测试。

后端服务限制

以下限制适用于具有无服务器 NEG 后端的后端服务:

  • 全球后端服务在每个区域可以有一个无服务器 NEG。如需在单个后端服务中组合多个无服务器 NEG,则所有 NEG 必须表示不同地区中具有等效功能的部署。例如,NEG 可以指向部署在不同区域中的同一 Cloud Run、App Engine 或 Cloud Functions 服务。
  • 区域后端服务只能附加一个无服务器 NEG。
  • 必须在与无服务器 NEG 及支持性 Cloud Run、App Engine、API Gateway 或 Cloud Functions 服务相同的项目中创建后端服务。如果您将共享 VPC 部署设置为使用跨项目服务引用,则负载均衡器的前端组件(IP 地址、转发规则、目标代理和网址映射)可以在不同的项目中创建。
  • 后端服务超时设置不适用于具有无服务器 NEG 后端的后端服务。尝试修改后端服务的 resource.timeoutSec 属性会导致以下错误:Timeout sec is not supported for a backend service with Serverless network endpoint groups
    对于使用无服务器 NEG 后端的后端服务,默认超时时间为 60 分钟。此超时不可配置。如果您的应用需要长时间运行的连接,请将客户端配置为在失败时重试请求。
  • 组合到后端服务中的所有无服务器 NEG 也必须使用相同类型的后端。这意味着 Cloud Run 无服务器 NEG 只能与其他 Cloud Run 无服务器 NEG 组合,App Engine 无服务器 NEG 只能与 App Engine 无服务器 NEG 组合。
  • 您不能在同一后端服务中同时使用无服务器 NEG 与其他类型的 NEG(区域或互联网 NEG)。例如,您无法从同一后端服务路由到 GKE 集群和 Cloud Run 服务。
  • 设置路由到无服务器 NEG 的后端服务时,某些字段会受到限制:
    • 您不能指定平衡模式。也就是说,RATEUTILIZATIONCONNECTION 值对负载平衡器的流量分配没有影响。
    • 无服务器后端不支持健康检查。因此,无法为包含无服务器 NEG 后端的后端服务配置健康检查。
  • 您无法使用 gcloud compute backend-services edit 命令修改具有无服务器 NEG 后端的后端服务。如需解决此问题,请改用 gcloud compute backend-services update 命令。

其他限制适用,具体取决于负载均衡器的类型和无服务器后端。

内部 HTTP(S) 负载均衡的限制

  • 与内部 HTTP(S) 负载均衡器搭配使用的无服务器 NEG 只能指向 Cloud Run 服务。
  • 您无法使用 Google Cloud 控制台设置具有无服务器 NEG 后端的内部 HTTP(S) 负载均衡器。
  • 您的 VPC 网络中必须至少有一个虚拟机,这样您才能设置具有无服务器后端的内部 HTTP(S) 负载均衡器。

区域级外部 HTTP(S) 负载均衡器的限制

  • 与区域级外部 HTTP(S) 负载均衡器搭配使用的无服务器 NEG 只能指向 Cloud Run 服务。
  • 您无法使用 Google Cloud 控制台设置具有无服务器 NEG 后端的区域级外部 HTTP(S) 负载均衡器。
  • 您的 VPC 网络中必须至少有一个虚拟机,这样您才能设置具有无服务器后端的区域级外部 HTTP(S) 负载平衡器。

Cloud Run 的限制

  • Cloud Run for Anthos 不支持使用无服务器 NEG 的外部 HTTP(S) 负载均衡。
  • 外部 HTTP(S) 负载均衡不支持对 Cloud Run 服务的经过身份验证的请求

Cloud Functions 的限制

  • IAP 不支持 Cloud Functions。

App Engine 的限制

  • App Engine 不支持多地区负载平衡。这是因为 App Engine 要求每个项目 1 个地区。
  • 请求路径上只允许一个 IAP 政策。例如,如果您已在后端服务中设置了 IAP 政策,则不应针对 App Engine 应用设置其他 IAP 政策。
  • 我们建议您使用入站流量控制,以使应用仅接收从负载平衡器和 VPC(如果使用 VPC)发送的请求。否则,用户可以使用应用的 App Engine 网址来绕过负载平衡器、Google Cloud Armor 安全政策、SSL 证书和通过负载平衡器传递的私钥。

API Gateway 的限制

如需了解详情,请参阅无服务器 NEG 和 API Gateway 的限制

价格

如需查看使用无服务器 NEG 的负载均衡器的价格信息,请参阅网络价格

后续步骤