后端服务概览

后端服务定义了 Cloud Load Balancing 如何分配流量。后端服务配置包含一组值,例如用于连接到后端的协议、各种分发和会话设置、健康检查和超时。这些设置可对负载平衡器的行为进行精细控制。如果需要快速开始,大多数设置都具有允许轻松配置的默认值。

负载均衡器、Envoy 代理和无代理 gRPC 客户端使用后端服务资源中的配置信息执行以下操作:

  • 将流量定向到正确的后端(实例组或网络端点组 (NEG))。
  • 根据均衡模式(这是每个后端的设置)分配流量。
  • 确定哪个健康检查正在监控后端的运行状况。
  • 指定“会话亲和性”
  • 确定是否已启用其他服务,包括仅适用于特定负载均衡器的以下服务:
    • Cloud CDN
    • Google Cloud Armor 安全政策
    • Identity-Aware Proxy

您可以在创建后端服务或将后端服务添加到后端服务时设置这些值。

您可以为以下 Google Cloud 负载均衡器配置后端服务:

  • 全球外部 HTTP(S) 负载平衡器
  • 全球外部 HTTP(S) 负载均衡器(经典版)
  • 区域级外部 HTTP(S) 负载均衡器(预览版
  • 内部 HTTP(S) 负载均衡器
  • SSL 代理负载均衡器
  • TCP 代理负载均衡器
  • 内部 TCP/UDP 负载均衡器
  • 基于后端服务的网络负载均衡器

Traffic Director 也会使用后端服务。

您使用的产品决定了后端服务的数量上限、后端服务的范围、支持的后端类型以及后端服务的负载均衡方案

产品 最大后端服务数量 后端服务的范围 受支持的后端类型 负载均衡方案
全球外部 HTTP(S) 负载平衡器 多个 全球 每项后端服务都支持以下后端组合之一:
  • 所有实例组后端:一个或多个代管实例组后端、非代管实例组后端或代管实例组后端与非代管实例组后端的组合
  • 所有可用区级 NEG:一个或多个 GCE_VM_IP_PORT 类型可用区级 NEG
  • 所有混合连接 NEG:一个或多个 NON_GCP_PRIVATE_IP_PORT 类型 NEG
  • 可用区 NEG 和混合 NEG 的组合:GCE_VM_IP_PORTNON_GCP_PRIVATE_IP_PORT 类型 NEG2
  • 所有无服务器 NEG:一个或多个 App Engine、Cloud Run 或 Cloud Functions 服务
  • 单个 Private Service Connect NEG
EXTERNAL_MANAGED
全球外部 HTTP(S) 负载均衡器(经典版) 多个 全球1 每项后端服务都支持以下后端组合之一:
  • 所有实例组后端:一个或多个代管实例组后端、非代管实例组后端或代管实例组后端与非代管实例组后端的组合
  • 所有可用区级 NEG:一个或多个 GCE_VM_IP_PORT 类型可用区级 NEG
  • 所有混合连接 NEG:一个或多个 NON_GCP_PRIVATE_IP_PORT 类型 NEG
  • 可用区 NEG 和混合 NEG 的组合:GCE_VM_IP_PORTNON_GCP_PRIVATE_IP_PORT 类型 NEG2
  • 所有无服务器 NEG:一个或多个 App Engine、Cloud Run 或 Cloud Functions 服务,或者
  • 一个用于外部后端的互联网 NEG
外部
区域级外部 HTTP(S) 负载均衡器(预览版 多个 区域级 每项后端服务都支持以下后端组合之一:
  • 所有实例组后端:一个或多个代管实例组后端、非代管实例组后端或代管实例组后端与非代管实例组后端的组合
  • 所有可用区级 NEG:一个或多个 GCE_VM_IP_PORT 类型可用区级 NEG
  • 单个 Private Service Connect NEG
EXTERNAL_MANAGED
内部 HTTP(S) 负载均衡器 多个 区域级 每项后端服务都支持以下后端组合之一:
  • 所有实例组后端:一个或多个代管实例组后端、非代管实例组后端或代管实例组后端与非代管实例组后端的组合
  • 所有可用区级 NEG:一个或多个 GCE_VM_IP_PORT 类型可用区级 NEG
  • 所有混合连接 NEG:一个或多个 NON_GCP_PRIVATE_IP_PORT 类型 NEG
  • 单个 Private Service Connect NEG
INTERNAL_MANAGED
SSL 代理负载均衡器 1 全球1 后端服务支持以下后端组合之一:
  • 所有实例组后端:一个或多个代管实例组后端、非代管实例组后端或代管实例组后端与非代管实例组后端的组合
  • 所有可用区级 NEG:一个或多个 GCE_VM_IP_PORT 类型可用区级 NEG
  • 所有混合连接 NEG:一个或多个 NON_GCP_PRIVATE_IP_PORT 类型 NEG
  • 可用区 NEG 和混合 NEG 的组合:GCE_VM_IP_PORTNON_GCP_PRIVATE_IP_PORT 类型 NEG2
  • 一个用于外部后端的互联网 NEG
外部
TCP 代理负载均衡器 1 全球1 后端服务支持以下后端组合之一:
  • 所有实例组后端:一个或多个代管实例组后端、非代管实例组后端或代管实例组后端与非代管实例组后端的组合
  • 所有可用区级 NEG:一个或多个 GCE_VM_IP_PORT 类型可用区级 NEG
  • 所有混合连接 NEG:一个或多个 NON_GCP_PRIVATE_IP_PORT 类型 NEG
  • 可用区 NEG 和混合 NEG 的组合:GCE_VM_IP_PORTNON_GCP_PRIVATE_IP_PORT 类型 NEG2
  • 一个用于外部后端的互联网 NEG
外部
网络负载均衡器 1 区域级 后端服务支持以下后端组合:
  • 所有实例组后端:一个或多个代管实例组后端、非代管实例组后端或代管实例组后端与非代管实例组后端的组合
外部
内部 TCP/UDP 负载均衡器 1 范围为地区,但可以配置为可在全球访问 后端服务支持以下后端组合之一:
  • 所有实例组后端:一个或多个代管实例组后端、非代管实例组后端或代管实例组后端与非代管实例组后端的组合
  • 所有可用区级 NEG:一个或多个 GCE_VM_IP 类型可用区级 NEG
INTERNAL
Traffic Director 多个 全球 每项后端服务都支持以下后端组合之一:
  • 所有实例组后端:一个或多个代管实例组后端、非代管实例组后端或代管实例组后端与非代管实例组后端的组合
  • 所有可用区级 NEG:一个或多个 GCE_VM_IP_PORTNON_GCP_PRIVATE_IP_PORT 类型可用区级 NEG
  • 一个类型为 INTERNET_FQDN_PORT 的互联网 NEG
  • 一个或多个服务绑定
INTERNAL_SELF_MANAGED
1 在标准或高级网络层级中,全局外部 HTTP(S) 负载均衡器(经典版)、SSL 代理负载均衡器和 TCP 代理负载均衡器使用的后端服务始终覆盖全球范围。但是,在标准层级中,存在以下限制:
2 对于 GKE 部署,只有独立 NEG 支持混合 NEG 后端。

API 与 gcloud 参考文档

后端服务的范围为全球或地区

如需详细了解后端服务资源的属性,请参阅以下参考文档:

后端

后端是指接收来自 Google Cloud 负载均衡器、Traffic Director 配置的 Envoy 代理或无代理 gRPC 客户端的流量的一个或多个端点。后端有多种类型:

此外,您还可以使用后端存储分区代替后端服务,还可以创建 Cloud Storage 存储分区后端。

其他使用注意事项:

  • 单个后端服务不能引用实例组和可用区 NEG 的组合。
  • 您可以在同一后端服务中使用不同类型的实例组的组合。例如,单个后端服务可以引用代管式实例组和非代管式实例组的组合。如需详细了解哪些后端与哪些后端服务兼容,请参阅上一部分中的表格。
  • 仅对于全球外部 HTTP(S) 负载均衡器,您可以结合使用可用区 NEG(具有 GCE_VM_IP_PORT 端点)和混合连接性 NEG(具有 NON_GCP_PRIVATE_IP_PORT 端点)来配置混合负载均衡
  • 您无法删除与后端服务关联的后端实例组或 NEG。在删除实例组或 NEG 之前,必须先从引用它的所有后端服务中将其作为后端移除。

后端协议

创建后端服务时,您必须指定用于与后端通信的协议。每个后端服务只能指定一个协议,您不能指定次要协议来作为后备。

哪种协议有效取决于负载均衡器的类型,或者您是否使用 Traffic Director。

产品 负载均衡方案 后端服务协议选项
全球外部 HTTP(S) 负载平衡器 EXTERNAL_MANAGED HTTP、HTTPS、HTTP/2
全球外部 HTTP(S) 负载均衡器(经典版) 外部 HTTP、HTTPS、HTTP/2
区域级外部 HTTP(S) 负载均衡器(预览版 EXTERNAL_MANAGED HTTP、HTTPS、HTTP/2
SSL 代理负载均衡器 外部 SSL
TCP 代理负载均衡器 外部 TCP
内部 HTTP(S) 负载均衡器 INTERNAL_MANAGED HTTP、HTTPS、HTTP/2
网络负载均衡器 外部 TCP、UDP 或UNSPECIFIED
内部 TCP/UDP 负载均衡器 内部 TCP 或 UDP
Traffic Director INTERNAL_SELF_MANAGED HTTP、HTTPS、HTTP/2、gRPC、TCP

更改后端服务的协议,会使后端在几分钟的时间里无法通过负载均衡器访问。

在负载均衡器和后端之间进行的加密

如需了解此主题,请参阅后端加密

实例组

本部分介绍实例组如何使用后端服务。

后端虚拟机和外部 IP 地址

后端服务中的后端虚拟机不需要外部 IP 地址:

  • 对于全局外部 HTTP(S) 负载均衡器、SSL 代理负载均衡器和 TCP 代理负载均衡器:客户端使用负载均衡器的外部 IP 地址与 Google Front End (GFE) 前端进行通信。GFE 结合使用后端的 VPC 网络标识符和虚拟机或端点的内部 IP 地址与后端虚拟机或端点通信。内部 IP 地址必须与后端的主要网络接口 (nic0) 相关联。通过特殊路由,可以实现 GFE 与后端虚拟机或端点之间的通信。
  • 对于区域级外部 HTTP(S) 负载均衡器:客户端使用该负载均衡器的 IP 地址和端口连接到该负载均衡器的 Envoy 代理(在代理专用子网中预配)。一个区域和 VPC 网络中的所有区域级外部 HTTP(S) 负载均衡器的后端虚拟机或端点都会收到来自代理专用子网的连接。
  • 对于网络负载均衡器:数据包首先路由到网络负载均衡器的外部 IP 地址。然后,负载均衡器使用一致的哈希技术将它们路由到后端虚拟机。
  • 后端虚拟机不需要外部 IP 地址。

已命名端口

在后端,负载均衡器会将流量转发到您的后端实例(Compute Engine 实例)侦听的端口号。您可以在实例组中配置此端口号,并在后端服务配置中引用它。

如果实例组的已命名端口与后端服务配置中的 --port-name 匹配,则后端服务使用此端口号与实例组的虚拟机进行通信。

后端端口号称为“已命名端口”,因为它是名称/值对。在实例组中,您可以定义端口的键名称和值。

例如,您可以在实例组中使用名称 my-service-name 和端口 8888 设置已命名端口:

gcloud compute instance-groups unmanaged set-named-ports my-unmanaged-ig \
    --named-ports=my-service-name:8888

然后,您可以引用后端服务配置中已命名的端口,并将 --port-name 上的后端服务设置为 my-service-name

gcloud compute backend-services update my-backend-service \
    --port-name=my-service-name

如果您为某个已命名的端口(例如 http:80,http:8080)使用多个端口号,那么这些端口号都必须用于同一应用。这是因为流量在具有相同端口名称的所有端口之间保持均衡。例如,创建一个值为 80443 的已命名端口。因为端口 80 通常不支持 TLS,所以这种方法不起作用。

如需了解如何创建已命名端口,请参阅以下说明:

注意事项:

  • 每个后端服务订阅一个端口名称。每个后端服务的每个后端实例组都必须至少有一个使用该名称的已命名端口。

  • 如果每个实例组为同一端口名称指定了不同的端口号,则后端服务在与不同实例组中的虚拟机通信时可以使用不同的端口号。 但是,所有端口必须表示同一应用。例如,http:80,http:8080 有效,但 http:80,http:443 不可行。

  • 后端服务使用的已解析端口号不需要与负载均衡器的转发规则使用的端口号相匹配。负载均衡器可以在前端侦听您在负载均衡器的转发规则中配置的一个或多个端口号。后端实例可以侦听不同的端口号。

已命名端口不用于以下情况:

  • 不用于区域 NEG 或互联网 NEG 后端,因为这些 NEG 使用不同机制(即,在端点本身上)定义端口。
  • 不用于无服务器 NEG 后端,因为这些 NEG 没有端点。
  • 不用于内部 TCP/UDP 负载均衡器,因为内部 TCP/UDP 负载均衡器是直通式负载均衡器(而非代理),并且其后端服务不会订阅已命名端口。
  • 对于网络负载均衡器,因为网络负载均衡器是直通式负载均衡器(而非代理),并且其后端服务不会订阅已命名端口。

如需详细了解已命名端口,请参阅 SDK 文档中的 gcloud compute instance-groups managed set-named-portsgcloud compute instance-groups unmanaged set-named-ports

有关实例组的限制和指南

在为负载平衡器创建实例组时,请记住以下限制和指南:

  • 不要将一个虚拟机放在多个负载平衡实例组中。如果虚拟机是两个或更多非代管实例组的成员,或者是一个代管实例组和一个或多个非代管实例组的成员,则 Google Cloud 限制您一次只能将其中一个实例组用作特定后端服务的后端。

    如果您需要一个虚拟机参与多个负载均衡器,则必须将同一实例组用作每个后端服务上的后端。

  • 对于代理负载均衡器,当您想要将流量均衡到不同端口时,请在一个实例组上指定所需的命名端口,并让每个后端服务订阅一个唯一的命名端口。

  • 您可以将同一实例组用作多个后端服务的后端。在这种情况下,后端必须使用兼容的平衡模式。兼容表示平衡模式必须相同,或者它们必须是 CONNECTIONRATE 的组合。不兼容的组合如下:

    • CONNECTION - UTILIZATION
    • RATE - UTILIZATION

    请思考以下示例:

    • 您有两个后端服务:external-https-backend-service 用于外部 HTTP(S) 负载平衡器,internal-tcp-backend-service 用于内部 TCP/UDP 负载平衡器。
    • 您在 internal-tcp-backend-service 中使用名为 instance-group-a 的实例组。
    • internal-tcp-backend-service 中,您必须应用 CONNECTION 平衡模式,因为内部 TCP/UDP 负载平衡器仅支持 CONNECTION 平衡模式。
    • 如果在 external-https-backend-service 中应用 RATE 平衡模式,那么您也可以在 external-https-backend-service 中使用 instance-group-a
    • 如果使用 UTILIZATION 平衡模式,您也无法在 external-https-backend-service 中使用 instance-group-a
  • 若要更改用作多个后端服务的后端的实例组的平衡模式,请执行以下操作:

    • 从一个后端服务以外的其他所有后端服务中移除实例组。
    • 更改一个剩余后端服务上的后端的平衡模式。
    • 将实例组作为后端重新添加到剩余的后端服务(如果这些服务支持新平衡模式)。
  • 如果您的实例组与多个后端服务相关联,则每个后端服务都可以引用实例组上相同或不同的已命名端口。

  • 我们不建议在多个后端服务中添加自动扩缩式代管实例组,这可能导致实例组中的实例进行不可预测和不必要的扩缩,尤其是在您使用 HTTP 负载平衡利用率自动扩缩指标时。

    • 建议不要这样做,但如果自动扩缩指标是 CPU 利用率或者与负载平衡器的服务容量无关的 Cloud Monitoring 指标,则此方案可能适用。使用其中一个自动扩缩指标可防止不稳定的扩缩。

可用区级网络端点组

网络端点通过 IP 地址或 IP 地址/端口组合表示服务,而不是引用实例组中的虚拟机。网络端点组 (NEG) 是网络端点的逻辑分组。

可用区级网络端点组 (NEG) 是可用区级资源,表示单个子网内 Google Cloud 资源 IP 地址的集合或 IP 地址/端口组合的集合。

可用区级 NEG 有两种类型的网络端点:

  • GCE_VM_IP 端点。
  • GCE_VM_IP_PORT 端点。

如需了解详情,请参阅可用区级 NEG 概览

将地区 NEG 用作后端的后端服务在虚拟机内运行的应用或容器之间分配流量。

使用 GCE_VM_IP_PORT 端点的可用区级网络端点组 (NEG) 可用作以下负载均衡器类型的后端:

  • 全球外部 HTTP(S) 负载均衡器
  • 全球外部 HTTP(S) 负载均衡器(经典版)
  • 区域级外部 HTTP(S) 负载均衡器
  • 内部 HTTP(S) 负载均衡器
  • SSL 代理负载均衡器
  • TCP 代理负载均衡器

Traffic Director 还支持具有 GCE_VM_IP_PORT 端点的可用区级 NEG 后端。

使用 GCE_VM_IP 端点的可用区级网络端点组 (NEG) 只能用作内部 TCP/UDP 负载均衡的后端。

网络负载均衡不支持可用区级 NEG。

如需了解详情,请参阅负载均衡中的网络端点组概览

互联网网络端点组

互联网 NEG 是定义外部后端的全球资源。外部后端是在本地基础架构中或由第三方提供的基础架构上托管的后端。

互联网 NEG 是 IP 地址或主机名以及可选端口的组合:

  • 可公开解析的完全限定域名和可选端口,例如 backend.example.com:443(默认端口:对于 HTTP 为 80,对于 HTTPS 为 443)。
  • 可公开访问的 IP 地址和可选端口,例如 203.0.113.8:80203.0.113.8:443(默认端口:对于 HTTP 为 80,对于 HTTPS 为 443

只有全局外部 HTTP(S) 负载均衡器(经典版)支持互联网 NEG 后端。全局外部 HTTP(S) 负载均衡器和区域外部 HTTP(S) 负载均衡器不支持互联网 NEG 后端。 Traffic Director 支持具有完全限定域名的互联网 NEG

如需了解详情,请参阅互联网网络端点组概览

无服务器网络端点组

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

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

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

如需为共享网址格式的无服务器应用设置无服务器 NEG,请使用网址掩码。网址掩码是网址架构的模板(例如 example.com/<service>)。无服务器 NEG 将使用此模板从传入请求的网址中提取 <service> 名称,并将请求路由到相同名称的匹配的 Cloud Run、Cloud Functions 或 App Engine 服务。

如需了解详情(包括哪些负载均衡器支持无服务器 NEG),请参阅无服务器网络端点组概览

服务绑定

服务绑定是在 Traffic Director 中的后端服务与在 Service Directory 中注册的服务之间建立连接的后端。后端服务可以引用多个服务绑定。具有服务绑定的后端服务不能引用任何其他类型的后端。

流量分配

后端行为的某些方面由后端服务资源中以下字段的值决定:

  • 平衡模式定义了负载平衡器如何为新请求或连接衡量后端就绪情况。
  • 目标容量,用于定义目标最大连接数、目标最大速率或目标最大 CPU 利用率。
  • 容量扩缩器,可调整总体可用容量,而无需修改目标容量。

均衡模式

均衡模式确定负载均衡器的后端或 Traffic Director 是可以处理额外的流量还是已完全加载。Google Cloud 有三种均衡模式:

  • CONNECTION
  • RATE
  • UTILIZATION

均衡模式选项取决于后端服务的负载均衡方案、后端服务的协议以及连接到后端服务的后端类型。

在后端服务中添加后端时可设置均衡模式。请注意,使用无服务器 NEG 或互联网 NEG 作为负载均衡器的后端时,您不能指定均衡模式。

对于全球外部 HTTP(S) 负载均衡器(经典版),均衡模式用于选择最有利的后端(实例组或 NEG)。然后,流量通过轮循方式在后端的实例或端点之间分配。

对于全局外部 HTTP(S) 负载均衡器、区域外部 HTTP(S) 负载均衡器和内部 HTTP(S) 负载均衡器,负载均衡是双层的。均衡模式决定了应发送到每个后端(实例组或 NEG)的流量的权重或比例。然后,负载均衡政策 (LocalityLbPolicy) 会确定流量如何分配到组中的实例或端点。max-utilization 目标容量只能按实例组指定,并且不能应用于组中的特定虚拟机。

均衡模式 受支持的负载均衡方案 兼容的后端服务协议1 兼容的后端2 适用的产品
CONNECTION EXTERNAL
INTERNAL
SSL、TCP、UDP
实例组或区域 NEG(如果受支持)。
  • SSL 代理负载均衡器
  • TCP 代理负载均衡器
  • 内部 TCP/UDP 负载均衡器
  • 网络负载均衡器
RATE EXTERNAL
EXTERNAL_MANAGED
INTERNAL_MANAGED
INTERNAL_SELF_MANAGED
HTTP、HTTPS、HTTP2、gRPC 实例组或区域 NEG
  • 全球外部 HTTP(S) 负载均衡器
  • 全球外部 HTTP(S) 负载均衡器(经典版)
  • 区域级外部 HTTP(S) 负载均衡器
  • 内部 HTTP(S) 负载均衡器
  • Traffic Director(INTERNAL_SELF_MANAGED;仅限 HTTPS、HTTP 和 gRPC 协议)
UTILIZATION EXTERNAL
EXTERNAL_MANAGED
INTERNAL_MANAGED
INTERNAL_SELF_MANAGED
无特殊限制 仅限实例组。区域 NEG 不支持利用率模式。
  • 全球外部 HTTP(S) 负载均衡器
  • 全球外部 HTTP(S) 负载均衡器(经典版)
  • 区域级外部 HTTP(S) 负载均衡器
  • SSL 代理负载均衡器
  • TCP 代理负载均衡器
  • 内部 HTTP(S) 负载均衡器
  • Traffic Director(INTERNAL_SELF_MANAGED;仅限 HTTPS、HTTP、TCP 和 gRPC 协议)
1根据负载均衡器的类型进一步限制协议。
2对于支持的后端类型(例如实例组和可用区级 NEG),请参阅负载均衡器功能页面上的后端

如果与后端服务相关联的所有虚拟机的平均利用率低于 10%,则 Google Cloud 可能会首选特定区域。当您使用代管地区实例组、不同区域中的代管区域实例组以及非代管区域实例组时,可能会发生这种情况。随着发送到负载均衡器的流量越来越多,这种区域不均衡问题会自动得以解决。

如需了解详情,请参阅 gcloud compute backend-services add-backend

更改负载均衡器的均衡模式

对于某些负载均衡器,您无法更改均衡模式,因为后端服务可能只有一种均衡模式。对于其他负载均衡器,您可以更改均衡模式,因为那些后端服务可以使用多个模式。

负载均衡器 后端 可用的均衡模式
  • 全球外部 HTTP(S) 负载平衡器
  • 全球外部 HTTP(S) 负载均衡器(经典版)
  • 区域级外部 HTTP(S) 负载均衡器(预览版
实例组 RATEUTILIZATION
可用区级 NEG(GCE_VM_IP_PORT 端点) RATE
内部 HTTP(S) 负载均衡器 实例组 RATEUTILIZATION
可用区级 NEG(GCE_VM_IP_PORT 端点) RATE
TCP 代理负载均衡器 实例组 CONNECTIONUTILIZATION
可用区级 NEG(GCE_VM_IP_PORT 端点) CONNECTION
SSL 代理负载均衡器 实例组 CONNECTIONUTILIZATION
可用区级 NEG(GCE_VM_IP_PORT 端点) CONNECTION
网络负载均衡器 实例组 CONNECTION
内部 TCP/UDP 负载均衡器 实例组 CONNECTION
可用区级 NEG(GCE_VM_IP 端点) CONNECTION

目标容量

每个均衡模式都有一个对应的目标容量,用于定义下列目标最大值之一:

  • 连接数
  • 费率
  • CPU 占用率

对于每种均衡模式,目标容量都不是断路器。在某些情况下,负载均衡器将超过最大值,例如在所有后端虚拟机或端点都已达到最大值的情况下。

连接均衡模式

对于 CONNECTION 均衡模式,目标容量可定义目标最大并发连接数。除了内部 TCP/UDP 负载均衡器和网络负载均衡器之外,您必须使用以下某一设置来指定目标连接数上限:

  • max-connections-per-instance(每个虚拟机):单个虚拟机的目标平均连接数。
  • max-connections-per-endpoint(每个地区 NEG 中的端点):单个端点的目标平均连接数。
  • max-connections(每个地区 NEG 和地区实例组):整个 NEG 或实例组的目标平均连接数。对于区域代管式实例组,请改用 max-connections-per-instance

下表显示了目标容量参数如何定义以下内容:

  • 整个后端的目标容量
  • 每个实例或端点的预期目标容量
后端类型 目标容量
如果您指定 整个后端容量 每个实例或每个端点的预期容量
实例组
N 实例,
H 运行状况良好
max-connections-per-instance=X X × N (X × N)/H
地区 NEG
N 端点,
H 运行状况良好
max-connections-per-endpoint=X X × N (X × N)/H
实例组
(区域代管式实例组除外)

H 运行状况良好的实例
max-connections=Y Y Y/H

如图所示,max-connections-per-instancemax-connections-per-endpoint 设置是代理,它用于计算整个实例组或整个地区 NEG 的目标连接数上限:

  • 在包含 N 实例的实例组中,设置 max-connections-per-instance=X 的含义与设置 max-connections=X × N 相同。
  • 在具有 N 端点的地区 NEG 中,设置 max-connections-per-endpoint=X 的含义与设置 max-connections=X × N 相同。

速率均衡模式

对于 RATE 均衡模式,您必须使用以下参数之一定义目标容量:

  • max-rate-per-instance(每个虚拟机):为单个虚拟机提供目标平均 HTTP 要求率。
  • max-rate-per-endpoint(地区 NEG 中的每个端点):为单个端点提供目标平均 HTTP 要求率。
  • max-rate(每个地区 NEG 和地区实例组):为整个 NEG 或实例组提供目标平均 HTTP 要求率。对于区域代管式实例组,请改用 max-rate-per-instance

下表显示了目标容量参数如何定义以下内容:

  • 整个后端的目标容量
  • 每个实例或端点的预期目标容量
后端类型 目标容量
如果您指定 整个后端容量 每个实例或每个端点的预期容量
实例组
N 实例,
H 运行状况良好
max-rate-per-instance=X X × N (X × N)/H
地区 NEG
N 端点,
H 运行状况良好
max-rate-per-endpoint=X X × N (X × N)/H
实例组
(区域代管式实例组除外)

H 运行状况良好的实例
max-rate=Y Y Y/H

如图所示,max-rate-per-instancemax-rate-per-endpoint 设置是代理,它用于计算整个实例组或整个地区 NEG 的 HTTP 请求的目标上限:

  • 在包含 N 实例的实例组中,设置 max-rate-per-instance=X 的含义与设置 max-rate=X × N 相同。
  • 在具有 N 端点的地区 NEG 中,设置 max-rate-per-endpoint=X 的含义与设置 max-rate=X × N 相同。

利用率均衡模式

UTILIZATION 均衡模式没有强制的目标容量。您有多种选项取决于后端类型,如下一部分中的表格所示。

max-utilization 目标容量只能按实例组指定,并且不能应用于组中的特定虚拟机。

UTILIZATION 均衡模式没有强制的目标容量。使用 Google Cloud 控制台将后端实例组添加到后端服务时,如果选择了 UTILIZATION 均衡模式,Google Cloud 控制台会将 max-utilization 的值设置为 0.8 (80%)。除了 max-utilization 之外,UTILIZATION 均衡模式还支持更复杂的目标容量,如下一部分表中所述。

支持的均衡模式和目标容量设置

此表总结了针对给定负载均衡器和后端类型的所有可能的均衡模式。它还显示了您必须使用均衡模式指定的可用或必需的容量设置。

负载均衡器 后端类型 平衡模式 目标容量
  • 全球外部 HTTP(S) 负载均衡器
  • 全球外部 HTTP(S) 负载均衡器(经典版)
  • 区域级外部 HTTP(S) 负载均衡器
  • 内部 HTTP(S) 负载均衡器
  • Traffic Director
实例组 RATE 必须指定以下其中一项:
  • 每个地区实例组的 max-rate
  • max-rate-per-instance
     (地区性或区域性实例组)
UTILIZATION 您可以选择指定以下其中一项:
  • (1) max-utilization
  • (2) 每个地区实例组的 max-rate
  • (3) max-rate-per-instance
     (地区性或区域性实例组)
  • (1) 和 (2) 组合在一起
  • (1) 和 (3) 组合在一起
可用区级 NEG (GCP_VM_IP_PORT) RATE 必须指定以下其中一项:
  • 每个地区 NEG 的 max-rate
  • max-rate-per-endpoint
内部 TCP/UDP 负载均衡器 实例组 CONNECTION 您不能指定目标连接数上限。
可用区级 NEG (GCP_VM_IP) CONNECTION 您不能指定目标连接数上限。
外部 TCP/UDP 网络负载均衡器 实例组 CONNECTION 您不能指定目标连接数上限。
  • SSL 代理负载均衡器
  • TCP 代理负载均衡器
实例组 CONNECTION 必须指定以下其中一项:
  • 每个地区实例组的 max-connections
  • max-connections-per-instance  (地区性或区域性实例组)
UTILIZATION 您可以选择指定以下其中一项:
  • (1) max-utilization
  • (2) 每个地区实例组的 max-connections
  • (3) max-connections-per-instance
     (地区性或区域性实例组)
  • (1) 和 (2) 组合在一起
  • (1) 和 (3) 组合在一起
可用区级 NEG (GCP_VM_IP_PORT) CONNECTION 必须指定以下其中一项:
  • 每个地区 NEG 的 max-connections
  • max-connections-per-endpoint

容量扩缩器

您可以选择性地调整容量扩缩器以缩减目标容量(最大利用率、最大速率或最大连接数),而无需更改目标容量。支持目标容量的所有负载均衡器都支持容量扩缩器。唯一的例外是网络负载均衡器和内部 TCP/UDP 负载均衡器。

默认情况下,容量扩缩器的值为 1.0 (100%)。您可以将容量扩缩器设置为以下任一值:

  • 确切的 0.0(可防止所有新连接)
  • 一个介于 0.1 (10%) 和 1.0 (100%) 之间的值

以下示例演示了容量调节器如何与目标容量设置搭配使用。

  • 如果均衡模式是 RATE,则最大速率设置为 80 RPS,且容量扩缩器为 1.0有效目标容量也是 80 RPS。

  • 如果均衡模式是 RATE,则最大利用率设置为 80 RPS,且容量扩缩器为 0.5有效目标容量为 40 RPS (0.5 times 80)。

  • 如果均衡模式是 RATE,则最大利用率设置为 80 RPS,且容量扩缩器为 0.0有效目标容量为零。容量扩缩器为零将使后端不执行轮替。

Traffic Director 和流量分配

Traffic Director 也会使用后端服务资源。具体来说,Traffic Director 使用负载平衡方案为 INTERNAL_SELF_MANAGED 的后端服务。对于内部自行管理的后端服务,流量分配依据负载平衡模式和负载平衡政策的组合。后端服务根据后端的平衡模式将流量定向到后端。然后,Traffic Director 根据负载平衡政策分配流量。

内部自行管理的后端服务支持以下平衡模式:

  • UTILIZATION(如果所有后端都是实例组)
  • RATE(如果所有后端都是实例组或区域 NEG)

如果您选择 RATE 均衡模式,则必须指定最大速率、每个实例的最大速率或每个端点的最大速率。

如需详细了解 Traffic Director,请参阅 Traffic Director 概念

后端子集

后端子集化是一项可选功能,通过为每个代理实例分配后端子集来提高性能和可扩缩性。

以下服务支持后端子集化:

  • 内部 HTTP(S) 负载平衡
  • 内部 TCP/UDP 负载均衡

内部 HTTP(S) 负载均衡器的后端子集化

对于内部 HTTP(S) 负载均衡器,后端子集化仅将区域后端服务中的某个后端子集分配给每个代理实例。

默认情况下,每个内部 HTTP(S) 负载均衡器代理实例都会打开与后端服务中所有后端的连接。如果代理实例和后端的数量都较大,那么打开与所有后端的连接便可能会导致性能问题。启用子集化后,每个代理仅打开与后端中某个子集的连接,从而减少在每个后端上保持打开的连接数。减少每个后端同时打开的连接数可以提高后端和代理的性能。

下图展示了包含两个代理的负载均衡器。如果没有后端子集化,来自这两个代理的流量便会分配到后端服务 1 中的所有后端。启用后端子集化后,来自每个代理的流量将分配到后端的某个子集。来自代理 1 的流量会分配到后端 1 和 2,来自代理 2 的流量则分配到后端 3 和 4。

比较启用和停用后端子集化的内部 HTTPS 负载均衡器。
比较启用和停用后端子集化的内部 HTTP(S) 负载均衡器。

此外,您还可以设置 localityLbPolicy 政策,优化流向后端的负载均衡流量。如需了解详情,请参阅流量政策

如需了解如何为内部 HTTP(S) 负载均衡器设置后端子集化,请参阅配置后端子集化

对内部 HTTP(S) 负载均衡器使用后端子集化相关的注意事项
  • 虽然后端子集化旨在确保所有后端实例都得到充分利用,但它可能会为每个后端接收的流量引入一些偏差。对于对后端负载均衡敏感的后端服务,建议将 localityLbPolicy 设置为 LEAST_REQUEST
  • 启用并稍后停用子集会破坏现有连接。
  • 后端子集化要求会话亲和性为 NONE(5 元组哈希)。只有在后端子集化已停用的情况下才能使用其他会话亲和性选项。--subsetting-policy--session-affinity 标志的默认值都是 NONE,并且一次只能将其中一个设置为不同的值。

内部 TCP/UDP 负载均衡器的后端子集化

借助内部 TCP/UDP 负载均衡器的后端子集化,您可以扩缩内部 TCP/UDP 负载均衡器以支持每个内部后端服务的更多后端虚拟机实例。

如需了解子集如何影响此限制,请参阅负载均衡资源配额和限制的“后端服务”部分

默认情况下,子集功能会停用,这会将后端服务的分配范围限制为最多 250 个后端实例或端点。如果后端服务需要支持超过 250 个后端,您可以启用子集。启用子集后,系统将为每个客户端连接选择一个后端实例子集。

下图显示了两种操作模式之间的差异的缩减模型。

比较不带子集和带子集的内部 TCP / UDP 负载均衡器(单击放大)
比较不带子集和带子集的内部 TCP / UDP 负载均衡器(单击放大)

如果没有子集,系统将更好地利用一组健康的后端,并根据流量分配在所有健康的后端之间分配新的客户端连接。这种子集存在负载均衡限制,但允许负载均衡器支持超过 250 个后端。

如需了解配置说明,请参阅子集

对内部 TCP/UDP 负载均衡器使用后端子集化相关的注意事项
  • 启用子集设置后,即使后端数量较小,也并非所有后端都能接收来自给定发送者的流量。
  • 如需了解启用子集时的最大后端实例数,请参阅配额页面
  • 子集化仅支持 5 元组会话亲和性
  • 子集不支持数据包镜像。
  • 启用并稍后停用子集会破坏现有连接。
  • 如果本地客户端需要访问内部 TCP/UDP 负载均衡器,则子集化可以显著减少从本地客户端接收连接的后端数量。这是因为 Cloud VPN 隧道或 Cloud Interconnect VLAN 连接的区域决定了负载均衡器后端的子集。特定区域中的所有 Cloud VPN 和 Cloud Interconnect 端点使用相同的子集。不同的子集用于不同的区域。

后端子集化价格

使用后端子集化无需付费。如需了解详情,请参阅所有网络流量价格

会话亲和性

某些应用需要将给定用户发出的多个请求定向到同一后端或端点。此类应用包括广告投放、游戏或具有大量内部缓存的服务所使用的有状态服务器。会话亲和性的缺点是负载的均匀分配可能会有所减少。

会话亲和性会尽最大努力将请求传递到处理初始请求的同一个后端。默认情况下,会话亲和性处于停用状态 (--session-affinity=NONE)。如果未启用会话亲和性,则负载均衡器会根据 5 元组哈希分配新请求,如下所示:

  • 数据包的来源 IP 地址
  • 数据包的来源端口(如果位于数据包的标头中)
  • 数据包的目标 IP 地址
  • 数据包的目的地端口(如果数据包的标头中出现)
  • 数据包的协议

对于直通式负载均衡器,如果后端实例或端点运行状况良好,则后续请求将转到同一个后端虚拟机或端点。

对于基于代理的负载均衡器,如果后端实例或端点运行状况良好且容量不足,则后续请求将转到同一个后端虚拟机或端点。均衡模式决定了后端何时达到容量。

下表显示了会话亲和性选项:

产品 会话粘性选项

仅当负载均衡位置政策 (LocalityLbPolicy) 设置为 RING_HASHMAGLEV 时,才会实现会话亲和性设置。

  • 无 (NONE)
  • 客户端 IP (CLIENT_IP)
  • 生成的 Cookie (GENERATED_COOKIE)
  • 标头字段 (HEADER_FIELD)
  • HTTP Cookie (HTTP_COOKIE)

对于全球外部 HTTP(S) 负载均衡器,如果您使用加权流量拆分,请勿配置会话亲和性。即使您配置了该选项,也是加权流量拆分配置优先。

全球外部 HTTP(S) 负载均衡器(经典版)
  • 无 (NONE)
  • 客户端 IP (CLIENT_IP)
  • 生成的 Cookie (GENERATED_COOKIE)
内部 HTTP(S) 负载平衡器

仅当负载均衡位置政策 (LocalityLbPolicy) 设置为 RING_HASHMAGLEV 时,才会实现会话亲和性设置。

  • 无 (NONE)
  • 客户端 IP (CLIENT_IP)
  • 生成的 Cookie (GENERATED_COOKIE)
  • 标头字段 (HEADER_FIELD)
  • HTTP Cookie (HTTP_COOKIE)
内部 TCP/UDP 负载均衡器
  • 无 (NONE)
  • 客户端 IP,无目标(预览版)(CLIENT_IP_NO_DESTINATION)
  • 客户端 IP、目的地 IP (CLIENT_IP)
  • 客户端 IP、目的地 IP、协议 (CLIENT_IP_PROTO)
  • 客户端 IP、客户端端口、目的地 IP、目的地端口、协议 (CLIENT_IP_PORT_PROTO)
网络负载均衡器1
  • 无 (NONE)
  • 客户端 IP、目的地 IP (CLIENT_IP)
  • 客户端 IP、目的地 IP、协议 (CLIENT_IP_PROTO)
  • 客户端 IP、客户端端口、目的地 IP、目的地端口、协议 (CLIENT_IP_PORT_PROTO)
  • 无 (NONE)
  • 客户端 IP (CLIENT_IP)
Traffic Director
  • 无 (NONE)
  • 客户端 IP (CLIENT_IP)
  • 生成的 Cookie (GENERATED_COOKIE)(仅限 HTTP 协议)
  • 标头字段 (HEADER_FIELD)(仅限 HTTP 协议)
  • HTTP Cookie (HTTP_COOKIE)(仅限 HTTP 协议)

1 此表记录基于后端服务的网络负载均衡器支持的会话亲和性。基于目标池的网络负载均衡器不使用后端服务。而是通过目标池中的 sessionAffinity 参数为网络负载均衡器设置会话亲和性。

配置会话亲和性时请注意以下几点:

  • 为进行身份验证或为了安全起见,请勿依赖会话亲和性。会话亲和性设计为在后端达到或超过容量上限或运行状况不佳时被破坏。

  • Google Cloud 负载平衡器会尽最大努力提供会话亲和性。更改后端健康检查状态或更改后端完整度的因素(以平衡模式衡量)可能会破坏会话亲和性。不建议将 None 以外的会话亲和性与 UTILIZATION 均衡模式一起使用。这是因为实例利用率的更改可能会导致负载均衡服务将新请求或连接定向到不太完整的后端虚拟机。这会破坏会话亲和性。请改用 RATECONNECTION 均衡模式,以降低破坏会话亲和性的可能性。

  • 负载均衡器启用会话亲和性后,当合理大量地分布唯一会话时,负载均衡器会有效地实现负载均衡。“合理大量”是指至少是实例组中的后端实例数的数倍。当您使用少量会话测试负载均衡器时,系统不会均匀分配流量。

  • 对于外部和内部 HTTP(S) 负载均衡器,当预期端点或实例超出其均衡模式的目标最大值时,会话亲和性可能会被破坏。请思考以下示例:

    • 一个负载均衡器有一个 NEG 和三个端点。
    • 每个端点的目标容量为 1 RPS。
    • 均衡模式为 RATE
    • 目前,每个端点分别处理 1.1、0.8 和 1.6 RPS。
    • 当最后一个端点具有亲和性的 HTTP 请求到达负载均衡器时,会话亲和性会声明以 1.6 RPS 处理的端点。
    • 新请求可能会发送到 RPS 为 0.8 的中间端点。
  • 如需了解网络负载均衡和会话亲和性的具体信息,请参阅外部 TCP/UDP 网络负载均衡概览

  • 如需详细了解内部 TCP/UDP 负载均衡和会话亲和性,请参阅内部 TCP/UDP 负载均衡概览

  • 如果配置了无代理 gRPC 服务,Traffic Director 不支持会话亲和性。

  • --session-affinity--subsetting-policy 标志的默认值都是 NONE,并且一次只能将其中一个设置为不同的值。

以下几个部分介绍了不同类型的会话亲和性。

客户端 IP、无目标亲和性

“客户端 IP、无目标亲和性”会将来自同一客户端来源 IP 地址的请求定向到同一个后端实例。“客户端 IP、无目标亲和性”是内部 TCP/UDP 负载均衡器的选项。

使用“客户端 IP、无目标亲和性”时,请注意以下几点:

  • “客户端 IP、无目标亲和性”是一个由客户端的来源 IP 地址组成的元组哈希。

  • 如果客户端从一个网络切换到另一个网络,其 IP 地址会发生变化,导致亲和性被破坏。

客户端 IP 亲和性

客户端 IP 地址亲和性将来自同一客户端 IP 地址的请求定向到同一个后端实例。客户端 IP 地址亲和性适用于所有使用后端服务的 Google Cloud 负载平衡器。

使用客户端 IP 亲和性时,请注意以下几点:

  • 客户端 IP 亲和性是一个二元组哈希,由客户端的 IP 地址以及客户端连接的负载均衡器转发规则的 IP 地址组成。

  • 如果原始客户端位于 NAT 后面或通过代理发出请求,则负载均衡器看到的客户端 IP 地址可能不是原始客户端。通过 NAT 或代理发出的请求会将 NAT 路由器或代理的 IP 地址用作客户端 IP 地址。这会导致传入的流量无谓汇集到同一个后端实例上。

  • 如果客户端从一个网络切换到另一个网络,其 IP 地址会发生变化,导致亲和性被破坏。

如果设置了生成的 Cookie 亲和性,则负载平衡器会针对第一个请求发出一个 Cookie。对于具有相同 Cookie 的每个后续请求,负载均衡器会将请求定向到同一个后端虚拟机或端点。

  • 对于全局外部 HTTP(S) 负载均衡器,Cookie 名为 GCLB
  • 对于区域级外部 HTTP(S) 负载均衡器、内部 HTTP(S) 负载均衡器和 Traffic Director,Cookie 名为 GCILB

与基于客户端 IP 地址的亲和性相比,基于 Cookie 的亲和性可更准确地识别负载均衡器的客户端。例如:

  1. 使用基于 Cookie 的亲和性时,负载均衡器可以唯一标识共享同一来源 IP 地址的两个或更多客户端系统。使用基于客户端 IP 地址的亲和性,负载均衡器会处理来自同一来源 IP 地址的所有连接,就像它们来自同一客户端系统一样。

  2. 如果客户端更改其 IP 地址,则基于 Cookie 的亲和性可让负载均衡器识别来自该客户端的后续连接,而不是将此连接视为新连接。例如,当移动设备从一个网络切换到另一个网络时,客户端会更改其 IP 地址。

在负载平衡器为基于生成的 Cookie 亲和性创建一个 Cookie 时,它会将该 Cookie 的 path 特性设置为 /。如果网址映射的路径匹配器拥有一个主机名的多个后端服务,则所有后端服务会共用同一个会话 Cookie。

负载均衡器生成的 HTTP Cookie 的生命周期是可配置的。您可以将该生命周期设置为 0(默认值,这意味着 Cookie 只是会话 Cookie)。也可以将 Cookie 的生命周期设置为一个介于 186400 秒(24 小时)之间的值(含边界值)。

以下产品可以使用生成的 Cookie 亲和性:

  • 全球外部 HTTP(S) 负载均衡器 *
  • 全球外部 HTTP(S) 负载均衡器(经典版)
  • 区域级外部 HTTP(S) 负载均衡器 *
  • 内部 HTTP(S) 负载平衡器
  • Traffic Director
* 仅当负载均衡位置政策 (LocalityLbPolicy) 设置为 RING_HASHMAGLEV 时,才会实现会话亲和性设置。

标头字段亲和性

如果同时满足以下两个条件,则可以使用 Traffic Director 和内部 HTTP(S) 负载均衡器:

  • 负载均衡位置政策是 RING_HASH 或 MAGLEV。
  • 后端服务的 consistentHash 指定 HTTP 标头的名称 (httpHeaderName)。

以下产品可以使用标头字段亲和性:

  • 全球外部 HTTP(S) 负载均衡器 *
  • 区域级外部 HTTP(S) 负载均衡器 *
  • 内部 HTTP(S) 负载平衡器
  • Traffic Director
* 仅当负载均衡位置政策 (LocalityLbPolicy) 设置为 RING_HASHMAGLEV 时,才会实现会话亲和性设置。

在同时满足以下两个条件时,Traffic Director 和内部 HTTP(S) 负载均衡器可以使用标头字段亲和性:

  • 负载均衡位置政策是 RING_HASH 或 MAGLEV。
  • 后端服务的一致性哈希指定 HTTP Cookie 的名称。

HTTP Cookie 亲和性根据 HTTP_COOKIE 标志中指定的 HTTP Cookie,将请求路由到 NEG 中的后端虚拟机或端点。如果客户端未提供 Cookie,则代理会生成 Cookie 并通过 Set-Cookie 标头将其返回给客户端。

以下产品可以使用 HTTP Cookie 亲和性:

  • 全球外部 HTTP(S) 负载均衡器 *
  • 区域级外部 HTTP(S) 负载均衡器 *
  • 内部 HTTP(S) 负载平衡器
  • Traffic Director
* 仅当负载均衡位置政策 (LocalityLbPolicy) 设置为 RING_HASHMAGLEV 时,才会实现会话亲和性设置。

如需详细了解使用 HTTP Cookie 亲和性的内部 HTTP(S) 负载均衡器,请参阅内部 HTTP(S) 负载均衡概览

失去会话亲和性

无论选择哪种类型的亲和性,在以下情况下,客户端都可能会失去与后端的亲和性:

  • 如果后端实例组或区域 NEG 的容量不足(根据平衡模式的目标容量定义)。在这种情况下,Google Cloud 会将流量定向到可能位于不同区域的其他后端实例组或区域 NEG。为解决此问题,请务必根据自己的测试为每个后端指定正确的目标容量。
  • 自动扩缩功能会向代管实例组添加实例或从中移除实例。发生这种情况时,实例组中的实例数量会发生变化,因此后端服务会为会话亲和性重新计算哈希值。为解决此问题,请确保代管实例组的最小大小可以应对典型负载。仅当负载意外增加时,系统才会执行自动扩缩功能。
  • 如果 NEG 中的后端虚拟机或端点未通过健康检查,则负载均衡器会将流量定向到其他健康状况良好的后端。如需详细了解当所有后端都未通过健康检查时负载均衡器如何应对,请参阅每个 Google Cloud 负载均衡器对应的文档。
  • UTILIZATION 平衡模式适用于后端实例组时,会话亲和性会因后端利用率的变化而被破坏。您可以使用 RATECONNECTION 均衡模式(具体取决于负载均衡器类型支持哪种模式)来解决此问题。

使用 HTTP(S) 负载均衡、SSL 代理负载均衡或 TCP 代理负载均衡时,请额外注意以下几点:

  • 如果从互联网上的客户端到 Google 的路由路径在请求或连接之间发生变化,则系统可能会选择其他 Google Front End (GFE) 前端作为代理。这可能会破坏会话亲和性。
  • 当您使用 UTILIZATION 均衡模式时(尤其是未定义目标最大容量时),如果负载均衡器的流量较低,会话亲和性可能会被破坏。请切换到所选负载均衡器支持的 RATECONNECTION 均衡模式。

后端服务超时

大多数 Google Cloud 负载均衡器都具有后端服务超时。默认值是 30 秒。 允许的超时值的完整范围为 1 - 2,147,483,647 秒。

  • 对于使用 HTTP、HTTPS 或 HTTP/2 协议的外部 HTTP(S) 负载均衡器和内部 HTTP(S) 负载均衡器,后端服务超时为 HTTP(S) 流量的请求/响应超时。这是负载平衡器等待后端返回请求的完整响应的时间量。例如,如果后端服务超时值是默认值 30 秒,则后端有 30 秒的时间来传送请求的完整响应。如果后端在将响应标头发送到负载平衡器之前关闭了连接或超时,则负载平衡器会重试一次 HTTP GET 请求。如果后端发送响应标头(即使响应正文不完整),或者发送到后端的请求不是 HTTP GET 请求,则负载平衡器不会重试。如果后端根本没有响应,则负载均衡器会向客户端返回 HTTP 5xx 响应。要更改后端对请求作出响应的分配时间,请更改超时值。

    对于 HTTP 流量,客户端完成其请求发送的最长时间等于后端服务超时值。如果看到带有 jsonPayload.statusDetail client_timed_out 的 HTTP 408 响应,则表示客户端的请求被代理或者后端的响应被代理时跟不上进度。如果问题是由于客户端遇到性能问题,您可以通过增加后端服务超时值来解决此问题。

    如果 HTTP 连接升级到 WebSocket,则后端服务超时将定义 WebSocket 可以保持打开状态(无论是否空闲)的最长时间。

    如需详细了解每个负载均衡器的后端服务超时,请参阅以下内容:

    • 对于全局外部 HTTP(S) 负载均衡器和区域外部 HTTP(S) 负载均衡器,请参阅超时和重试
    • 对于内部 HTTP(S) 负载均衡器,请参阅超时和重试
  • 对于 SSL 代理负载均衡器和 TCP 代理负载均衡器,超时为空闲超时。如需在删除连接之前允许更多或更少时间,请更改超时值。此空闲超时也用于 WebSocket 连接。

  • 对于内部 TCP/UDP 负载均衡器和网络负载均衡器,您可以使用 gcloud 或 API 设置后端服务超时的值,但系统会忽略该值。后端服务超时对于这些直通负载均衡器没有任何意义。

  • 对于 Traffic Director,无代理 gRPC 服务不支持后端服务超时字段(使用 timeoutSec 指定)。对于此类服务,请使用 maxStreamDuration 字段配置后端服务超时。这是因为 gRPC 不支持 timeoutSec 的语义,该函数指定了在发出请求后等待后端返回完整响应的时间。gRPC 的超时指定了从数据流开头直到响应完全处理的时间(包括所有重试)。

健康检查

后端为实例组或区域 NEG 的每个后端服务都必须进行相关的健康检查。使用无服务器 NEG 或互联网 NEG 作为后端的后端服务不得引用健康检查。

如果使用 Google Cloud Console 创建负载均衡器,您可以在创建负载均衡器时创建健康检查(如果需要),也可以引用现有健康检查。

当您通过 Google Cloud CLI 或 API 创建使用实例组或可用区 NEG 后端的后端服务时,必须引用现有健康检查。如需详细了解所需健康检查的类型和范围,请参阅“健康检查概览”中的负载均衡器指南

如需了解详情,请参阅以下文档:

在后端服务资源上启用的额外功能

某些可选的 Google Cloud 功能(例如 Cloud CDN 和 Google Cloud Armor)适用于全球外部 HTTP(S) 负载均衡器使用的后端服务。SSL 代理负载均衡器和 TCP 代理负载均衡器也支持 Google Cloud Armor。

有关详情,请参阅:

流量管理功能

只有部分产品支持以下功能:

以下负载均衡器支持这些功能:

  • 全局外部 HTTP(S) 负载均衡器(不支持熔断)
  • 区域级外部 HTTP(S) 负载均衡器
  • 内部 HTTP(S) 负载均衡器
  • Traffic Director(但无代理 gRPC 服务不提供此支持)

后续步骤

如需获得说明如何在负载均衡中使用后端服务的相关文档和信息,请查看以下内容: