Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session 我可以从负载平衡器背后的网站上启用和禁用粘性会话吗?_Session_Scalability_Sticky_Load Balancing - Fatal编程技术网

Session 我可以从负载平衡器背后的网站上启用和禁用粘性会话吗?

Session 我可以从负载平衡器背后的网站上启用和禁用粘性会话吗?,session,scalability,sticky,load-balancing,Session,Scalability,Sticky,Load Balancing,我的挑战如下。我希望维护已发布表单的模式,但在重定向之后,我仍然希望在出现无效字段的情况下显示表单的状态。通过将这些信息存储在会话中,可以非常轻松地传递这些信息 但是,这些站点通常在负载平衡器后面的多个Web服务器上运行,负载平衡器配置为不粘性。也没有故意共享会话状态 考虑到可伸缩性,在Web服务器上使用本地会话状态更可取,但要做到这一点,您需要粘性会话。但是,粘性会话对管理服务器的人员来说是一个障碍,因为在从负载平衡器中删除一些服务器以进行发布之后,他们仍然需要等待10到15分钟才能结束所有会

我的挑战如下。我希望维护已发布表单的模式,但在重定向之后,我仍然希望在出现无效字段的情况下显示表单的状态。通过将这些信息存储在会话中,可以非常轻松地传递这些信息

但是,这些站点通常在负载平衡器后面的多个Web服务器上运行,负载平衡器配置为不粘性。也没有故意共享会话状态

考虑到可伸缩性,在Web服务器上使用本地会话状态更可取,但要做到这一点,您需要粘性会话。但是,粘性会话对管理服务器的人员来说是一个障碍,因为在从负载平衡器中删除一些服务器以进行发布之后,他们仍然需要等待10到15分钟才能结束所有会话。没有粘性,它几乎是瞬间的

真正酷的是,如果我们可以在POST或重定向之后,使会话对后续的一个请求保持粘性。甚至可以完全控制何时从代码中启用或禁用粘性

有人知道这种行为是否可能吗?也许通过设置某个cookie?还是一些http头?

一些想法:

  • 中央缓存服务器

    • 将其保存到过期的缓存服务器(首选redis)
    • 重定向到url中带有参数的get操作。使用此参数可以恢复模型
  • url中的状态

    • 如果模型很小,可以将其保存为url中的参数

  • 您没有告诉我们有关正在使用的应用软件或LB硬件的任何信息,因此没有任何答案。应用软件是一个基于ASP.NET MVC的网站,运行在IIS6上。我还不知道使用了哪种负载平衡器,但明天就会知道。我已经想到了——如果可能的话——这可能取决于负载平衡器的型号。但是,也许您已经知道一些负载平衡器具有这些技巧,而其他负载平衡器则没有。或者更好的是,一种通用的方法来实现这一点。负载平衡器是Citrix Netscaler。