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.