基于后端服务的外部 TCP/UDP 网络负载平衡概览

Google Cloud 外部 TCP/UDP 网络负载平衡(此后称为网络负载平衡)是区域级的直通式负载平衡器。 网络负载平衡器在同一区域中的虚拟机实例之间分配外部流量。

您可以为 TCP、UDP、ESP 和 ICMP 流量配置网络负载均衡器。对 ESP 和 ICMP 的支持为预览版

网络负载平衡器可以接收以下来源的流量:

  • 互联网上的任何客户端
  • 具有外部 IP 的 Google Cloud 虚拟机
  • 可通过 Cloud NAT 或基于实例的 NAT 访问互联网的 Google Cloud 虚拟机

网络负载平衡具有以下特点:

  • 网络负载平衡是一项代管式服务。
  • 网络负载平衡是使用 Andromeda 虚拟网络Google Maglev 实现的。
  • 网络负载平衡器不是代理。
    • 经过负载平衡的数据包由具有数据包的来源和目的地 IP 地址、协议的后端虚拟机接收,并且如果协议基于端口,则来源和目的地端口保持不变。
    • 经过负载平衡的连接由后端虚拟机终止。
    • 来自后端虚拟机的响应直接发送到客户端,而不是通过负载平衡器返回。其行业术语称为直接服务器返回

基于后端服务的网络负载均衡器具有以下特征:

  • 代管式实例组后端。基于后端服务的网络负载均衡器支持将代管式实例组 (MIG) 用作后端。与非代管式实例组相比,代管式实例组将后端管理的某些方面自动化,并可提供更好的可扩缩性和可靠性。
  • 精细的流量分配控制。后端服务配置包含一组值,例如健康检查会话亲和性连接跟踪连接排空故障切换政策。其中大多数设置都具有默认值,可以帮助您快速上手。
  • 运行状况检查。基于后端服务的网络负载均衡器使用与其分配的流量类型(TCP、SSL、HTTP、HTTPS 或 HTTP/2)匹配的健康检查。

架构

下图展示了网络负载平衡器的组件:

具有区域后端服务的外部 TCP/UDP 网络负载平衡器
具有区域后端服务的网络负载平衡

负载平衡器由多个配置组件组成。单个负载平衡器可能具有以下组件:

  • 一个或多个区域外部 IP 地址
  • 一个或多个区域转发规则
  • 一个区域外部后端服务
  • 一个或多个后端实例组
  • 与后端服务关联的运行状况检查

此外,您必须创建防火墙规则以允许负载平衡流量和健康检查探测到达后端虚拟机。

IP 地址

网络负载平衡器需要至少一个转发规则。转发规则引用单个区域外部 IP 地址。区域外部 IP 地址可从互联网的任何位置访问,但它们来自每个 Google Cloud 区域独有的池。

创建转发规则时,您可以指定现有的预留区域外部 IP 地址的名称或 IP 地址。如果您没有指定 IP 地址,转发规则会引用临时区域外部 IP 地址。如果您需要在删除转发规则后保留与项目关联的地址以供重复使用,或者您需要多个转发规则引用相同的 IP 地址,请使用预留的 IP 地址。

网络负载平衡支持标准层级和优质层级区域外部 IP 地址。IP 地址和转发规则必须使用相同的网络层级。

如需了解预留 IP 地址的步骤,请参阅外部 IP 地址

转发规则

区域外部转发规则指定负载平衡器接受流量的协议和端口。由于网络负载均衡器不是代理,因此如果数据包包含端口信息,则网络负载均衡器会将流量传递到使用相同协议和端口的后端。转发规则与 IP 地址的结合构成了负载均衡器的前端。

负载平衡器会保留传入数据包的来源 IP 地址。传入数据包的目标 IP 地址是与负载平衡器的转发规则关联的 IP 地址。

传入流量与转发规则匹配,转发规则是特定 IP 地址、协议的组合,如果协议是基于端口的,则是端口之一、端口范围或所有端口。然后,转发规则会将流量传送到负载平衡器的后端服务。

