2009-12-09 59 views
0

如果在負載均衡器和weblogic集羣之間配置了兩個Web服務器,兩個Apache服務器會維護會話粘性嗎?Weblogic Apache插件和會話粘性

舉例來說,負載平衡器將第一個請求轉發給第一個apache,然後第一個apache轉發給第一個WL管理的實例。即使來自同一用戶的第二個請求由負載均衡器轉發到第二個apache,第二個apache是​​否也能夠將其轉發給提供第一個請求的第一個WLManaged實例,而不是第二個未知曉的WLManaged實例會話信息。

理想情況下應該是weblogic apache插件的行爲?問題是我不想在wl服務器集羣上啓用會話複製。

回答

7

根據Apache HTTP服務器插件的部分「Failover, Cookies, and HTTP Sessions」:當請求包含存儲在cookie中或在POST數據,或編碼在URL會話信息

,會話ID包含對最初建立會話的特定服務器實例(稱爲主服務器)的引用,以及對複製原始會話的其他服務器(稱爲輔助服務器)的引用。包含cookie的請求會嘗試連接到主服務器。如果該嘗試失敗,請求將被路由到輔助服務器。如果主服務器和輔助服務器均失敗,則會話將丟失,並且插件會嘗試與動態羣集列表中的另一臺服務器建立新連接。請參閱Figure 3-1 Connection Failover

說明:如果POST數據大於64K,插件將不會解析POST數據來獲取會話ID。因此,如果將會話ID存儲在POST數據中,插件無法將請求路由到正確的主服務器或輔助服務器,從而導致會話數據可能丟失。

圖3-1連接故障轉移

alt text http://download.oracle.com/docs/cd/E13222_01/wls/docs100/plugins/wwimages/failover.gif

換句話說,,兩者的Apache服務器將能夠進入的請求轉發到 「右」 WebLogic實例如會話ID包含所有必需的信息。請注意,沒有真正需要通過測試來確認這一點,但它很容易。

UPDATE:從OP

我認爲這個文件只有一個Apache服務器站好回答以下評論。在我的情況下,我有兩個,負載均衡器以50:50的方式將請求轉發到兩個服務器。我測試了這個,並且weblogic插件沒有保持粘性。

我知道你在使用兩個apache fontend,我不確定這個文件是否適用於只有一個apache服務器的配置。正如所解釋的,會話ID包含主服務器(以及輔助服務器)的引用,所以兩個Apache都應該能夠處理它。至少,這是我的理解。實際上,過去我一直使用類似的配置,但不記得事情是否按照我認爲應該的方式工作,或者負載平衡器是否配置爲處理粘性(即轉發給定的Apache服務器)。我現在有點懷疑...

可以發佈你的插件配置(兩個Apache服務器,如果他們不同)?如果只有一臺apache服務器啓動,你還可以證實事情正如預期的那樣工作(如果兩臺服務器的配置有所不同,那麼這兩臺服務器都會測試這個),但這應該不是這樣嗎?

1

當前面有2個Apache負載均衡器的Apache實例時,狀態流圖不再適用,因爲Apache實例不共享其狀態。 我猜WebLogic插件維護一個有方向映射的狀態[IPAddress + Port - > JVMID]。如果它收到一個帶有JVMID的cookie,它還不知道(例如,它從來沒有向這個服務器發送過請求),但它無法知道它引用了哪個IP地址+端口,所以它將無法重用這些JVMID,並且它將重新分配新的主/次,這對於2個實例(可能交換)將是相同的,並且如果嚴格超過2個實例,則可能會不同。 我沒有通過運行特定的測試來確認它,但在紙上它似乎不適用於所有情況。

0

上圖對連接到相同WL羣集的2個Apache服務器適用。 cookie會話信息包含關於要連接的WLS的詳細信息,插件會尊重它。如果主服務器(它最初連接到的服務器)WL服務器不可用,則該請求將被髮送到輔助服務器(基於在選擇「Preferred Replication Group」時定義的規則在第一請求時指定)。 。此輔助服務器保持與主WLS服務器相同的會話狀態,並且應該能夠處理該請求。

如果沒有設置會話複製(我認爲這是默認關閉),那麼將不會有會話被複制到另一臺服務器,並且如果原始/主WL服務器關閉,您將失去會話。

0

答案是否定的。由於您有2個Apache Web服務器,您需要在硬件和軟件負載平衡器級別實現粘性,以實現您的要求。

意味着您已經在Apache級別的Weblogic插件中實現了粘性會話,但您還需要在硬件負載平衡器級別實現基於源IP的粘性。這將允許您的硬件負載平衡器將來自同一用戶的後續請求發送到同一個apace Web服務器。

1

答案是肯定的。我們在我們的博客http://blog.c2b2.co.uk/2012/10/basic-clustering-with-weblogic-12c-and.html上撰寫了這篇文章,其中提供了有關在羣集中設置Web會話故障轉移的分步說明。

本質上,jsessionid cookie編碼主要和輔助weblogic服務器。 Mod-wl解析cookie並將請求路由到主服務器。在你的情況下,託管服務器1.如果它關閉,它會自動將請求路由到備份服務器託管服務器2.