我有一个使用“粘性会话”的应用程序,由负载均衡器控制。作为会话的所有者,我希望能够共享链接以使其他用户/设备能够协作到同一会话。 有人建议我使用像 redis 这样的东西来在所有目标之间共享信息。然后,即使协作者会话被路由到不同的目标,应用程序仍然可以正常工作。在我看来,这违背了负载均衡器的目的,因为现在我们有另一个瓶颈,即 Pod 之间的通信。
理想情况下,我希望合作者能够坚持与所有者相同的目标。
这就是我想象的这个过程
所有者创建一个带有会话标识符的
link
GET ${link}
如果我只是在其他请求中复制自动生成的cookie,即使来自不同的设备,是否也能保证到达相同的目标(在过期时间内)?
UUID
Set-Cookie: LOAD_BALANCER_COOKIE=; Max-Age=0
无论如何回答你的关键问题:
1/ 和 2/:负载均衡器将使用 cookie 的内容路由到正确的目标,因此,是的,如果您与其他设备共享其值,请求将落在同一服务实例上。
3/:负载均衡器是无状态的,它不管理内存中的状态,而是将状态保存在 cookie 中。也许可以清除服务输出中的 cookie,技巧是负载均衡器在没有 cookie 的情况下管理新 cookie 的创建。