网络负载平衡器需要至少一个转发规则。如多个转发规则中所述,您可以为同一负载均衡器定义多个转发规则。

转发规则协议

网络负载平衡支持每个转发规则的以下协议选项:TCPUDPL3_DEFAULT预览版)。

使用 TCPUDP 选项配置 TCP 或 UDP 负载平衡。L3_DEFAULT 协议选项可让网络负载平衡器对 TCP、UDP、ESP 和 ICMP 流量进行负载平衡。

除了支持 TCP 和 UDP 以外的协议之外,L3_DEFAULT 还可以让单个转发规则提供多个协议。例如,IPSec 服务通常会处理 ESP 和基于 UDP 的 IKE 和 NAT-T 流量的某些组合。L3_DEFAULT 选项允许配置一条转发规则来处理所有这些协议。

使用 TCPUDP 协议的转发规则可以引用使用与转发规则相同的协议或协议为 UNSPECIFIED 的后端服务(预览版)。L3_DEFAULT 转发规则只能引用协议为 UNSPECIFIED 的后端服务

下表总结了如何针对不同协议使用这些设置。

经过负载平衡的流量 转发规则协议 后端服务协议
TCP TCP TCPUNSPECIFIED
L3_DEFAULT UNSPECIFIED
UDP UDP UDPUNSPECIFIED
L3_DEFAULT UNSPECIFIED
ESP L3_DEFAULT UNSPECIFIED
ICMP(仅限回显请求) L3_DEFAULT UNSPECIFIED

多个转发规则

您可以为同一网络负载平衡器配置多个地区外部转发规则。(可选)每个转发规则可以具有不同的地区外部 IP 地址,或者多个转发规则可以具有相同的地区外部 IP 地址。

配置多个区域外部转发规则在以下用例中非常有用:

  • 您需要为同一后端服务配置多个外部 IP 地址。
  • 您需要为同一外部 IP 地址配置不同的协议以及不重叠的端口或端口范围。

对于给定的 IP 地址,L3_DEFAULT 转发规则可以与具有其他协议(TCPUDP)的转发规则共存,但不能与其他 L3_DEFAULT 转发规则共存。

只有在更具体的转发规则(例如 TCP 或 UDP 流量)不可用时,到达负载均衡器 IP 地址的数据包才会与 L3_DEFAULT 转发规则匹配。更具体地说,到达 IP 地址、协议和端口的数据包与 L3_DEFAULT 转发规则匹配,前提是当且仅当该 IP 地址没有其他与该数据包的协议和目的地端口匹配的转发规则。

使用多个转发规则时,请确保将后端虚拟机上运行的软件配置为绑定到负载平衡器转发规则的所有外部 IP 地址。

一项区域性后端服务

每个网络负载平衡器都有一个区域后端服务,该服务定义负载平衡器的行为以及流量如何分配到其后端。后端服务的名称是 Google Cloud Console 中显示的网络负载平衡器的名称。

每个后端服务会定义以下后端参数:

  • 协议。后端服务接受由一个或多个区域转发规则指定的 IP 地址和端口(如果已配置)上的流量。后端服务将数据包传递到后端虚拟机,同时保留数据包的来源和目标 IP 地址、协议,以及协议和端口(如果协议基于端口)。

    与网络负载平衡器搭配使用的后端服务支持以下协议选项:TCPUDPUNSPECIFIED预览版)。

    无论转发规则协议如何,具有 UNSPECIFIED 协议的后端服务都可以与任何转发规则结合使用。具有特定协议(TCPUDP)的后端服务只能由具有相同协议(TCPUDP)的转发规则引用。具有 L3_DEFAULT 协议的转发规则只能引用具有 UNSPECIFIED 协议的后端服务。

    如需查看包含可能的转发规则和后端服务协议组合的表,请参阅转发规则协议规范

  • 流量分配。后端服务允许根据可配置的会话亲和性连接跟踪政策来分配流量。后端服务还可以配置为启用连接排空并为负载均衡器指定故障切换后端

  • 运行状况检查。后端服务必须有关联的区域运行状况检查

