2017-03-15 59 views
0

我的设置是在4个Wildfly 10.1服务器节点前面的apache httpd的2.4服务器。我使用mod_cluster进行负载平衡,大部分时间一切正常。但每天几次,这出现在Apache的错误日志中:阿帕奇mod_cluster禁用连接

[Wed Mar 15 09:15:18.736665 2017] [proxy:error] [pid 18936:tid 1784] AH00940: http: disabled connection for (10.10.87.53) 
[Wed Mar 15 09:15:59.955515 2017] [proxy:error] [pid 18936:tid 1784] AH00940: http: disabled connection for (10.10.87.52) 

当这些错误出现时,用户抱怨说他们已从系统注销。这是因为我使用粘性会话,当错误出现,每个人都似乎被移动从一个节点到另一个,这意味着他们的会话都将丢失。

然而,尽管这些错误日志中,节点仍处于活动状态和工作时,我后来测试他们一分钟。因此,无论发生什么断开,它只是暂时发生。

这里是我的Apache配置mod_cluster:

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
LoadModule proxy_ajp_module modules/mod_proxy_http.so 
LoadModule cluster_slotmem_module modules/mod_cluster_slotmem.so 
LoadModule manager_module modules/mod_manager.so 
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so 
LoadModule advertise_module modules/mod_advertise.so 

<IfModule manager_module> 
    Listen 10.10.87.50:16666 
    ManagerBalancerName nmcluster 

    <VirtualHost 10.10.87.50:16666> 

     <Location /> 
      Require ip 10.10.87 
     </Location> 

     KeepAliveTimeout 300 
     MaxKeepAliveRequests 0 
     AdvertiseFrequency 5 
     AllowDisplay On 
     AdvertiseGroup 224.0.1.105:23364 
     EnableMCPMReceive 

     <Location /mod_cluster_manager> 
      SetHandler mod_cluster-manager 
      Require ip 10.10.87 
     </Location> 

    </VirtualHost> 
</IfModule> 

这里是在Wildfly的配置:

<subsystem xmlns="urn:jboss:domain:modcluster:2.0"> 
    <mod-cluster-config advertise-socket="modcluster" proxies="proxy" balancer="nmcluster" connector="default"> 
     <dynamic-load-provider> 
      <load-metric type="cpu"/> 
     </dynamic-load-provider> 
    </mod-cluster-config> 
</subsystem> 
... 
<http-listener name="default" socket-binding="http" redirect-socket="https" proxy-address-forwarding="true" enable-http2="true"/> 
... 
<socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/> 

我怎样才能使粘性会话比较粘?或者更好,我怎样才能阻止错误发生?

我仍然希望用户移动到另一个节点,如果一个节点关闭,但我不希望它发生只是因为一个节点有点慢几秒钟,因为然后它最终会做更多的伤害比好。

我也弄不明白为什么这些断开发生。任何理论将不胜感激。

回答

1

看来,当有人上传大文件需要10秒以上为Apache服务器和Wildfly服务器之间处理,上面的“禁用的连接”的错误发生,每个人都失去了他们的会话,并注销。

的解决方案是平设定为东西比在Wildfly10秒更高。例如ping="60",就像这样:

<subsystem xmlns="urn:jboss:domain:modcluster:2.0"> 
    <mod-cluster-config advertise-socket="modcluster" proxies="proxy" balancer="nmcluster" connector="default" ping="60"> 
     <dynamic-load-provider> 
      <load-metric type="cpu"/> 
     </dynamic-load-provider> 
    </mod-cluster-config> 
</subsystem> 

此外,Wildfly已重新启动与变化之后,它重新启动Apache也很重要。如果你不重启Apache,mod_cluster-manager会告诉你新的设置,但是Apache不会使用它。