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