1

我有一个带有 Spring Security 的 Web 应用程序,它位于循环负载均衡器后面,所以每当负载均衡器从服务器 A 跳转到服务器 B 时,会话就会丢失。

我们不想使用 Remember-Me cookie,也许是偏执狂,但数据太明智了。

而且我们不能将负载均衡器配置为具有粘性会话,(那是另一个部门,要求他们配置负载均衡器来做到这一点是我们的最后一个选择)

是否可以配置 Spring 的 xml,永远不会离开用户最初所在的服务器?

所以用户在服务器 A 中提出的所有请求总是由服务器 A 服务?

4

1 回答 1

0

您可以为每个服务器设置不同的 URL:

  • 服务器 A: www1.myapp.com
  • 服务器 B:www2.myapp.com

然后,当用户访问应用程序时,他们会重定向到上述 URL 之一。这样,它们将固定在该服务器上以供将来请求。

但是,这意味着如果一台服务器出现故障,那么用户将不会被定向到另一台服务器,因此它不会是多余的。如果另一台服务器出现故障,您可以通过让仍在运行的服务器接管另一个 URL 来解决此问题。

这是流程:

  • 用户点击 www.myapp.com
  • 负载均衡器向服务器 A 发送流量
  • 服务器 A 注意到 URL=www.myapp.com,因此它重定向到 www1.myapp.com
  • 用户点击 www1.myapp.com
  • 流量到达服务器 A(绕过负载均衡器)

如果您不想将服务器暴露给 wWW,那么您可以在 LB 上设置额外的池,如下所示:

  • www.myapp.com : 服务器 A,服务器 B
  • www1.myapp.com : 服务器 A
  • www2.myapp.com : 服务器 B
于 2012-11-22T19:06:01.230 回答