Hinter den Blogwerk-Kulissen: die Server

Es ist einfach: Wenn die Webseite erreichbar ist, sind alle glücklich, wenn die Webseite nicht erreichbar ist, ist die Hölle los. Doch was läuft eigentlich im Hintergrund ab? Ein Blick hinter die Kulissen von Blogwerk: unsere neue Serverinfrastruktur.

 

Was ist ein Server?

Ein Server ist ein Computer, der den ganzen Tag wartet, bis ihn jemand nach einem bestimmtem Inhalt fragt. Bei einem Webserver ist es so, dass dieser beim Aufrufen einer bestimmten Website den richtigen Inhalt zusammenstellt und an einen Browser übergibt. Der Browser kann mit dem Inhalt die Website darstellen.

Um täglich die grosse Anzahl an Anfragen bei Blogwerk zu beantworten, braucht es aber nicht nur einen, sondern mehrere verschiedene Server. Wir verwenden normale Webserver, Datenbankserver und Memcachedserver. Ein Datenbankserver liefert auf die Anfrage hin reine Daten zurück. Der Webserver verwendet die Daten und sorgt für die Darstellung. Der Memcachedserver speichert temporär bestimmte Daten, damit diese nicht bei jedem Aufruf beim Datenbankserver erfragt werden müssen.

Um die Menge der anfallenden Anfragen jederzeit beantworten zu können, müssen die Server skalierbar sein. Das bedeutet, dass man bei Bedarf zusätzliche Server hinzufügen muss. Ein erster Schritt, die Skalierbarkeit zu erhöhen, ist ein Loadbalancer.

Was ist ein Loadbalancer?

Angenommen, jemand möchte die Website www.blogwerk.com besuchen. Sobald die Internetadresse im Browser eingetippt ist, versucht der Browser herauszufinden, welcher Server für die URL www.blogwerk.com zuständig ist. Ein Namensserver teilt dem Browser diese Information mit und der kontaktiert dann den zuständigen Webserver. Der Namensserver fungiert als Adressbuch und liefert zu einer bestimmten Internetadresse die benötigten Kontaktdaten zurück.

Bei einer kleinen Webseite liefert der Webserver dann die Webseite aus. Bei einer grösseren Infrastruktur wie bei uns kontaktiert der Browser zuerst einen Loadbalancer. Dieser kennt eine gewisse Anzahl Server, welche genau diese Art von Anfrage bearbeiten können. Der Loadbalancer leitet nun die Anfrage an einen der Server weiter, der in dem Moment am wenigsten zu tun hat. Dieser berechnet die Anfrage und gibt sie dem Loadbalancer zurück, welcher den Inhalt an den Browser weitergibt.

Dem menschlichen Webnutzer fällt dabei kein Unterschied auf. Im Hintergrund bringt ein Loadbalancer aber viele Vorteile. Es ist dadurch möglich, bei Bedarf die Kapazitäten der Infrastruktur deutlich zu vergrössern. Ebenso erhöht er die Ausfallssicherheit. Angenommen einer der Webserver hat ein technisches Problem und fällt aus, springen andere Webserver in die Lücke und beantworten die Anfrage.

 

Die Infrastruktur des Social Media Kits

Wir setzten seit längerem einen Loadbalancer für unsere Social Media Kit-Infrastruktur ein. Die Server dahinter nutzten allerdings teilweise Betriebssysteme, die nicht mehr auf dem neuesten Stand waren. Ausserdem stellten wir in den letzten Monat vermehrt eine hohe Auslastung unserer Server fest, abhängig von bestimmten Anlässen oder Ereignissen. Wir haben uns also daran gemacht, die Infrastruktur zu verbessern, um besser mit hohen Belastungen oder Ausfällen umzugehen.

Die Lösung war schnell gefunden. Statt wie bisher nur temporäre Server zu starten, entstand die Idee, die Server fest zu erzeugen. Wenn sie nicht zum Einsatz gelangen, beenden sich die Server selber. Im Bedarfsfall können wir diese Server aber innerhalb von wenigen Sekunden starten. Ein theoretisch möglicher Ausfall eines Servers würde so zu einem Unterbruch von lediglich zwei bis drei Minuten führen.

 

Leistungstests lohnen sich

Vor zwei Wochen haben wir begonnen, die neuen Server zu installieren und zu konfigurieren. Im Test ergab sich mit der gleichen Konfiguration und nur durch das neue Betriebssystem eine Leistungsverbesserung von rund 3 Prozent. Wir hatten aber noch einige Optimierungsmöglichkeiten gefunden. Nach dem wir xcache für PHP aktiviert hatten, konnten wir eine Leistungsverbesserung um 50 Prozent messen. Gemessen haben wir jeweils, wie viel Zeit für die gleiche Anzahl Anfragen benötigt wird. Natürlich sind das theoretische Werte und können in der Praxis so nicht erreicht werden, trotzdem ist eine Verbesserung in unserer Statistik sichtbar. Mit einer so hohen Leistungsverbesserung haben wir nicht gerechnet.

