Apache: Erstellen eines Session-kompatiblen Loadbalancers unter Verwendung von mod_proxy_balancer (Debian Etch)
Bitte pass auf, dass der Wert von stickysession der Name des Cookies (BALANCEID) in unseren Rewrite Regeln von Kapitel 2 ist. Weiterhin müssen die Werte von route in den BalancerMember Zeilen den entsprechenden Wert aufweisen, den wir in den Rewrite Regeln (http1 oder http2) eingestellt haben. Die stickysession und route Werte achten auf die richtige Session-Handhabung von mod_proxy_balancer.
Außerdem ist wichtig, dass Du genauso viele ProxyPassReverse Zeilen wie BalancerMember Zeilen hast (eine ProxyPassReverse Zeile für jeden BalancerMember).
Die ProxyPass /balancer-manager ! Zeile stellt sicher, dass Anfragen auf www.example.com/balancer-manager nicht an die backend Server gerichtet werden.
Mehr Informationen über alle Einstellungen und weitere Optimierungsoptionen findest Du auf http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass und http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html.
Da wir nun die Konfiguration abgeschlossen haben, müssen wir Apache neu starten:
/etc/init.d/apache2 restart
4 Unser Setup testen
Unser Setup kann nun verwendet werden. Um herauszufinden, ob Sessions richtig gehandhabt werden, öffne ich zwei unterschiedliche Browser (wegen der Cookies), z.B. Firefox und Internet Explorer und gehe zu http://www.example.com oder http://example.com. In beiden Fällen müsstest Du das phpBB2 Forum sehen, das von einem der backend Server zugestellt wurde (was man nicht sieht, Du müsstest immer www.example.com oder einfach example.com in der Adresszeile des Browsers stehen haben).
Es kann sein, dass die Seiten in beiden Browsern vom gleichen backend Server geliefert werden – wenn das der Fall ist, dann lösche die Cookies in Deinen Browsern oder öffne einen anderen Browser (Opera, Seamonkey, …) und versuch es erneut bis Du siehst, dass die Seiten in Deinen unterschiedlichen Browsern von verschiedenen backend Servern stammen (ich kann das sehen, weil ich den Header geändert habe, wie in Kapitel 1 beschrieben). Melde Dich dann mit zwei unterschiedlichen Benutzern an (z.B. falko und till), die Du zuvor erstellt hast, und durchforste das Forum mit diesen beiden Benutzern. In meinem Fall wird falkos Inhalt immer von http1.example.com geliefert:
Wohingegen tills Inhalt von http2.example.com stammt:
Als werden Session von mod_proxy_balancer richtig gehandhabt!
5 Der Balancer Manager
Richte Deinen Browser auf http://www.example.com/balancer-manager oder http://example.com/balancer-manager. Du wirst nach einem Benutzernamen und Passwort gefragt (der Benutzername und das Passwort, das Du in Kapitel 3 erstellt hast).
Nach dem Login siehst Du ein einfaches Web Interface mit dem Du den Loadbalancer managen kannst:
Einen Überblick über mögliche Konfigrationsoptionen findes Du auf http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass.
6 Links
- Apache: http://httpd.apache.org
- mod_proxy: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
- mod_proxy_balancer: http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html
- Apache mod_proxy balancing with PHP sticky sessions: http://www.markround.com/archives/33-Apache-mod_proxy-balancing-with-PHP-sticky-sessions.html
- Debian: http://www.debian.org