每个后端服务都在单个区域内运行,并将流量分配给后端虚拟机的第一个网络接口 (nic0)。后端必须是与后端服务(和转发规则)位于同一区域的实例组。后端可以是可用区非代管式实例组、可用区代管式实例组或区域代管式实例组。

只要 VPC 网络与后端服务位于同一项目中,基于后端服务的网络负载平衡器就支持其成员实例位于同一地区的任何 VPC 网络的实例组。(给定实例组中的所有虚拟机必须使用同一 VPC 网络。)

后端实例组

网络负载平衡器在代管式或非代管式实例组中的后端虚拟机之间分配连接。 实例组的范围可以是区域级,也可以是可用区级。

  • 区域代管式实例组。如果您可以使用实例模板来部署软件,请使用区域代管式实例组。区域代管式实例组可自动在多个可用区之间分配流量,提供最佳选择以避免在任何给定可用区发生潜在问题。

    使用区域代管式实例组的部署示例如下所示。实例组具有一个定义实例预配方式的实例模板,每个实例组在 us-central1 区域的三个可用区内部署实例。

    使用区域代管式实例组的网络负载平衡器
    使用区域代管式实例组的网络负载平衡器
  • 可用区代管式或非代管式实例组。使用同一区域内不同可用区中的可用区实例组可防止任何给定可用区发生潜在问题。

    使用可用区实例组的部署示例如下所示。此负载平衡器可提供跨两个可用区的可用性。

    使用可用区实例组的网络负载平衡器
    使用可用区实例组的网络负载平衡

运行状况检查

网络负载平衡使用区域运行状况检查来确定哪些实例可以接收新连接。每个网络负载平衡器的后端服务必须与区域运行状况检查相关联。负载平衡器使用运行状况检查来确定如何将新连接路由到后端实例。

如需详细了解 Google Cloud 运行状况检查的工作原理,请参阅运行状况检查原理

网络负载平衡支持以下类型的运行状况检查:

针对其他协议流量的运行状况检查

Google Cloud 不提供此处列出之外的任何其他特定于协议的健康检查。当您使用网络负载平衡对 TCP 以外的其他协议执行负载平衡时,您仍必须在后端虚拟机上运行基于 TCP 的服务,以提供所需的健康检查信息。

例如,如果您要对 UDP 流量进行负载平衡,则使用 UDP 协议对客户端请求进行负载平衡,并且必须运行 TCP 服务以向 Google Cloud 运行状况检查探测器提供信息。为此,您可以在每个后端虚拟机上运行一个简单的 HTTP 服务器,该服务器会向运行状况检查探测工具返回 HTTP 200 响应。您应该使用在后端虚拟机上运行的专属逻辑来确保仅当 UDP 服务已正确配置并运行时,HTTP 服务器才会返回 200。

防火墙规则

网络负载平衡是一种直通式负载平衡器,因此您使用 Google Cloud 防火墙规则来控制对负载平衡器后端的访问权限。 您必须创建入站允许防火墙规则或入站允许分层防火墙政策,以便允许健康检查以及您要进行负载平衡的流量。

转发规则和入站允许防火墙规则或分层防火墙政策通过以下方式协同工作:转发规则指定协议以及数据包必须满足才能转发到后端虚拟机的端口要求(如已定义)。入站允许防火墙规则控制转发的数据包是传送到虚拟机还是被丢弃。所有 VPC 网络都具有隐式拒绝入站防火墙规则,这些规则会阻止来自任何来源的传入数据包。Google Cloud 默认 VPC 网络包含一组受限的预填充的入站允许防火墙规则

  • 如需接受来自互联网上任何 IP 地址的流量,您必须使用 0.0.0.0/0 来源范围创建入站允许防火墙规则。如需仅允许来自某些 IP 地址范围的流量,请使用限制性更高的来源范围。

  • 为安全起见,入站允许防火墙规则应仅允许您需要的 IP 协议和端口。在使用协议设置为 L3_DEFAULT 的转发规则时,限制协议(以及在可能的情况下,端口)配置尤为重要。L3_DEFAULT 转发规则会转发所有受支持的 IP 协议(如果协议和数据包具有端口信息,则在所有端口上)的数据包。

  • 网络负载平衡使用 Google Cloud 运行状况检查。因此,您必须始终允许来自运行状况检查 IP 地址范围的流量。这些入站允许防火墙规则可以配置为专门针对负载平衡器的运行状况检查的协议和端口。

