Ferien-Karlsruhe: Start am 23.02. etwas holprig

Tausende Besucher und zighunderte Reservierungen in wenigen Minuten

Um Punkt 17h war verkaufsstart. Das wussten wir und das wussten die Leute. Warum sollte also etwas schief gehen?

So einfach ist es nicht. Tatsächlich war klar, dass es einen Ansturm auf die Angebote des Ferien Portals geben würde. Was bedeutet aber Ansturm in Zahlen? Wie dimensioniert man Server-Kapazitäten?

SaaS Web hostet das Ferien Portal seit 2015 nachdem der Verkaufsstart bei dem vorherigen Provider mit einem "rausgezogenen Stecker" endete. Seit dem werden Besucherzahlen und Serverlast von SaaS Web getrackt und darauf geachtet, dass das Portal gut läuft. Wie konnte es passieren, dass die Server überlastet waren, wenn SaaS Web zwei Verkaufsstarts (Frühjahr 2016 und 2017) betreut hat?

Anders als in den vergangenen Jahren, an denen der Verkaufsstart offline begann und einige Tage später erst online gebucht werden konnte, wurde erstmals komplett auf online gesetzt. Entsprechend gab es keine Erfahrungswerte über die Anzahl Nutzer und den Bestelltakt. Aber damit nicht genug: das Portal wurde komplett neu programmiert, sodass jeder Besuch, jede Bestellung bzw. Reservierung andere Lastwerte erzeugten wie bislang bekannt. Vor dem Launch wurden Lasttests durchgeführt, die uns die Größenordnung gaben, welche die Server aushalten sollten. Da diese Tests keine realen Bestellvorgänge simulierten, war die Annahme eine grobe Abwägung. An dieser Stelle sei gesagt, dass gute Lasttests einen erheblichen Aufwand bedeuten und entsprechende Kosten verursachen.

Hosting-Infrastruktur vor dem 23.02.

Hosting-Infrastruktur seit dem 23.02.

Was ist also passiert?

Chronik zusammengefasst:

  • Kurz vor 17h kommen immer mehr Besucher auf ferien-karlsruhe.de, können aber noch keine der neuen Angebote bestellen. Unmittelbar vor 17h sind es ca. 2.500 Besucher.
  • Um 17h wird die Möglichkeit zu bestellen automatisiert freigegeben
  • Unter der Last der vielen Bestellungen (denn erst diese erzeugen besonders viel Last) werden Aktionen wie das Klicken auf Weiter im Warenkorb nicht mehr möglich. Dadurch, dass die Server besonders langsam reagieren, werden auch verwirrende Seiteneffekte sichtbar wie z. B. ein Warenkorbsymbol oben mit einem Wert aber der Warenkorb selbst meldet leer zu sein.
  • In dieser Zeit sind wir dabei die Server zu monitoren und zu erkennen was genau nicht funktioniert wie es soll. Wir erhöhen schließlich die Performance aller Komponenten: Load Balancer 1 (von 2), Web Server 1, 2, 3 und 4 (ja, es waren 4 Application Server am Start), sowie Datenbank Server 1 (von 3).
  • Ab ca. 18h entspannt sich die Situation und die Reservierungen laufen in das System ein - bis 19h sind es ca. 1200 Reservierungen.

Das SaaS Web Team entschuldigt sich bei allen Familien für den nervenaufreibenden Verkaufsstart und bedauert sehr, den Buchungsansturm unterschätzt zu haben. Wir hoffen, dass alle trotz allem dazu kamen, die gewünschten Angebote reservieren zu können.

Managed WordPress Hosting: Ferienportal vom Stja geht um 17h live

Ferien Karlsruhe

Das Ferienportal ferien-karlsruhe.de geht in kurzer Zeit live.

Neben neuen Angeboten für die Kinder ist aus technischer Sicht einiges passiert: das Backend wurde komplett überarbeitet. Dazu wird es in Kürze ein eigenen Artikel geben mit detaillierten Informationen und Screenshots.

