27.09.2008, 08:39 Uhr

Apache-Dynamik auslagern

Bei besonders beliebten Webseiten mit zahlreichen dynamischen Elementen lohnt sich das Auslagern komplexer Anfragen an eine zweite Apache-Installation oder einen anderen Rechner.
Bei besonders beliebten Webseiten mit zahlreichen dynamischen Elementen lohnt sich das Auslagern komplexer Anfragen an eine zweite Apache-Installation oder einen anderen Rechner.
Mit der zunehmenden Interaktivität von Webseiten steigen zwar auf der einen Seite die Möglichkeiten des Webmasters, auf der anderen Seite zerren die komplexen Seitenabrufe an der Performance eines Webservers. Ein Webmaster eines weltweit agierenden Großunternehmens mit Millionen Seitenabrufen behilft sich in diesem Fall mit mehreren und unter Umständen weltweit verteilten Server-Systemen. Für ein kleines mittelständisches Unternehmen eignet sich diese Lösung eher selten, nicht zuletzt auf finanziellen Gründen. Aber selbst wer lediglich einen dedizierten Webserver sein Eigen nennt, kann die Last bequem innerhalb des Systems aufteilen.
Als Beispiel-Szenario betreiben wir zwei Apache-Webserver auf einem Rechner: Ein Server auf Port 8088 beinhaltet allen Schnickschnack des dynamischen Content-Management-Systems, der andere Server auf Port 80 nur die statischen Inhalte. Sämtliche Anfragen gehen beim leichtgewichtigen Server ein, welcher dann die komplexen dynamischen Aufgaben an die zweite Apache-Installation weitergibt, als wenn dieser selbst ein Client wäre. Die Antworten gibt dann der erste Server an den wirklichen Client des Besuchers weiter.
Solange die Site-Definitionen bei beiden Apache-Installationen auf dieselbe Document-Root zeigen, funktioniert diese Methode ohne Probleme. Was sich auf den ersten Blick vielleicht recht kompliziert anhört, lässt sich mit relativ wenigen Handgriffen realisieren. Mit Hilfe der Rewrite-Regel werden alle Anfragen außer auf Grafiken und auf die Archive an den speziellen Anwendungsserver weitergeleitet. Hierzu fügen Sie am Ende des VirtualHost-Eintrags Ihrer Seite auf dem Server auf Port 80 folgende Zeilen hinzu:
RewriteEngine on
RewriteCond %{Request_URI} !.*\.(jpg|gif|pdf|png|zip|tgz|gz)$ RewriteRule ^/(.*) http://
Wenn Sie auf Ihren Seiten Cookies einsetzen, sollten Sie darauf achten, dass die HTTP-Header bei der Weitergabe entsprechend übersetzt werden:
ProxyPassReverse / http://%{HTTP_HOST}:8088/
Eine weitere praktische Möglichkeit ist, mehrere physikalische Server zur Lastverteilung zu verwenden. Dies ist jedoch nur sinnvoll, wenn diese in einem internen Netz zusammenhängen. Bei beispielsweise zwei dedizierten Webservern bei einem Webhoster würde eine Weitergabe von dynamischen Anfragen zwischen den zwei dedizierten Rechnern über das Internet die Performance wohl eher bremsen als steigern.



Das könnte Sie auch interessieren