我们使用4个后端JBoss的Apache mod_proxy_loadbalancer,这里是后端服务器的configuration:
<Proxy balancer://www> Allow from all BalancerMember x.11:8080/APP route=node11 timeout=600 ttl=7200 BalancerMember x.12:8080/APP route=node12 timeout=600 ttl=7200 BalancerMember x.12:8081/APP route=node122 timeout=600 ttl=7200 BalancerMember x.14:8080/APP route=node14 timeout=600 ttl=7200 ProxySet lbmethod=byrequests stickysession=JSESSIONID|jsessionid nofailover=On </Proxy> ProxyPass /APP balancer://www/ stickysession=JSESSIONID|jsessionid nofailover=On ProxyPassReverse /APP balancer://www/
我们的问题是请求不平衡,其中大部分去“node12”,这里是平衡器pipe理器的状态:
LoadBalancer Status for balancer://www StickySession Timeout FailoverAttempts Method JSESSIONID|jsessionid 0 3 byrequests Worker URL Route RouteRedir Factor Set Status Elected To From x.11:8080/APP node11 1 0 Ok 6500 8.3M 33M x.12:8080/APP node12 1 0 Ok 5690 38M 8.2M x.12:8081/APP node122 1 0 Ok 6886 8.8M 35M x.14:8080/APP node14 1 0 Ok 6272 7.5M 35M
这是否意味着当我们使用StickySessions时,负载平衡器不起作用? 我们如何确保每个服务器都有相同的请求?
顺便说一句:请将xreplace为192.168.1,因为serverfault不允许添加多个链接。 谢谢,
唐
如果您基于请求进行负载平衡,但是基于sessionid持久化,则不会看到均匀分布的负载平衡器统计信息。 每个用户会话包含可变数量的请求(某些用户可能只在网站上运行了3或4个页面,有些可能运行了15个页面,某些用户configuration文件比其他用户configuration文件有更多的数据等)。
这就是说,看你的磅统计输出(并假设node12的值是颠倒),你的请求看起来相当平衡,考虑到持久性是积极的。