2017-03-15 89 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不會使用它。