2012-11-22 48 views
1

我有一個帶有Spring Security的Web應用程序,它位於循環負載均衡器後面,所以無論何時負載均衡器從服務器A跳到服務器B,會話都會丟失。是否有可能留在循環負載均衡器後面的同一臺服務器上?

我們不想使用Remember-Me cookies,也許是偏執狂,但數據太明智。

我們也不能配置負載平衡器有粘性會話,(這是另一個部門,並要求他們配置負載平衡器做,這是我們的最後一個選項)

是否有可能配置個XML的春天,永遠不會離開服務器的用戶最初落在?

因此,用戶在服務器A中做出的所有請願總是由服務器A提供服務?

+1

這不是粘滯會話的意思嗎?春天在這裏什麼都不能做。 –

回答

0

你可以有不同的URL的每個服務器:

  • 服務器答: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
+0

這就是我們的想法,但當它變得複雜(或非常簡單而愚蠢)時,那些服務器A和B在另一個網絡中,只有負載平衡器才能訪問,所以我猜測沒有辦法服務器A可以將我們重定向到服務器B? – jsedano

+0

那麼他們可以做http重定向(HTTP 302)。這將在您的應用程序代碼或者apache配置中完成。棘手的部分是讓一臺服務器接管另一臺服務器。 – Solubris

+0

但是......爲了使旁路工作,服務器A和B應該在其網絡外部可見? – jsedano

相關問題