遇到一应用部署环境以下图:服务器
两台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路径, 再返回 “会话管理” 勾选 “覆盖会话管理”。