将 apache Mod_proxy_loadbalancer 与 JBoss 结合使用

将 apache Mod_proxy_loadbalancer 与 JBoss 结合使用

我们正在使用带有 4 个后端 JBoss 的 Apache mod_proxy_loadbalancer,以下是后端服务器的配置:

<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”,以下是平衡器管理器的状态:

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 时负载平衡器不起作用?我们如何确保每个服务器都有相同的请求?

顺便说一句:请将 x 替换为 192.168.1,因为 serverfault 不允许添加多个链接。谢谢,

答案1

如果您根据请求进行负载平衡,但根据 sessionid 进行持久化,那么您实际上不会看到均匀分布的负载平衡器统计信息。每个用户会话包含可变数量的请求(一些用户可能只浏览了网站上的 3 或 4 个页面,一些用户可能浏览了 15 个页面,一些用户个人资料的数据比其他用户多,等等)。

话虽如此,看看你的 lb stats 输出(并假设 node12 的值是相反的),你的请求考虑到持久性是活跃的,看起来相当平衡。

相关内容