返回路径

网络负载平衡使用 VPC 网络外部的特殊路由将传入请求和运行状况检查探测定向到每个后端虚拟机。

负载平衡器会保留数据包的来源 IP 地址。 来自后端虚拟机的响应直接发送到客户端,而不是通过负载平衡器返回。其行业术语称为直接服务器返回

共享 VPC 架构

除 IP 地址外,网络负载平衡器的所有组件必须位于同一个项目中。下表总结了网络负载平衡的共享 VPC 组件:

IP 地址 转发规则 后端组件
区域级外部 IP 地址必须在负载平衡器所在的项目中或者在共享 VPC 宿主项目中定义。 区域外部转发规则必须在后端服务中的实例所在项目中定义。

区域后端服务必须在后端实例组中的实例所在的项目和区域中定义。

与后端服务关联的运行状况检查必须在后端服务所在的项目和区域中定义。

流量分配

网络负载平衡器分配新连接的方式取决于您是否配置了故障转移:

  • 如果您未配置故障转移,并且至少有一个后端虚拟机运行状况良好,则网络负载平衡器会向其运行状况良好的后端虚拟机分配新连接。当所有后端虚拟机均运行状况不佳时,作为最后的补救手段,负载平衡器会在所有后端之间分配新连接。 在这种情况下,负载平衡器会将每个新连接路由到运行状况不佳的后端虚拟机。
  • 如果已配置故障切换,网络负载均衡器会根据您配置的故障切换政策,在其活跃池中运行状况良好的虚拟机之间分配新连接。当所有后端虚拟机运行状况都不佳时,您可以从以下行为中选择一个
    • (默认)负载平衡器仅将流量分配到主虚拟机。这是最后的补救措施。此连接分配的最后补救措施不包括备用虚拟机。
    • 负载均衡器丢弃流量。

如需详细了解如何分配连接,请参阅下一部分后端选择和连接跟踪

如需详细了解故障切换的工作原理,请参阅故障切换部分。

后端选择和连接跟踪

网络负载平衡使用可配置的后端选择和连接跟踪算法来确定流量如何分配到后端虚拟机。

