Tomcat应用程序服务器中的不均匀负载分布在前端Apache httpd Web服务器中平衡

时间:2015-12-22 14:42:18

标签: apache tomcat

我正在使用6个Apache httpd 2.2.15,它们将请求转发到Tomcat应用程序服务器(版本:7.0.41)。使用mod_proxy,所有应用程序服务器都与代理平衡器平衡。下面是apache httpd.conf的类似配置:

##Proxy Balancers for use by all Virtual Hosts
<Proxy balancer://FrontEnd>
   BalancerMember ajp://APP01.abcd.com:8009 route=APP01 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP02.abcd.com:8009 route=APP02 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP03.abcd.com:8009 route=APP03 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP04.abcd.com:8009 route=APP04 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP05.abcd.com:8009 route=APP05 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP06.abcd.com:8009 route=APP06 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP07.abcd.com:8009 route=APP07 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP08.abcd.com:8009 route=APP08 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP09.abcd.com:8009 route=APP09 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP10.abcd.com:8009 route=APP10 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP11.abcd.com:8009 route=APP11 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP12.abcd.com:8009 route=APP12 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP13.abcd.com:8009 route=APP13 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP14.abcd.com:8009 route=APP14 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP15.abcd.com:8009 route=APP15 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP16.abcd.com:8009 route=APP16 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP21.abcd.com:8009 route=APP21 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP22.abcd.com:8009 route=APP22 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP23.abcd.com:8009 route=APP23 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP24.abcd.com:8009 route=APP24 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp://APP25.abcd.com:8009 route=APP25 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP26.abcd.com:8009 route=APP26 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP27.abcd.com:8009 route=APP27 timeout=120 ttl=600 keepalive=On
   BalancerMember ajp:// APP28.abcd.com:8009 route=APP28 timeout=120 ttl=600 keepalive=On
    ProxySet stickysession=JSESSIONID
</Proxy>

当我从Apache webserver balancer-manager检查应用程序服务器时,我面临着不均衡的负载分配问题。事实上,前13个应用服务器(app01到app13,假设批处理1)的负载几乎相等,剩下的应用服务器(app14到app16和app21到app28,假设批处理2)的负载相等。 batch1 app服务器的负载几乎是batch2 app服务器的3倍。

我还尝试诊断是否有任何网络问题可能导致问题。因此,尝试使用traceroute命令进行诊断,并找到几乎相似的模式,批处理服务器(batch1和batch2)都有30个跃点。

我无法弄清楚,问题是什么?任何人都可以帮助我。 任何帮助,真的很感激。

2 个答案:

答案 0 :(得分:0)

正常重启网络服务器解决了这个问题。更改后重新加载Web服务器(以避免任何停机时间)不会关闭所有连接,并在启动时再次打开它。这会创建一个连词。我相信这可能是应用服务器之间负载均衡不均衡的原因。无论如何谢谢:)

答案 1 :(得分:0)

如果您没有使用bybusyness方法,那么只有在正常重启后负载均匀才有意义。基于中的描述 https://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html,请求或流量基于历史值,因此如果您的应用服务器有一半离线一段时间,那么可能会出现不均衡的情况,然后您将它们提起,那些刚刚出现的服务器可能需要要赶上流量,apache会在那里发送请求。另一方面,bybusyness算法正在查看当前工作人员的忙碌程度,您应该尝试一下,看看是否需要优雅地重新启动。