Apache-proxy-load-balancing-backend-server-Ausfall-Erkennung

Hier ist mein Szenario (von meinem Vorgänger):

Zwei Apache-Server, die reverse-proxy-Pflicht für eine Vielzahl von mixed-backend-Webserver (Apache, IIS, Tomcat, etc.). Es gibt einige Seiten, für die wir mehrere back-End-web-Server, und in den Fällen, dass wir etwas tun wie:

<Proxy balancer://www.example.com>
    BalancerMember http://192.168.1.40:80
    BalancerMember http://192.168.1.41:80
</Proxy>
<VirtualHost *:80>
    ServerName www.example.com:80
    CustomLog /var/log/apache2/www.example.com.log combined
    <Location />
        Order allow,deny
        Allow from all
        ProxyPass balancer://www.example.com/
        ProxyPassReverse balancer://www.example.com/
    </Location>
</VirtualHost>

So, in diesem Beispiel habe ich eine Website (www.example.com) in der proxy-Server-configs, und diese Website umgeleitet auf eine oder die andere der beiden backend-Server 192.168.1.40 und .41.

Ich bin der Bewertung, um sicherzustellen, dass wir sind fehlertolerant auf alle unsere web-services (ich habe bereits die zwei reverse-proxy-Server in eine gemeinsam genutzte IP-Adressen-cluster für diesem Grund), und ich möchte sicherstellen, dass der Lastenausgleich die backend-Server sind fehlertolerant, wie gut. Aber ich habe Schwierigkeiten, herauszufinden, wenn backend-Fehler-Erkennung (und der Logik zu vermeiden, die ausgefallene back-End-server) ist in der mod_proxy_balancer Modul...

Also, wenn 192.168.202.40 nach unten geht, wird der Apache erkennt (ich werde verstehen, wenn es ein Fehler bei der Anforderung den ersten) und automatisch leiten Sie alle Anfragen auf die anderen backend, 192.168.202.41? Oder wird er weiterhin die balance von Anforderungen zwischen den failed backend und die operativen backend?

Habe ich einige Hinweise gefunden, die in der Apache-Dokumentation für mod_proxy und mod_proxy_balancer, die scheinen zu zeigen, dass Fehler erkannt werden können ("maxattempts = Maximale Anzahl von failover versucht, bevor aufgegeben wird.", "failonstatus = Ein Einzel-oder Komma-getrennte Liste von HTTP-status-codes. Wenn gesetzt, wird diese Kraft der Arbeiter in den Fehler-Zustand, wenn das backend gibt alle status-code in der Liste."), aber nach ein paar Tagen der Suche habe ich nichts gefunden schlüssig sagen, für sicher, dass es wird (oder zumindest "sollte") erkennen backend-Fehler und Wiederherstellung.

Will ich sagen, dass die meisten Suchergebnisse verweisen über das AJP-Protokoll übergeben werden, die den Verkehr an die back-End-Servern, und offensichtlich keine Unterstützung der Fehlererkennung-aber mein backends sind eine Mischung aus Apache, IIS, Tomcat und andere, und ich bin mir ziemlich sicher, dass viele von Ihnen nicht unterstützen AJP. Sie sind auch eine Mischung aus Windows 2k3/2k8 und Linux (meist Ubuntu Lucid) Boxen laufen in verschiedenen Anwendungen mit unterschiedlichen Anforderungen, also in der add-on-Module wie Rückhand und LVS sind nicht eine option für mich.

Habe ich auch versucht, empirisch zu testen Sie diese Funktion, indem Sie eine neue test-Seite wie diese:

<Proxy balancer://test.example.com>
    BalancerMember http://192.168.1.40:80
    BalancerMember http://192.168.1.200:80
</Proxy>
<VirtualHost *:80>
    ServerName test.example.com:80
    CustomLog /var/log/apache2/test.example.com.log combined
    LogLevel debug
    <Location />
        Order allow,deny
        Allow from all
        ProxyPass balancer://test.example.com/
        ProxyPassReverse balancer://test.example.com/
    </Location>
</VirtualHost>

Wo 192.168.1.200 ist eine falsche Adresse, die nicht mit einer beliebigen web-server zu simulieren, eine backend-Fehler. Die test-Website wurde serviert, ohne ein problem für eine Reihe von verschiedenen client-Rechnern, aber auch mit den LogLevel set debug, ich wollte nicht sehen, nichts protokolliert, um zu signalisieren, dass Sie erkannt, dass einer der backend-Server war down... Und ich möchte zu 100% sicher, dass ich unsere mit Lastenausgleich backends für Wartungsarbeiten heruntergefahren (nacheinander natürlich) ohne Beeinträchtigung von Produktionsstätten.

InformationsquelleAutor Jon Heese | 2012-08-08

Schreibe einen Kommentar