网络负载平衡使用以下算法在后端虚拟机之间(如果已配置故障切换,则在其活跃池中)分配数据包:

  1. 如果负载均衡器的连接跟踪表中包含一个与传入数据包的特征匹配的条目,则该数据包会发送到由该连接跟踪表条目指定的后端。该数据包被视为之前建立的连接的一部分,因此数据包会发送到负载均衡器之前确定并记录在其连接跟踪表中的后端虚拟机。
  2. 当负载均衡器收到没有对应的连接跟踪条目的数据包时,负载均衡器会执行以下操作:

    1. 负载平衡器选择一个后端。负载平衡器根据配置的会话亲和性计算哈希值。它使用此哈希值从当前运行状况良好的后端中选择一个后端(除非所有后端运行状况不佳,在这种情况下,只要故障转移政策尚未配置为在这种情况下丢弃流量。默认会话亲和性 NONE 使用以下哈希算法:

      • 对于 TCP 和未分段的 UDP 数据包,使用数据包来源 IP 地址、来源端口、目的地 IP 地址、目的地端口和协议的 5 元组哈希
      • 对于分段的 UDP 数据包和所有其他协议,使用数据包来源 IP 地址、目的地 IP 地址和协议的 3 元组哈希

      您可以通过使用较少信息的哈希算法自定义后端选择。如需查看所有受支持的选项,请参阅会话亲和性选项

    2. 负载平衡器向其连接跟踪表中添加一个条目。此条目记录了所选数据包连接的后端,以便来自此连接的所有未来数据包都发送到同一后端。是否使用连接跟踪取决于协议:

      • TCP 数据包。连接跟踪始终处于启用状态,且无法关闭。默认情况下,连接跟踪为 5 元组,但也可以将其配置为小于 5 元组。如果是 5 元组,TCP SYN 数据包的处理方式会有所不同。与非 SYN 数据包不同,此类数据包会舍弃所有匹配的连接跟踪条目,并始终选择新的后端。

        在以下情况下,使用默认的 5 元组连接跟踪:

        • 跟踪模式为 PER_CONNECTION(所有会话亲和性),或
        • 跟踪模式为 PER_SESSION 且会话亲和性为 NONE,或
        • 跟踪模式为 PER_SESSION 且会话亲和性为 CLIENT_IP_PORT_PROTO
      • UDP 和 ESP 数据包。仅当会话亲和性设置为 NONE 以外的其他值时,系统才会启用连接跟踪。

      • ICMP 数据包。无法使用连接跟踪。

      如需详细了解启用连接跟踪的时间以及启用连接跟踪时使用的跟踪方法,请参阅连接跟踪模式

      此外,请注意以下事项:

      • 在负载均衡器处理最后一个与条目匹配的数据包后 60 秒,连接跟踪表中的条目会过期。这个 60 秒的空闲超时值无法进行配置。
      • 根据协议,负载均衡器可能会在后端运行状况不佳时移除连接跟踪表条目。如需了解详情以及如何自定义此行为,请参阅运行状况不佳的后端上的连接持久性

会话粘性选项

会话亲和性控制从客户端到负载平衡器的后端虚拟机的新连接分配。会话亲和性是为整个区域外部后端服务(而非单个后端实例组)指定的。

网络负载平衡支持以下会话亲和性选项:

  • 无 (NONE)。来源 IP 地址、来源端口、协议、目的地 IP 地址和目的地端口的 5 元组哈希
  • 客户端 IP、目的地 IP (CLIENT_IP)。来源 IP 地址和目的地 IP 地址的 2 元组哈希
  • 客户端 IP、目的地 IP、协议 (CLIENT_IP_PROTO)。来源 IP 地址、目的地 IP 地址和协议的 3 元组哈希
  • 客户端 IP、客户端端口、目的地 IP、目的地端口、协议 (CLIENT_IP_PORT_PROTO)。来源 IP 地址、来源端口、协议、目的地 IP 地址和目的地端口的 5 元组哈希

如需了解这些会话亲和性选项如何影响后端选择和连接跟踪方法,请参阅此表

连接跟踪模式

是否启用连接跟踪仅取决于负载平衡流量的协议和会话亲和性设置。跟踪模式指定启用连接跟踪时要使用的连接跟踪算法。跟踪模式有两种:PER_CONNECTION(默认)和 PER_SESSION

  • PER_CONNECTION(默认值)。这是默认的跟踪模式。使用此连接跟踪模式时,TCP 流量始终按 5 元组进行跟踪,无论会话亲和性如何设置。对于 UDP 和 ESP 流量,当选定的会话亲和性不是NONE 时,系统会启用连接跟踪。UDP 和 ESP 数据包均使用此中描述的跟踪方法进行跟踪。

  • PER_SESSION。如果会话粘性为 CLIENT_IPCLIENT_IP_PROTO,则配置此模式会分别生成 2 元组和 3 元组连接跟踪。所有协议(ICMP 除外,不可跟踪连接)。对于其他会话亲和性设置,PER_SESSION 模式的行为与 PER_CONNECTION 模式相同。

如需了解这些跟踪模式如何与每个协议的不同会话亲和性设置结合使用,请参阅下表。

后端选择 连接跟踪模式
会话亲和性设置 用于选择后端的哈希方法 PER_CONNECTION(默认) PER_SESSION
默认:无会话亲和性

NONE

TCP 和未分段的 UDP:5 元组哈希

分段的 UDP 和所有其他协议:3 元组哈希

  • TCP:5 元组连接跟踪
  • 所有其他协议:连接跟踪关闭
  • TCP:5 元组连接跟踪
  • 所有其他协议:连接跟踪关闭
客户端 IP、目标 IP

CLIENT_IP

所有协议:2 元组哈希
  • TCP 和未分段的 UDP:5 元组连接跟踪
  • 分段的 UDP 和 ESP:3 元组连接跟踪
  • 所有其他协议:连接跟踪关闭
  • TCP、UDP、ESP:2 元组连接跟踪
  • 所有其他协议:连接跟踪关闭
客户端 IP、目标 IP、协议

CLIENT_IP_PROTO

所有协议:3 元组哈希
  • TCP 和未分段的 UDP:5 元组连接跟踪
  • 分段的 UDP 和 ESP:3 元组连接跟踪
  • 所有其他协议:连接跟踪关闭
  • TCP、UDP、ESP:3 元组连接跟踪
  • 所有其他协议:连接跟踪关闭
客户端 IP、客户端端口、目的地 IP、目的地端口、协议

CLIENT_IP_PORT_PROTO

TCP 和未分段的 UDP:5 元组哈希

分段的 UDP 和所有其他协议:3 元组哈希

  • TCP 和未分段的 UDP:5 元组连接跟踪
  • 分段的 UDP 和 ESP:3 元组连接跟踪
  • 所有其他协议:连接跟踪关闭
  • TCP 和未分段的 UDP:5 元组连接跟踪
  • 分段的 UDP 和 ESP:3 元组连接跟踪
  • 所有其他协议:连接跟踪关闭

如需了解如何更改连接跟踪模式,请参阅配置连接跟踪政策

运行状况不佳的后端上的连接持久性

连接持久性设置用于控制现有连接在所选后端运行状况不佳后是否持续存在于该后端上(只要该后端保留在负载均衡器配置的后端实例组中)

本部分介绍的行为不适用于从实例组中移除后端虚拟机或从后端服务中移除实例组的情况。在这种情况下,已建立的连接仅会按连接排空中所述持续存在。

以下连接持久性选项可用:

  • DEFAULT_FOR_PROTOCOL(默认)
  • NEVER_PERSIST
  • ALWAYS_PERSIST

下表总结了连接持久性选项,以及连接针对不同协议、会话亲和性选项和跟踪模式的持久程度。

运行状况不佳的后端上的连接持久性选项 连接跟踪模式
PER_CONNECTION PER_SESSION
DEFAULT_FOR_PROTOCOL

TCP:连接持续存在于运行状况不佳的后端上(所有会话亲和性)

所有其他协议:连接始终不持续存在于运行状况不佳的后端上

TCP:如果会话亲和性为 NONECLIENT_IP_PORT_PROTO,则连接会持续存在于运行状况不佳的后端上

所有其他协议:连接始终不持续存在于运行状况不佳的后端上

NEVER_PERSIST 所有协议:连接始终不持续存在于运行状况不佳的后端上
ALWAYS_PERSIST

TCP:连接持续存在于运行状况不佳的后端上(所有会话亲和性)

ESP、UDP:如果会话亲和性不是 NONE,则连接持续存在于运行状况不佳的后端上

ICMP:不适用,因为 ICIC 无法跟踪连接

此选项应仅用于高级使用场景。

无法进行配置

运行状况不佳的后端上的 TCP 连接持久性行为

每当采用 5 元组跟踪的 TCP 连接持续存在于运行状况不佳的后端上时:

  • 如果运行状况不佳的后端继续响应数据包,则连接将持续存在,直到运行状况不佳的后端或客户端将其重置或关闭。
  • 如果运行状况不佳的后端发送 TCP 重置 (RST) 数据包或未响应数据包,则客户端可能会使用新连接重试,让负载平衡器选择其他运行状况良好的后端。TCP SYN 数据包始终选择运行状况良好的新后端。

如需了解如何更改连接持久性行为,请参阅配置连接跟踪政策

连接排空时间

在下列情况下连接排空是应用于已建立的连接的过程:

  • 从实例组中移除后端虚拟机,或
  • 代管式实例组移除后端虚拟机(通过替换、放弃、滚动升级或缩减)或
  • 从后端服务中移除实例组。

默认情况下,连接排空处于停用状态。如果停用,尽快建立连接。启用连接排空后,可允许已建立的连接保留可配置的超时,在此之后终止后端虚拟机实例。

如需详细了解如何触发连接排空以及如何启用连接排空,请参阅启用连接排空

UDP 分段

网络负载平衡会处理分段和未分段的 UDP 数据包。未分段的数据包通常会在所有配置中进行处理。 如果您的应用使用分段的 UDP 数据包,请注意以下几点:

  • UDP 数据包在到达 Google Cloud VPC 网络之前可能会被分段。
  • Google Cloud VPC 网络会在 UDP 分段到达时进行转发(无需等待所有分段到达)。
  • 非 Google Cloud 网络和本地网络设备可以在收到 UDP 片段时进行转发,将经过分段的 UDP 数据包延迟到所有片段到达,或舍弃经过分段的 UDP 数据包。如需了解详情,请参阅其他网络提供商或网络设备文档。

如果您想要经过分段的 UDP 数据包,请执行以下操作:

  • 每个负载平衡的 IP 地址只使用一个 UDP 转发规则,并将转发规则配置为接受所有端口上的流量。这样可以确保所有分段均具有相同的转发规则,即使它们没有相同的目标端口。 如需配置所有端口,请使用 gcloud 命令行工具设置 --ports=ALL,或使用 API 将 allPorts 设置为 True

  • 使用以下任一方法配置后端服务:

    • 停用会话亲和性和连接跟踪。将会话亲和性设置为 NONE。负载均衡器使用 5 元组哈希为未分段的数据包(包含端口信息)选择后端,使用 3 元组哈希为分段的数据包(缺少端口信息)选择后端。在此设置中,来自同一客户端的分段和未分段的 UDP 数据包可能会被转发到不同后端。
    • 启用 2 元组或 3 元组会话亲和性和连接跟踪。将会话亲和性设置为 CLIENT_IPCLIENT_IP_PROTO,并将连接跟踪模式设置为 PER_SESSION。在此设置中,来自同一客户端的分段和未分段的 UDP 数据包会被转发到同一后端(不使用任何端口信息)。

将目标实例用作后端

如果您使用目标实例作为网络负载平衡器的后端,并且预期会对 UDP 数据包进行分段,则应为每个负载平衡的 IP 地址仅使用一条 UDP 转发规则,然后配置转发规则以接受所有端口上的流量。这样可以确保所有分段均具有相同的转发规则,即使它们没有相同的目标端口。 如需配置所有端口,请使用 gcloud 设置 --ports=ALL,或使用 API 将 allPorts 设置为 True

故障转移

您可以配置网络负载平衡器以在主要后端实例组中的虚拟机 (VM) 实例之间分配连接,然后根据需要切换到使用故障转移后端实例组。故障转移提供了另一种提高可用性的方法,同时还可让您在主要后端虚拟机运行状况不佳时更好地控制管理工作负载的方式。

默认情况下,当您向网络负载平衡器的后端服务添加后端时,该后端是主要后端。您可以在将某个后端添加到负载平衡器的后端服务时将其指定为故障转移后端,或者在以后通过修改后端服务将该后端指定为故障转移后端。

如需详细了解故障切换的工作原理,请参阅网络负载平衡的故障切换概览

限制

  • 不支持将网络端点组 (NEG) 用作网络负载平衡器的后端。
  • Google Kubernetes Engine 不支持基于后端服务的网络负载平衡器。
  • 您无法使用 Google Cloud Console 执行以下任务:

    • 创建或修改其转发规则使用 L3_DEFAULT 协议的网络负载均衡器。
    • 创建或修改其后端服务协议设置为 UNSPECIFIED 的网络负载均衡器。
    • 为后端服务配置连接跟踪政策。

    请改为使用 gcloud 命令行工具或 REST API。

  • 网络负载平衡器不支持 VPC 网络对等互连。

后续步骤