Public Cloud Multi Server Hosting

Die Hosting-Infrastruktur wurde außerdem ausgetauscht, um den Ansturm an Besuchern zu bewältigen - aber auch die Verfügbarkeit des Systems allgemein zu erhöhen. Insgesamt 9 Server laufen parallel mit verschiedenen Aufgaben, um möglichst viele Anfragen gleichzeitig bearbeiten zu können und eventuelle Ausfälle einzelner Komponenten zu überleben. Der Aufbau des Systems kann hier eingesehen werden: Profi Hosting für WordPress

Profi Hosting für WordPress

WordPress ist das meist genutzte Website CMS auf der Welt. Damit die mit WordPress erstellte Website für den Betreiber und für die Besucher eines gutes Erlebnis wird, insbesondere bei vielen Nutzern/Besuchern, stellt sich zwangsläufig die Frage nach dem Hosting.

In vielen Fällen wird WordPress beim (billig) Hoster über eine 1-Click Anwendung im Kundenbereich auf ein nicht näher spezifizierten Webspace eingerichtet. Der Nutzer muss ein bisschen warten und dann kann er sich in das Backend einloggen und seine Website konfigurieren und bearbeiten.

Ein solches Szenario ist im Unternehmenskunden Umfeld eher seltener. Denn ein Unternehmenskunde möchte wissen was er kauft und was es taugt. Daher wenden sich Unternehmen auch häufig an Agenturen und Spezialisten, die auch in der Lage sind, individuelle Setups aufzusetzen und zu betreiben.

Hostingtyp und Performance

Die Schnelligkeit einer Website, sprich die Ladezeit beim Aufruf von Seiten und bei verschiedenen Klicks hängt natürlich nicht nur von der darunterliegenden Performance (RAM, CPU, Speicher). Techniken wie Caching, Datenkompression, Minifying beispielsweise haben einen großen Einfluss auf die Ladezeit, die Ressourcennutzung und somit auf die Anzahl Nutzer die gleichzeitig die Website besuchen können. Da diese Techniken mehr oder minder von der Hosting-Infrastruktur unabhängig sind, vergleichen wir hier nur die Hostingtypen.

Shared WordPress Hosting

Traditionell besteht das Shared Hosting nur aus einem Webserver (oft old school Apache) und es werden möglichst viele Websites darauf betrieben. Die Websites teilen sich die Ressourcen. Es ist zwar möglich die maximale RAM Nutzung zu bestimmen aber eine Garantie den RAM auch nutzen zu können gibt es nicht - die anderen Websites sind gleichberechtigte Partner und alle versuchen, sich die Ressourcen zu nehmen, die sie brauchen und maximal nutzen dürfen.

Solche Plattformen sind für anspruchsvolle Setups mit vielen Besuchern/Nutzern nicht wirklich geeignet.

Dedicated WordPress Hosting

Für anspruchsvollere WordPress Websites kann man auch eine eigene virtuelle Maschine (VM) nutzen, die mit keinen anderen Websites geteilt wird. So stehen die Ressourcen wirklich dediziert für die WordPress Instanz zur Verfügung. Entsprechend wird eine leistungsstarke VM  für viele Fälle in denen es darauf ankommt, viele HTTP Anfragen zu bearbeiten, die passende Lösung sein.

Verfügbarkeit

Verfügbarkeit ist nicht nur ein Marketing-Wert. Mit einer professionellen Infrastruktur (in einem zertifizierten Datacenter) mit nachweislichen Maßnahmen zur Vermeidung von Ausfällen wie z. B. Redundanz von Netzwerkverbindungen, Servern und RAID-Systemen lässt sich die Verfügbarkeit durchaus verlässlich interpretieren. Außerdem werden in solchen Fällen meist auch Service Level Agreements vereinbart, die nicht vorgesehene Incidents regeln.

Alle Dienste auf einer VM

