Networking google云HTTPS负载平衡器会话关联

Networking google云HTTPS负载平衡器会话关联,networking,google-cloud-platform,google-compute-engine,load-balancing,google-cloud-networking,Networking,Google Cloud Platform,Google Compute Engine,Load Balancing,Google Cloud Networking,我有一个配置了一个后端服务和两个实例组的HTTPS负载平衡器: 后端配置为cookie会话关联 我的事务由POST请求和6个重定向组成,这需要会话关联。在大多数情况下,这是可以预期的,但在大约10%-15%的情况下,在重定向序列期间,亲和性停止工作,这会导致我们这边的应用程序错误 我正在我们的Apache反向代理上打印GCLB cookie值,可以看到它在请求之间没有变化,但请求仍然被重定向到组中的不同实例或来自不同的组(请注意,当只有一个组的后端有多个实例时,同样的行为也会发生。) 运行状况检

我有一个配置了一个后端服务和两个实例组的HTTPS负载平衡器:

后端配置为cookie会话关联

我的事务由POST请求和6个重定向组成,这需要会话关联。在大多数情况下,这是可以预期的,但在大约10%-15%的情况下,在重定向序列期间,亲和性停止工作,这会导致我们这边的应用程序错误

我正在我们的Apache反向代理上打印GCLB cookie值,可以看到它在请求之间没有变化,但请求仍然被重定向到组中的不同实例或来自不同的组(请注意,当只有一个组的后端有多个实例时,同样的行为也会发生。)

运行状况检查全部通过,并且在运行期间没有发生自动缩放(每个组1个实例)

什么会导致LB更改后端实例,尽管GCLB cookie没有什么不同

谢谢

专家说,会话亲和力丧失有三个原因:

  • 实例组的容量不足,必须将流量路由到其他区域。在这种情况下,来自现有会话的流量可能会被发送到新区域,从而破坏关联性。您可以通过确保实例组有足够的容量来处理所有本地用户来缓解这一问题
  • 自动缩放将实例添加到实例组或从中删除实例。无论哪种情况,后端服务都会重新分配负载,目标可能会移动。您可以通过确保自动缩放设置的最小实例数足以处理预期的负载,然后仅对负载意外增加使用自动缩放来缓解这一问题
  • 目标实例的运行状况检查失败。当会话移动到正常实例时,关联性丢失
如果IG中的实例数量没有变化,并且所有实例在整个时间内都保持健康,那么这就消除了第二个和第三个要点

你在用电话吗?如果是这样,第一个要点似乎就是原因


您可能在会话cookie处理中遇到了某种bug;为了消除这种可能性,您是否尝试过其他关联设置以查看问题是否消失?

是的,我正在使用区域托管实例组,并已使用多个配置进行了测试,并且每当组中有多个实例时,它偶尔会丢失关联。我尝试过使用客户端IP关联,它的行为类似,还尝试了将组设置为min=3和max=3,以便在每个区域使用1个节点进行测试,但结果总是相同的。我不能排除健康检查的可能性,但它们在我的代理日志中都返回200,并且在GCP中没有可以验证这一点的日志。还有其他建议吗?现在,您无法从云控制台中查看实例运行状况历史记录。如果你打开一张支持票,我们可以看到并让你知道。DIY方法是仔细观察您的后端服务,可能在几天内每隔几秒钟编写一次脚本,将
不健康的
输出变灰,并让您知道,可能添加时间戳。在这一点上,您可以将其与亲和力的任何损失关联起来。好的,因此我在测试期间运行了get health(每2秒一次),并且所有实例都保持健康。然后我决定再次尝试客户端IP关联,它实际上工作正常,所有请求都发送到同一个实例。一旦我使用cookie关联,它就会返回到切换节点,因此肯定与cookie关联逻辑有关。我会开一张支持票,试着弄清这件事的真相。@imeib太好了!如果我的回答对你有帮助,请投票并接受它。干杯