大多数负载均衡器使用循环。
在 GCP HTTP(S) 中,LB 有两种确定实例负载的方法。在后端服务资源中,平衡模式属性在每秒请求数 (RPS) 和 CPU 利用率模式之间进行选择。
您可以通过配置会话亲和性来覆盖循环分发。但是,请注意,如果您还将平衡模式设置为每秒请求数 (RPS),则会话亲和性效果最佳。
只要实例保持健康并具有容量,会话关联就会将来自同一客户端的所有请求发送到同一虚拟机实例。
=================
现在,GCP HTTP(S) LB 提供了两种类型的会话亲和性:
a) 客户端 IP 亲和性——将来自同一客户端 IP 地址的所有请求转发到同一实例。
客户端 IP 亲和性根据客户端 IP 地址的哈希将来自同一客户端 IP 地址的请求定向到同一后端实例。客户端 IP 关联性是每个使用后端服务的 GCP 负载平衡器的选项。
但是,在使用客户端 IP 亲和性时,请记住以下几点:
如果负载均衡器看到的客户端 IP 地址位于 NAT 之后或通过代理发出请求,则它可能不是原始客户端。通过 NAT 或代理发出的请求使用 NAT 路由器或代理的 IP 地址作为客户端 IP 地址。这可能会导致传入流量不必要地聚集到相同的后端实例上。
如果客户端从一个网络移动到另一个网络,则其 IP 地址会更改,从而导致关联性中断。
b) 生成的 cookie 亲和性——设置一个客户端 cookie,然后将所有带有该 cookie 的请求发送到同一个实例。
设置生成的 cookie 亲和性后,负载均衡器会在第一个请求上发出一个名为 GCLB 的 cookie,然后将具有相同 cookie 的每个后续请求定向到同一实例。基于 Cookie 的亲和性允许负载均衡器区分使用相同 IP 地址的不同客户端,以便将这些客户端更均匀地分布在实例中。基于 Cookie 的亲和性允许负载均衡器保持实例亲和性,即使客户端的 IP 地址发生更改。
cookie 的路径始终为 /,因此如果同一主机名上有两个后端服务启用基于 cookie 的亲和性,则这两个服务由同一个 cookie 平衡。
============================
主要来源:
负载分配算法
每秒请求数