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

楼主有个生产环境,有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却没有。

     

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

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

有没有什么办法可以使皿3个server都有Affinity效果。

参与8

3同行回答

abelabel软件架构设计师IBM
http://www-01.ibm.com/support/docview.wss?uid=swg27020055&aid=1仔细看看上面的文档cookie名字在一个集群里面应该一样,你为什么要改成不同的?显示全部

http://www-01.ibm.com/support/docview.wss?uid=swg27020055&aid=1

仔细看看上面的文档

cookie名字在一个集群里面应该一样,你为什么要改成不同的?

收起
软件开发 · 2016-03-24
浏览2920
jdctjdct系统运维工程师西安交大长天软件股份有限公司
两个节点,ihs在主节点上,现在问题是http://IP/snoop可以访问,但是ip/struts/不能访问,报404错,纠结我3天了,求大神给解觉一哈显示全部

两个节点,ihs在主节点上,现在问题是http://IP/snoop可以访问,但是ip/struts/不能访问,报404错,纠结我3天了,求大神给解觉一哈

收起
系统集成 · 2016-04-22
浏览2478
xmherzxmherz测试工程师中软海晟
原来是我们应用之间如果cookie名设成一样的会存在冲突的情况,后面于是就把所有的cookie名都设成不一样的了。早上把一个集群的cookie名都改成一样的之后,试了几把,确实解决了我的问题了,负载比较均衡了,也不会登录失败了。感谢您的回复。...显示全部

原来是我们应用之间如果cookie名设成一样的会存在冲突的情况,后面于是就把所有的cookie名都设成不一样的了。早上把一个集群的cookie名都改成一样的之后,试了几把,确实解决了我的问题了,负载比较均衡了,也不会登录失败了。感谢您的回复。

收起
软件开发 · 2016-03-25
浏览2652

提问者

xmherz
测试工程师中软海晟

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2016-03-24
  • 关注会员:3 人
  • 问题浏览:7157
  • 最近回答:2016-04-22
  • X社区推广