遇到一應用部署環境如下圖:
兩台HTTP SERVER(以下簡稱IHS)負責轉發數據包,其中F5采用粘性模式,即一個用戶在會話周期內的數據包一定會被轉發到IHS中的一台,
但IHS 到Web Server之間的服務器選擇確是隨機分發的,導致請求會話無法保持,由於部署的為管理類系統,SESSION的保持是必須的。
WebSphere 有兩種解決辦法:
1. 全部WebSphere Server 會話廣播,即某台機器會話更變時通知其他所有Server。
2. 在IHS 中修改配置,在IHS 和Server之間通信也采用粘性會話。
由於目前服務器的數量和用戶量不適合采用 辦法1,廣播模式的成本較高,所有采用 辦法2,具體修改如下:
1. 前提條件:
配置好IHS插件,使得Websphere 管理節點能管理兩台IHS(生成插件->傳播插件),並重啟IHS。
1.1 IHS啟動必須使用root,LINUX中80端口的占用只能有root進程進行,要使得Websphere 管理節點能管理該ROOT進程的IHS,NodeAgent也必須使用root啟動.
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路徑, 再返回 “會話管理” 勾選 “覆蓋會話管理”。