Durch eine Zusätzliche Konfigurationsänderung konnte die Stabilität der einzelnen Server erhöht werden, in dem bei einem technischen Problem eines Servers nur ein bestimmter Teil (momentan ein Zehntel) nicht mehr erreichbar ist. Auf den alten Server war jeweils die Hälfte des Servers nicht mehr erreichbar. Zusätzlich haben wir verschiedene Programme eingeführt, die uns eine Verbesserung und Vereinfachung im Umgang mit den Servern bieten. Den administrativen Aufwand können wir dadurch deutlich minimieren.

 

Umstellung der Server

Neu an unserer Infrastruktur ist, dass die Server von einem zentralen Server gesteuert werden, dem Master. Dieser Server kennt den Status der Server, aktualisiert den Content auf den Servern und versorgt die Server mit den aktuellsten Konfigurationen.

In der Nacht vom 20. zum 21. September haben wir dann die bestehenden Server mit den neuen Servern ersetzt. Einige kleine Hickups waren unvermeidlich, da die Umstellung jedoch spät am Abend stattfand, blieben sie ohne Konsequenzen. In der Nacht vom 25. zum 26. September wurde dann noch ein zusätzlicher Server ersetzt, welcher Nebenaufgaben unserer Infrastruktur ausführt, beispielsweise Aktualisierungsaufgaben der Webseiten. Der Server trägt den liebevollen Namen «Butler».

Die geringere Auslastung ist in unserer Statistik deutlich sichtbar. Während wir früher auf unseren Server zwischen 60% und 80% Auslastung hatten (tagsüber) liegt die Durchschnittliche Auslastung jetzt zwischen 40% und 60%.

 

Zukunft der Infrastruktur

In Zukunft werden wir unsere Infrastruktur weiter verbessern und optimieren. Wir haben Konzepte, welche die Leistung unserer Server um weitere 20% bis 30% verbessert. Deren Umsetzung wird allerdings noch etwas Zeit in Anspruch nehmen.

Ebenfalls soll ein automatisches Überwachungssystem in Betrieb genommen werden, welches innerhalb weniger Minuten zusätzliche Server startet, falls einer oder mehrere ausfallen. Egal ob in der Nacht oder am Tag, ein solches System reagiert immer schneller als ein Mensch. Zu einem späteren Zeitpunkt soll das System so erweitert werden, dass die Auslastung der Server nie einen kritischen Bereich erreicht. Sobald die Auslastung einen definierten Grenzwert erreicht, werden so viele zusätzliche Server gestartet, dass die Last unter den Grenzwert sinkt. Wenn die Last wieder abnimmt, werden die Server automatisch wieder gestoppt. Dadurch erreichen wir, dass tagsüber bei höherer Auslastung mehr Server zur Verfügung stehen.

 

Fazit

  • Skalierbarkeit und Ausfallssicherheit sind komplizierte Anliegen und schwierig in der Realität umzusetzen (dazu gibt’s bereits tausende Artikel im Internet)
  • Leistungstests sind nur theoretisch und weichen von der Realität ab.
  • Es lohnt sich, einzelne Konfigurationsanpassungen auf die Geschwindigkeitsveränderung zu testen. Durch das Anpassen von Konfigurationen können teilweise deutliche Gewinne erzielt werden.
  • Durch Einsatz eines Konfigurationsmanagementtool (bei uns Puppet) kann im Betrieb deutlich Zeit gespart werden. Die Konfigurationen der Server sind auf einem zentralen Server gespeichert, und die einzelnen Server prüfen die Konfigurationen in gewissen Zeitabständen auf ihre Aktualität. Zudem wird dadurch die Skalierung erst wirklich ermöglicht, da unabhängig der Anzahl Server die Konfigurationen jederzeit verändert werden können.

Matthias Zobrist

Matthias Zobrist ist Software-Entwickler bei Blogwerk AG.

 

Schreiben Sie einen Kommentar

Wir sind sehr an einer offenen Diskussion interessiert, behalten uns aber vor, beleidigende Kommentare sowie solche, die offensichtlich zwecks Suchmaschinenoptimierung abgegeben werden, zu editieren oder zu löschen. Mehr dazu in unseren Kommentarregeln.

Pflichtfelder
OK
Bitte geben Sie Ihren Namen ein.
OK
Bitte geben Sie Ihre E-Mail-Adresse ein.
OK
Bitte geben Sie einen korrekte Website ein.
OK
Bitte geben Sie einen Kommentar ein.