Wenn ein Webserver, die Datenbank und die Daten allesamt auf einem (virtuellen) Server laufen, hat man ein tendenziell performantes Setup. Wenn aber die darunterliegende Hardware kaputt geht, geht gar nichts mehr. Dann muss ein Backup auf einem neuen Server eingespielt werden (und die IP muss ggf. zum neuen umgeroutet werden).

Web, Datenbank und Daten auf separaten Servern

Damit ein physikalischer Ausfall nicht gleich alle Dienste (Webserver, Datenbankserver, Daten) trifft und einen Totalausfall mit sich bringt, kann man die Dienste getrennt von einander betreiben.

Sie können Daten auf einem NAS ablegen, das auf einer anderen Hardware liegt. Wenn also die VM ausfällt, kann eine neue aufgesetzt werden, die Daten müssen aber nicht erst kopiert werden, die Datenpartition wird einfach (z. B. per NFS) eingebunden. Dasselbe kann mit dem Datenbank-Server gemacht werden.

So haben wir 3 Server für unsere WordPress Anwendung. Das klingt zunächst nicht schlecht, aber so toll ist es auch nicht, denn ein einzelner Server-Ausfall wird nicht abgefangen. Fällt die Datenbank aus oder die Datenpartition, ist die WordPress Website down. Es wird also geboten, für Redundanz der einzelnen Komponenten zu sorgen.

Multi Server WordPress Hosting von SaaS Web

Erklärungen zu dem Multi Server Setup

Im SaaS Web Hosting Portfolio gab es bislang entweder Private Cloud Shared Hosting oder Private Cloud single VM Hosting. Damit lassen sich Websites mit vielen Besuchern, großem Ressourcen Verbrauch und hoher Verfügbarkeit nicht ganz so gut abbilden. Das Public Cloud Multi Server Setup ist nun die Antwort auf solche Anforderungen. Es lässt sich übrigens auch in der SaaS Web Private Cloud einrichten...

Parallel laufende Webserver

Der Webserver wird redundant betrieben: es laufen parallel zwei oder mehr Server (mit Nginx). Sie greifen alle auf dieselbe NFS Datenpartition zu.

Cloud NAS

Die Cloud NAS ist ein redundantes NFS Server-System, das sich ein Festplatten-Pool (RAID) teilt, sodass ein einzelner NFS-Server Ausfall abgefangen werden kann.

Galera Cluster

Die Datenbank Server werden als Galera Cluster (mindestens 3 Server) zusammengeschaltet. Selbst wenn 2 Server ausfallen geht der Anwendung das Licht nicht aus. Das Cluster wird als Reverse Proxy (localhost) zu der WordPress Installation eingebunden - so muss WordPress nicht selbst entscheiden, welchen Server für die DB Verbindung benötigt wird.

Master/Slave Load Balancer

Damit die Webserver parallel betrieben werden können, benötigt das Setup einen Load Balancer, der die eingehenden HTTP-Anfragen an die Webserver verteilt. Um einen Load Balancer Ausfall zu verkraften, bekommt dieser auch einen Zwillingsbruder.

Failover IP

Mit der Failover IP kann die öffentliche IP (die mit der Website Domain matcht) dynamisch zwischen den Load Balancer wechseln. Das geschieht automatisch: wenn der Slave Load Balancer merkt, dass der Master ausgefallen ist, beantragt er die Zuweisung der IP.

Hier geht es zu den SaaS Web Managed WordPress Hosting Angeboten.

WordPress Management mit WP Steve

Unabhängig vom Hosting ist das Management der WordPress Instanz besonders wichtig. WordPress sollte stets up to date sein genauso wie das Theme und die installierten Plugins. SaaS Web hat hierfür eine WordPress Management Anwendung entwickelt mit der alle gehosteten Websites zentral verwaltet werden können. Standardmäßig werden 1x am Tag und bei jedem Update-Vorgang ein Backup der WordPress-Installation  durchgeführt.