2010-05-27 80 views
2

我對使用BackupManager的tomcat 6中的羣集(會話複製/故障轉移)有疑問。我選擇BackupManager的原因是因爲它僅將會話複製到另一臺服務器。tomcat 6 - Cluster/BackupManager

我將通過下面的示例來嘗試解釋我的問題。

  • 我有6個節點設置在一個Tomcat 6羣集與BackupManager。前端是一個使用mod_jk的Apache服務器,啓用了粘滯會話
  • 每個節點都有一個會話。 node1有一個來自客戶端1的會話 node2有一個來自客戶端的會話2 .. ..
  • 現在讓我們說節點1關閉;假設節點2是備份節點,則節點2現在具有兩個會話(對於客戶端2和客戶端1)
  • 客戶端1下次發出請求時,究竟發生了什麼? Apache是​​否「知道」node1已關閉,並且它是否直接將請求發送給node2?

    = OR =

    它嘗試每個6個實例,並找出誰在備份硬盤的方式?

回答

3

不太清楚與BackupManager運作,我的這個好URL解讀表明複製是在確定備份足夠的智能。

在內存中的會話複製,是集羣內所有 Tomcat實例複製 會話數據, 的Tomcat提供兩種解決方案, 複製整個集羣或複製中的所有實例 到 只是它的備份服務器,此解決方案 提供有保證的會話數據 複製...

SimpleTcpCluster使用Apache部落來維護與通信組的通信。組成員資格由Apache Tribes建立和維護,它處理服務器崩潰和恢復。阿帕奇部落還提供了幾個級別的組員之間的保證消息傳遞。這是實現更新在會話內存,以反映任何會話數據的變化,複製成員之間立即進行...

您可以通過 使用BackupManager減少數據量(僅發送到 一個節點時,備份節點)

如果設置了notifyListenersOnReplication="true",您將能夠從日誌中看到這一點。

另一方面,您仍然可以使用DeltaManager並將您的羣集分爲兩個服務器的3個域。

說這些將是節點1 < - >節點2,3 < - >圖4和5 < - > 6.

在這種情況下 - 配置所述工人屬性,將確保會話複製只會在域內發生。

然後,mod_jk明確知道當node1發生故障時要查看哪個服務器。

http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html狀態

目前,你可以使用域 工人屬性(mod_jk的> 1.2.8),以 構建集羣分區具有與 一器DeltaManager更可擴展 集羣解決方案的潛在 (你需要爲此配置域攔截器 )。

而這個鏈接上一個更好的例子:

http://people.apache.org/~mturk/docs/article/ftwai.html

請參見 「域羣集模式」 一節。

+0

Apache將「知道」將其發送給誰的唯一方法是,如果它被寫入cookie(與WebLogic工作方式相同)。通過查看cookie內容應該很容易找出這個問題。一旦我設置好了,我會傳達我的發現。謝謝。 – bubbly 2010-05-28 15:51:14