WAS集群请求分发和负载均衡问题

立信最重要 2016-03-24 01:31:09
楼主有个生产环境,有3台服务器,以下简称为A/B/C,上面建了A/B/C三个node节点,IHS和DM也部署在A上,只有1个IHS,简单的1拖3架构。

建了1个水平集群,3个SERVER分布在3个node上。SERVER配置只改动了JVM大小、webcontainer大小、JVM日志、cookie名(每个server不一样),其他均未改动。

IHS只改动了maxclients,其他未改动。

IHS PLUGIN 均为默认配置,未改动。

楼主碰到的问题:

有个应用,登录的时候会把一些信息存储到SESSION中,紧接着的后一个请求再取出来用。但是生产环境出现了下一个请求有时候会取不到上一个请求保存的SESSION的情况,概率较小。

进一步测试,如果把a server关掉,只留b/c server,取不到SESSION的情况概率大大增加,可以达到50%。

而如果a server是开着的,貌似请求大部分都发给了a server处理。

把IHS PLUGIN的日志调整为DEBUG级别,跟踪后发现了以下规律:

1)如果上一个请求是b/c server响应的,下一个请求却发给了a,于是就出现了取不到SESSION的情况。

PLUGIN-IN日志记录:DEBUG: ws_server_group: NewserverGroupNextRoundRobinServer: Round Robin load balancing ;(采用RR)

2)如果上一个请求是a server响应的,下一个请求基本上都还是交给a处理。

PLUGIN-IN日志记录:DEBUG: ws_common: websphereParseCloneID: Parsing clone ids from 0000HYWoVdhHX4hteSmeTGkOCCz:1a854qhjl;(session Affinity)

3)PLUGIN里面记录的统计信息如下,可以看到只有a1有affinityRequest,并且a1响应了绝大部分请求。

STATS: ws_server: serverSetFailoverStatus: Server Node134_cluster2_server_a1 : pendingRequests 0 failedRequests 0 affinityRequests 997 totalRequests 1026.

STATS: ws_server: serverSetFailoverStatus: Server hrac1Node01_cluster2_server_b1 : pendingRequests 0 failedRequests 0 affinityRequests 0 totalRequests 5.

STATS: ws_server: serverSetFailoverStatus: Server hrac2Node01_cluster2_server_c1 : pendingRequests 0 failedRequests 0 affinityRequests 0 totalRequests 35.

从以上测试结果来看,a server有session affinity效果,只要一开起来,会把压力都集中到这台上面。

b/c server没有session affinity效果,请求分发采用随机轮询,就可能会出现下一个请求取不到上个请求保存的SESSION的问题。

查看plugin-cfg.xml ,看到它配置了AffinityCookie="cluster2_a1",不过并没有其它两个session:cluster2_b1/cluster2_c1的配置。

也就是说,只有cluster2_a1朿 session Affinity,而其它cluster2_b1/cluster2_c1却没有。

<UriGroup Name="default_host_cluster2_URIs">

<Uri AffinityCookie="cluster2_a1" AffinityURLIdentifier="jsessionid" Name="/cm/*"/>

</UriGroup>

如果我把cluster2_b1/cluster2_c1两个cookie也都添加到上面的affinityCookie配置里面,仍然只有cluster_a1有affinity 效果。

总结问题:WAS 为什么只给a1 赋予了AffinityCookie,而其它两个没有?这样子不是会负载失衡吗?

有没有什么办法可以使皿3个server都有Affinity效果。
...全文
4168 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜半无声 2018-01-24
  • 打赏
  • 举报
回复
创建新集群的时候注意勾选 ”配置HTTP会话内存到内存复制”,这样就能使session在集群内共享;

2,633

社区成员

发帖
与我相关
我的任务
社区描述
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。
社区管理员
  • WebSphere社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