无服务器网络端点组概览

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

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

  • 一项 Cloud Run 服务或一组服务。
  • 一个 Cloud Functions 函数或一组函数。
  • 一个 App Engine 应用(标准或 Flex 应用)、应用内的一项特定服务、应用的某一特定版本或一组服务。

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

  • 配置无服务器应用,使其通过未与其他服务共享的专用 IPv4 和/或 IPv6 IP 地址提供服务。
  • 将单个网址映射到多个功能相同的无服务器应用。通过在不同地区运行这些应用,可以将请求路由到离用户最近的地区。只有 Cloud Run 和 Cloud Functions 支持将单个网址映射到多个功能相同的无服务器应用。
  • 重复使用您用于 Compute Engine、Google Kubernetes Engine 和 Cloud Storage 的相同 SSL 证书和私钥。重复使用相同证书就不需要为无服务器应用管理单独的证书。

设置外部 HTTP(S) 负载平衡还可让您的无服务器应用与现有 Cloud 服务集成。您可以执行以下操作:

  • 与其他 Google Cloud 技术共享网址空间。通过使用多个后端服务,单个外部 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) 连接,从而缩短延迟时间。

本文档的其余部分讨论如何将无服务器网络端点组 (NEG) 与外部 HTTP(S) 负载平衡器配合使用。您不能将无服务器 NEG 与其他负载平衡器类型搭配使用。

如需详细了解其他类型的 NEG,请参阅:

端点类型

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

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

无服务器 NEG 不能具有多个端点。由于每个无服务器 NEG 中只允许一个端点,因此负载平衡器仅充当前端,并将流量代理到指定的无服务器端点。但是,如果后端服务包含多个无服务器 NEG,则负载平衡器会平衡这些 NEG 之间的流量,从而最大限度地缩短请求延迟时间。

网络层级

您可以通过标准或优质网络服务层级在负载平衡器中使用无服务器 NEG。仅当您想要在多个地区中设置无服务器 NEG 时,才需要使用优质层级。

负载平衡组件

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

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

转发规则

转发规则是前端配置的一部分。每个转发规则都有外部 IP 地址、IP 版本(IPv4 或 IPv6)、协议(HTTP 或 HTTPS,包括 HTTP/2)以及端口号(80 或 443)。

目标代理

无服务器 NEG 只能与 HTTP 和 HTTPS 目标代理搭配使用。使用无服务器 NEG 的服务不能与 TCP 或 SSL 目标代理搭配使用。

网址映射

外部 HTTP (S) 负载平衡器的转发选择基于网址映射。使用网址映射时,目标 HTTP(S) 代理通过检查网址映射中的请求主机名和路径来确定要使用的后端服务。负载平衡器可以有多个从网址映射引用的后端服务。每个后端服务都可以与不同的后端类型相关联。例如,您可以为无服务器 NEG 提供后端服务,并为 Compute Engine 实例组提供另一个后端服务。

后端服务

无服务器 NEG 可用作负载平衡器中的后端。一个后端服务可以有多个无服务器 NEG。每个无服务器 NEG 可以指向以下任一项:

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

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

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

网址掩码

可选的网址掩码功能可让您在应用包含多个 Cloud Run、Cloud Functions 或 App Engine 服务组成时,更轻松地配置无服务器 NEG。无服务器 NEG 后端可以指向单个 Cloud Run(App Engine或 Cloud Functions),或者指向网址掩码(指向多个服务)。

网址掩码是网址架构的模板。无服务器 NEG 使用此模板将请求映射到相应的服务。

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

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

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

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

如需了解如何为无服务器 NEG 构建和配置网址掩码,请参阅设置使用无服务器 NEG 的 HTTP(S) 负载平衡器

限制

  • 无服务器 NEG 不能有任何网络端点,如 IP 地址或端口。
  • 无服务器 NEG 只能指向创建 NEG 所在地区中的 Cloud Run、App Engine 或 Cloud Functions 服务。
  • 使用无服务器 NEG 后端的负载平衡器必须在由 NEG 指向的 Cloud Run、App Engine 或 Cloud Functions 服务所在的项目中创建。
  • 使用无服务器 NEG 配置的外部 HTTP(S) 负载平衡器无法检测底层服务是否按预期工作。这意味着如果一个地区中的服务返回错误,但该地区中的整体基础架构正常运行,则外部 HTTP(S) 负载平衡器无法自动将流量定向到其他地区。将用户流量路由到服务的新版本之前,请务必对新版本进行全面测试。

与具有无服务器 NEG 后端的后端服务相关联的限制

  • 后端服务在每个地区可以有一个无服务器 NEG。如需在单个后端服务中组合多个无服务器 NEG,则所有 NEG 必须表示不同地区中具有等效功能的部署。例如,NEG 可以指向部署在不同地区中的同一 Cloud Run、App Engine 或 Cloud Functions 服务。
  • 后端服务超时设置不适用于具有无服务器 NEG 后端的后端服务。尝试修改后端服务的 resource.timeoutSec 属性会导致以下错误:Timeout sec is not supported for a backend service with Serverless network endpoint groups
  • 组合到后端服务中的所有无服务器 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 命令。

其他限制可能适用,取决于您使用的无服务器计算平台。

Cloud Run 的限制

  • Cloud Run for Anthos 不支持使用无服务器 NEG 的外部 HTTP(S) 负载均衡。

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 证书和通过负载平衡器传递的私钥。

价格

如需查看使用无服务器 NEG 的外部 HTTP(S) 负载平衡器的价格信息,请参阅网络价格

后续步骤