遇到一應用部署環境以下圖:服務器
兩臺HTTP SERVER(如下簡稱IHS)負責轉發數據包,其中F5採用粘性模式,即一個用戶在會話週期內的數據包必定會被轉發到IHS中的一臺,spa
但IHS 到Web Server之間的服務器選擇確是隨機分發的,致使請求會話沒法保持,因爲部署的爲管理類系統,SESSION的保持是必須的。插件
WebSphere 有兩種解決辦法:3d
1. 所有WebSphere Server 會話廣播,即某臺機器會話更變時通知其餘全部Server。server
2. 在IHS 中修改配置,在IHS 和Server之間通訊也採用粘性會話。xml
因爲目前服務器的數量和用戶量不適合採用 辦法1,廣播模式的成本較高,全部採用 辦法2,具體修改以下:blog
1. 前提條件:進程
配置好IHS插件,使得Websphere 管理節點能管理兩臺IHS(生成插件->傳播插件),並重啓IHS。部署
1.1 IHS啓動必須使用root,LINUX中80端口的佔用只能有root進程進行,要使得Websphere 管理節點能管理該ROOT進程的IHS,NodeAgent也必須使用root啓動.it
1.2 在管理節點中 vi %WebSphere_Home%/profiles/Dmgr1/config/cells/plugin-cfg.xml
修改ServerCluster的屬性 IgnoreAffinityRequests="false", 使得IHS請求分發時會綁定機器。
該原理的實現是依賴於生成名爲JESSIIONID的COOKIE,值相似於 00002eIFFjM-ql2ZityHVfjJmO5:187rufomo
其中分號後面的數值就能表明具體是哪一個Server(即哪一個JVM進程),
1.3 分別進入兩臺IHS服務器, vi %IHS_HOME%/Plugins/config/server名稱/plugin-cfg.xml
一樣修改ServerCluster的屬性 IgnoreAffinityRequests="false"
1.4 進入WebSphere管理控制檯 ,點擊 環境->更新全局Web服務器插件配置->肯定。
1.5 重啓 IHS 服務,重複刷新,認證是否是請求都被轉發到一臺服務器。
說明: 在 「生成插件」這步驟中,IgnoreAffinityRequests又會被重置爲true, 須要再次更改。
1.6 若是想更改會話使用的COOKIE名稱,在WebSphere管理控制檯中,進入 企業應用程序->點擊待更改COOKIE名稱的應用->會話管理->啓用COOKIE,
更改COOKIE名便可,根據須要更改COOKIE域和COOKIE路徑, 再返回 「會話管理」 勾選 「覆蓋會話管理」。