是否可以將 mod_jk 黏性會話資訊複製到另一個 apache 以進行故障轉移設定?
這個問題背後的想法是在一些 tomcat 前面設定兩個具有黏性會話的 apache。當一個 apache 發生故障時,另一個 apache 應該接管 mod_jk 會話訊息,以便他知道哪些請求要服務哪個 tomcat。
我知道另一種選擇是在 tomcat 層級進行會話複製,而不是使用黏性會話,但目前這是不可能的。
答案1
如果您的後端伺服器(tomcat)是叢集的,它們也應該複製會話。如果發生 http 故障,與 1 個 http 節點的連接應轉到另一個節點。 jsessionid 參數應該為 http / mod_jk 提供足夠的信息,以了解要路由到哪個節點(例如 jsessionid=lkj234lkj2ljk234lj.jvmRoute1 將告訴 mod_jk 該會話是由名稱為 jvmRoute1 的工作程序完成的)。如果指定的工作程序不可用,mod_jk 應路由到下一個工作程序,該工作程序應從快取中檢索會話。
即httpd 伺服器之間不需要複製,因為包含jsessionid 的客戶端cookie 或URL 包含路由資訊。
答案2
不需要在 apache 節點之間複製任何內容,因為 mod_jk 的會話持久性是無狀態的。
您需要在 Tomcat 的 server.xml 中設定 jvmRoute,並且它必須與 mod_jk 中的平衡器使用的 jk 工作人員的名稱相符。