1

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

后端配置为 cookie 会话亲和性。

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

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

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

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

谢谢

4

1 回答 1

2

文档说会话亲和力丢失的三个原因:

  • 实例组容量不足,必须将流量路由到其他区域。在这种情况下,来自现有会话的流量可能会被发送到新区域,从而破坏亲和力。您可以通过确保您的实例组有足够的容量来处理所有本地用户来缓解这种情况。
  • 自动缩放将实例添加到实例组或从中删除实例。在任何一种情况下,后端服务都会重新分配负载,并且目标可能会移动。您可以通过确保由自动缩放提供的最小实例数足以处理预期负载,然后仅使用自动缩放来应对意外增加的负载,从而缓解这种情况。
  • 目标实例未通过运行状况检查。当会话移动到健康的实例时,关联性会丢失。

如果 IG 中的实例数量没有变化,并且所有实例始终保持健康,那么这就消除了第二个和第三个要点。

您是否使用区域托管实例组?如果是这样,第一个要点似乎是原因。

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

于 2018-03-23T11:36:43.297 回答