Bei einem meiner "Heavy Load"-Projekte nutze ich seit langer Zeit
Pound als Loadbalancer und SSL-Proxy. In letzter Zeit sah ich allerdings immer mehr große Sites zu
Nginx switchen, u.A. solche Größen wie wordpress.com. Das machte mich natürlich neugierig, so dass ich die Tage Nginx testweise auf einem der Loadbalancer aufsetzte, konfigurierte und testete.
Zuerst einmal muss man sagen, dass Nginx deutlich besser dokumentiert ist als Pound. Ich brauchte eigentlich keine weiteren Infos als das
Wiki - für einen Pound-User nahezu ein Traum. Dort beschränkt sich die Doku eigentlich nur auf das Archiv der Mailingliste. Das kann u.U. sehr mühsam sein. Aufgrund der guten Doku war die Installation von Nginx aus den Sourcen (ich habe mich für die "stable" Version entschieden) sowie die anschließende Konfiguration kein Problem. Auch die Nutzung als SSL-Proxy lässt sich ähnlich wie in Pound konfigurieren, d.h. dass Nginx die SSL-Anfragen annimmt und als normale HTTP-Anfragen an die Backends weiterleitet. Der User bemerkt davon natürlich nichts und befindet sich permanent auf einer "normalen" SSL-Seite.
Ansonsten war die Umstellung eigentlich sehr einfach. Zu beachten ist bei Nginx, ebenso wie bei Pound, die Erhöhung des
ulimit via Initscript, um Meldungen wie "too many open files" zu umgehen. So konnte Pound nun beendet und Nginx gestartet werden. Da als Server ein Quad-Opteron zum Einsatz kommt, habe ich Nginx mit 4 "Worker Processes" konfiguriert, um alle Cores optimal zu nutzen.
Das Ergebnis kann sich sehen lassen:
Wie man sieht, ist die CPU-Last massiv gesunken. Um mehr als die 2/3 mindestens, und dass obwohl zum Testzeitpunkt ziemlich viel los war auf dem Loadbalancer (~600-800 requests/sek). Die Load auf dem Server ist dauerhaft unter 0.1. Einfach genial, wenn man das mit der recht hohen CPU-Last und einer Load von 0.5-0.8 von Pound vorher vergleicht.
Für das Monitoring habe ich auch direkt ein paar nette
Cacti-Templates gefunden, die prima funktionieren. Abschließend kann ich mich eigentlich nur fragen, warum ich nicht gleich Nginx genommen habe? Pound lief zwar jahrelang stabil und zuverlässig, die deutliche höhere Last und die schlechte Dokumentation von Pound sprechen aber eindeutig für den Einsatz von Nginx als Loadbalancer auf Sites mit hoher Last.
Kommentare