gpt4 book ai didi

load-balancing - 具有负载平衡的 session cookie(非粘性 session )

转载 作者:行者123 更新时间:2023-12-04 08:26:07 25 4
gpt4 key购买 nike

我已经扫描了 RFC 6265,但没有找到以下问题的答案。

我想在单个 web 应用程序的多个服务器前面放置一个简单的循环负载平衡器。负载平衡器不提供粘性 session 。因此,客户端通常会根据连续请求从一个应用程序服务器跳到另一个应用程序服务器。

在第一次连接时,客户端没有 SID 并随机路由到服务器 A。
服务器 A 以 session cookie 响应,即随机数。

在下一次连接中,客户端在 HTTP header 中包含来自服务器 A 的 SID。
这次客户端被随机路由到服务器 B。
服务器 B 看到(希望!)与它发布的任何 SID 都不匹配的 SID。
发生什么了?服务器 B 是否只是忽略“坏”SID,或者提示,或者忽略请求,或者什么?

这个想法是,我根本不想使用 session cookie。我想避免粘性的所有复杂性。但我也知道我的服务器可能会生成——而且更重要的是寻找——无论如何都 session cookie。

如何确保服务器只是忽略(或更好但未设置) session cookie?

最佳答案

我认为这个问题的答案会因服务器上运行的应用程序而有很大差异。虽然任何称职的负载均衡器都有粘性 session ,但只要池中的所有服务器都可以通过集中式数据库访问相同的 session 状态,就可以在没有它们的情况下进行操作。

由于您在谈论 session ID,我猜测应用程序确实依赖 session 状态才能运行。在这种情况下,如果请求带有“错误”的 session ID,它很可能会被丢弃并提示用户登录——同样,确切的行为取决于应用程序。如果您要完全禁用 session cookie,问题可能会变得更糟,因为即使没有 ID 也可能会导致登录提示。

如果你真的想避免负载平衡器的复杂性,你需要引入一些机制,所有服务器都可以通过这种机制处理来自所有 session 的请求。通常,这采用集中式数据库或一些其他共享存储的形式。这允许保持 session 状态,而不管服务器处理该特定请求。

保持 session 状态是负载平衡的症结之一(双关语),但简单地忽略或避免 session cookie 不是解决方案。

关于load-balancing - 具有负载平衡的 session cookie(非粘性 session ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com