2017-03-15 3 views
0

Mein Setup ist ein Apache Httpd 2.4 Server vor 4 Wildfly 10.1 Server Knoten. Ich benutze mod_cluster für Load Balancing und alles läuft gut die meiste Zeit. Aber mehrmals täglich, scheint dies in Apache Fehlerprotokoll:Apache mod_cluster deaktiviert Verbindung zu Knoten

[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) 

Wenn diese Fehler auftreten, Nutzer beschweren sich, dass sie aus dem System angemeldet sind. Dies passiert, weil ich eine sticky-Sitzung verwende und wenn die Fehler auftreten, scheinen alle von einem Knoten zum anderen zu wechseln, was bedeutet, dass ihre Sitzungen verloren gehen.

Obwohl diese Fehler im Protokoll sind, sind die Knoten immer noch aktiv und funktionieren, wenn ich sie eine Minute später teste. Also, was für eine Trennung auch immer passiert ist, passiert nur vorübergehend.

Hier ist mein Apache mod_cluster config:

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> 

Und hier ist die config in 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"/> 

Wie kann ich Sticky-Sitzung mehr klebrig machen? Oder noch besser, wie kann ich den Fehler verhindern?

Ich möchte immer noch Benutzer zu einem anderen Knoten verschieben, wenn ein Knoten nicht aktiv ist, aber ich will nicht, dass es passiert, nur weil ein Knoten ein wenig langsam für ein paar Sekunden ist, weil es am Ende mehr Schaden verursacht als gut.

Ich verstehe auch nicht, warum diese Trennungen passieren. Irgendwelche Theorien würden geschätzt.

Antwort

1

Wenn jemand eine große Datei hochlädt, die mehr als 10 Sekunden für den Apache-Server und den Wildfly-Server benötigt, tritt der obige "deaktivierte Verbindungsfehler" auf und alle Benutzer verlieren ihre Sitzung und werden ausgeloggt.

Die Lösung ist, in Wildfly Ping auf etwas höher als 10 Sekunden zu setzen. Zum Beispiel ping="60", wie folgt aus:

<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> 

Weiterhin wird nach Wildfly hat mit der Änderung neu gestartet wurde, ist es sehr wichtig, Apache als auch neu zu starten. Wenn Sie Apache nicht neu starten, wird Ihnen mod_cluster-manager die neue Einstellung mitteilen, Apache wird sie jedoch nicht verwenden.

Verwandte Themen