Viele unserer Kunden betreiben ein WordPress-Blog. Einige davon müssen so viele User abarbeiten, dass die technische Umsetzung dieser Platformen schon sehr komplex ist.

Um eine solche komplexe Umgebung zu installieren, war es meist notwendig in Hardware zu investieren. Immerhin braucht es mehrere Server sowie Lastverteiler und Datenbank-Systeme um auch bei größeren Besuchermengen die Webseite noch schnell und performant ausliefern zu können. Damit musste der Kunde vom ersten Tag an in Hardware und Ressourcen investieren, die er ggf. nur zu Stoßzeiten benötigt.

In diesem Szenario reden wir über Performance und Erreichbarkeit einer Webseite, nicht über Hochverfügbarkeit. Ein minimales Setup, um eine Webseite an ca. 1000 gleichzeitige Besucher auszuliefern, könnte z.B. wie folgt aussehen:

HA Setup / Minimal

Damit bewegt sich der Kunde schon im vierstelligen Bereich, was die monatlichen Kosten angeht. Auch wenn man diese Ressourcen vielleicht nur einmal in der Woche benötigt, musste man immer den maximalen Betragen zahlen. Wenn wir heute mit unseren Kunden und Interessenten über belastbare und hochverfügbare Webserver sprechen, sprechen wir meist auch über die Cloud!

Welche Vorteile bietet mir die Cloud?

Jelastic ist eine wegweisende Platform as a service (PaaS) Cloud-Umgebung für Java- und PHP-Applikationen sowie für virtuelle Server.  Mit der Jelastic Cloud machen wir Ihre Anwendung oder Ihren Server skalierbar und hochverfügbar.

Dies bedeutet, dass Jelastic je nach Auslastung automatisch eine ganze Reihe von Ressourcen wie z.B. Arbeitsspeicher- oder CPU-Leistung skaliert. Neben der Skalierung von Ressourcen bietet Jelastic Features wie Lastverteilung und Caching über die voll integrierte NGINX-Software an.

Natürlich ist der Preis entscheidend, das ist auch bei unserer Jelastic Cloud so. Mit Jelastic zahlen Sie für Ihren tatsächlichen Ressourcenverbrauch, nicht für die einzelne Instanz oder deren Größe. Sie zahlen nur die Ressourcen, welche Sie tatsächlich nutzen!

Jelastic misst Ressourcen in Cloudlets. Ein Cloudlet entspricht 128 MB RAM und der Leistung eines 200-MHz-CPU-Kerns. Zusätzliche Cloudlets können hinzugefügt oder reduziert werden, je nach Last, die Ihre Anwendung erzeugt. Es dauert nur ca. eine bis zwei Sekunden um Ihrer Anwendung neue Cloudlets zur Verfügung zu stellen.

Jelastic Konfiguration für WordPress

Mit Jelastic, unserer Cloud Hosting Platform, steht unseren Kunden ein komplexes Setup innerhalb weniger Minuten zur Verfügung. Das Ganze ohne administrativen Aufwand oder große Investitionen in Hardware.

Für unser Beispiel bauen wir uns eine Umgebung bestehend aus Lastverteiler, zwei Apache-Webservern, mySQL- und Memcached-Server.

Jelastic PHP Setup

Nach nur zehn Minuten sind alle Server eingerichtet, konfiguriert und miteinander verbunden. Es kann los gehen!

Wie in dieser Anleitung hier beschrieben ist die Installation von WordPress in ca. zehn Minuten erledigt.

Memcached Konfiguration in WordPress

Am einfachsten befüllen wir unseren neuen Memcached-Server mit einem bereits fertigen WordPress-Plugin. Wir nutzen hier das Plugin WP-FFPC:

Bevor wir das Plugin jedoch aktivieren können, muss der Webserver die Erweiterung memcached kennen, damit Anfragen auch korrekt an den Memcached-Server ausgelagert werden können und alle Session-Daten extern gespeichert werden.

Dazu sind nur wenige Änderungen in der PHP-Konfiguration notwendig:

  1. Klicken Sie auf den Config Button neben dem Apache.
  2. Öffnen Sie jetzt in dem neuen Tab conf > php.ini
  3. Fügen Sie die folgende Zeile im Bereich Dynamic Extensions ein:
extension=memcached.so

Ausserdem müssen wir noch eine kleine Änderung im Bereich [Session] der PHP.ini machen. Hier tragen Sie die folgenden zwei Zeilen ein:

session.save_handler = memcached
session.save_path = "tcp://< server >:11211"

Ersetzen Sie dabei < server > durch die IP Ihres Memcached-Servers. Die IP finden Sie, wenn Sie auf Info neben dem Memcached-Server klicken.

Weiterhin müssen wir unserem WordPress noch mitteilen, dass wir ab sofort das Caching nutzen. Dazu tragen wir die folgende Zeile in der wp-config-php ein:

define( 'WP_CACHE', true );

Nach dem Speichern der Änderungen und dem Neustart der Webserver sind alle gemachten Anpassungen auf allen unseren Apache-Webservern aktiv.

Das WP-FFPC Plugin kann jetzt aktiviert werden.

WP-FFPC Plugin konfigurieren

Die Konfiguration ist denkbar einfach. Im ersten Punkt der Globalen Konfiguration wird die „Cache invalidation method“ festgelegt, in diesem Setup: „use memcached server with Memcached extension“

Caching Methode angeben

Unter „Setting for memcached backend“ wird lediglich die IP des Memcached-Servers eingetragen und die neue Konfiguration gespeichert.

Server IP angeben

Nach dem Speichern der neuen Konfiguration ist der Memcached aktiv und wird von umgehend von WordPress genutzt.

Memcached Monitoring

Wenn man sich für die Auslastung und Statistiken des Memcached-Servers interessiert, bietet es sich an, das kleine Script „phpmemcacheadmin“ zu nutzen. Dies kann einfach von der Webseite http://code.google.com/p/phpmemcacheadmin/ geladen werden. Es handelt sich dabei um ein einziges PHP-Script, welches wir einfach in einem neuen Kontext in unserer Jelastic-Umgebung deployen.

Upload

Deploy

Create

In dem neuen Kontext, http://meineumgebung.jelastic.dogado.eu/memcached/, wird unter der Option „Edit Configuration“ nur noch die IP des Memcached-Servers eingetragen und schon erhalten wir ein paar schöne Statistiken und Live-Daten des Servers.

Memcached Server IP

Damit sind alle Komponenten installiert und konfiguriert, um WordPress unter Stress zu setzen. Zeit für einen Lasttest!

Lasttest der neuen Webseite

Um die Seite schnell unter Last zu testen, kann man sich des Services blitz.io bedienen. Hier wurde die Seite mit 600 gleichzeitigen Besuchern konfrontiert. Dafür, dass wir Jelastic in diesem Testsetup nur minimal skalieren lassen und auch die Webserver-Konfiguration nicht optimiert haben, kann sich das Ergebnis sehen lassen.

blitz.io Auswertung

blitz.io Results

 

Da geht noch mehr!

Hier nur einige Stichworte um die Performace noch weiter zu steigern:

  • Apache Webserver Tuning
  • mySQL Server Tuning
  • CDN Content Delivery Network
  • W3 Total Cache Plugin für WordPress (Minify & Caching)