Selfhosted Server as a Service - das sollten Sie wissen!

CTO und Kopf des Serverteams der in2code GmbH

High availability

Ein System ist dann hochverfügbar, wenn es trotz Ausfalls einer oder mehrer Komponenten weiterhin erreichbar ist und ohne sofortigen Eingriff genutzt werden kann. Um das zu realisieren, müssen folgende Gegebenheiten beachtet werden: 

Single Point of Failure

Man spricht vom Single Point of Failure, wenn ein Ausfall oder eine Fehlfunktion einer einzelnen Komponente das komplette System betriebsunfähig macht. Einen möglichen Single Point of Failure gilt es grundsätzlich zu vermeiden.

Redundanz

Identische oder miteinander vergleichbare Systeme sind mindestens zweimal vorhanden. In der Technik lässt sich dadurch sicherstellen, dass die Bereitstellung dieser Dienste auch im Fehlerfall eines Teilbereiches verfügbar bleibt.

Lösungen für einzelne Dienste

Multi-Webserver

Um die Verfügbarkeit Ihrer Webseiten auch beim Ausfall eines Webservers sicherzustellen, müssen mehr als ein Webserver vorhanden sein. Apache oder NGINX als Webserver können dies hinter einem Loadbalancer, welcher auf die Verfügbarkeit und Funktion der einzelnen Webserver prüft, ermöglichen.

Datenbankcluster

Ein Datenbankcluster ist ein Verbund von mehreren Datenbankservern, die alle denselben Datenstand vorhalten. Aufgrund der Redundanz zwischen allen Servern im Datenbankcluster, wird es ermöglicht, dass beim Ausfall eines Datenbankservers die anderen Teilnehmer dessen Aufgabe mit übernehmen. Als Datenbanksoftware eignet sich etwa MariaDB-Galera und PerconaXtraDB. Eine Anbindung der Webserver an diesen Cluster ist mit ProxySQL oder HAproxy umsetzbar. 

Filesystemcluster

Ein Filesystemcluster ist ein Dateisystem, das in einem Serververbund Zugriff auf freigegebene Verzeichnisse erlaubt. Durch das Vorhalten von Dateien auf mehreren Servern bleiben diese auch beim Ausfall eines Servers im Cluster verfügbar. Auf ein Dateisystem-Cluster greifen alle Server zu, welche Dateien aus diesen Datei-Freigaben benötigen. Zu Filesystemclustern gehören zum Beispiel GlusterFS oder CephFS

High performance

Mit einer schnellen Website können Sie nur gewinnen! Ihre Besucher werden sich wohlfühlen und Suchmaschinen wie etwa Google danken Ihnen hierfür mit einer besseren Suchmaschinenplatzierung. Hierbei gibt es ein paar Punkte zu beachten, um Höchstleistung aus der verfügbaren Hardware zu kitzeln.

Load balancing

Load balancing bedeutet Lastverteilung. So werden etwa große Mengen von Anfragen auf mehrere parallel arbeitende Systeme verteilt. Somit können Anfragen zeitgleich bearbeitet werden und die Auslastung der einzelnen Komponenten hinter dem Loadbalancer ist steuerbar. Dazu gehören zum Beispiel der HA-ProxyGoogle Seesaw oder F5-Load-Balancer.

Profiling

Als Profiler werden Programmierwerkzeuge bezeichnet, die dem Entwickler helfen, laufende Programme zu analysieren und zu vergleichen. Somit können Performance- und Ressourcenbedarf geprüft und Problembereiche aufgedeckt werden. Ein Profiling sollte immer der erste Schritt in Richtung High Performance sein. Wenn diese Analyse und Optimierung fehlt, kann das nur mit Hardware erschlagen werden. Auf Dauer ist das sehr teuer. Ein solches Profiling-Werkzeug ist zum Beispiel Blackfire.

Caching

Mit Caching kann man wiederkehrende Ereignisse von Aufgaben und Anfragen zwischenspeichern. Bei zukünftigen Anfragen kann auf die bereits vorliegenden Daten zugegriffen werden. Abgerufene oder bereits berechnete Daten können somit um ein vielfaches schneller ausgeliefert und weiterverarbeitet werden. Solche Caches sind zum Beispiel MemCache, QueryCache, Redis oder Varnish. Für TYPO3 empfiehlt sich die Erweiterung staticfilecache. Caching ist eine Grundvoraussetzung für Geschwindigkeit!

Security

Mit am wichtigsten in der Serverwartung ist die Sicherheit. Man will sich rund um die Uhr vor Hacks, unerkannten Cryptominern oder Verlust von persönlichen Daten schützen. Dabei braucht man aber auch gewisse Abläufe und Tools.

Provisionierung

Ein großes Problem sind sogenannte "Schneeflockenserver". Der Begriff beschreibt den Zustand, dass eigentlich alle Server gleich sind, bei genauerer Betrachtung aber Unterschiede auffallen. In der Wartung oder auch weiteren Entwicklung kann ein solcher Zustand zu Problemen führen. Die Lösung hierfür ist eine Provisionierung. Hierbei wird die Konfiguration eines Servers als Code in Textform hinterlegt. Von einem Programm wie z.B. Ansible, Puppet,Chef oder Saltstack wird die Konfiguration dann auf die gewünschten Server ausgerollt. Dieses Vorgehen stellt sicher, dass Services und Tools auf allen Servern gleich konfiguriert sind. Ebenso erhält man mit diesem Code eine komplette technische Dokumentation der Server. Eine Neuinstallation. z.B. auf neuer Hardware, dauert mit Hilfe einer vorhandenen Provisionierung auch nur einen Bruchteil der sonst nötigen Zeit. 

Personalisiertes Monitoring

Um Server vorausschauend betreuen zu können, ist eine Überwachung mit personalisierten Tests eine gute Lösung. Durch sinnvolle Testszenarien können im Optimalfall schon zukünftig mögliche Probleme vorab identifiziert werden. Außerdem ist es unser Anspruch, Probleme vor unseren Kunden zu erkennen! Dazu bieten sich Tools wie Nagios oder Icinga, sowie Zabbix an. 

Backup

Als Backup bezeichnet man eine Sicherheitskopie, die alle benötigten Daten für den Fall eines Systemausfalls oder eines Datenverlustes vorhält. Diese Daten können jederzeit zurückkopiert oder wiederhergestellt werden. Auch ein sogenannter Restore von Daten eines älteren Zeitpunktes ist somit möglich. Dabei gibt es verschiedene Backupmethoden wie ein Fullbackup mit allen Dateien oder ein Incremential-/Differential-Backup welches nur Teilbackups enthält. Besonder wichtig ist auch das Testen eines Backups, damit man im Ernstfall keine Überraschung erlebt. Ein ungetestetes Backup ist im schlimmsten Fall einfach nur Datenmüll.

Disaster Recovery

Disaster Recovery bedeutet eine Wiederherstellung im Katastrophenfall. Als Katastrophenfall wird zum Beispiel ein Komplettausfall von Hardware bezeichnet. Ein kritischer Punkt ist hierbei das Wiederherstellen nicht mehr benutzbarer Infrastruktur oder Hardware in möglichst kurzer Zeit. Hierfür dient etwa das Tool REAR (Relax and Recover).

 

Haben Sie noch Fragen zu diesem Thema oder konkreten Bedarf an einer Infrastrukturanalyse? Martin Huber steht Ihnen gerne persönlich zur Verfügung.