Aktives Monitoring eines Seafile Clusters

Für maximale Skalierbarkeit und Verfügbarkeit unterstützt Seafile Clustering. Bei einem Cluster werden Zugriffe mit Hilfe von Load Balancern auf mehrere Nodes verteilt und dadurch Ausfallsicherheit geschaffen. Damit man die technischen Vorteile eines solchen Rechnerverbunds nicht leichtfertig verspielt, muss ein Seafile Cluster über ein aktives Monitoring der Prozesse, der Applikationen und der unterstützenden Infrastruktur verfügen. So lassen sich Probleme erkennen und beseitigen, bevor sie zum Teil- oder Komplettausfall führen. Dieser Artikel gibt einen Überblick über die zu überwachenden Komponenten und leistet Hilfestellung bei der Auswahl der passenden Überwachungsmethoden.

Seafile Architektur und Aufbau

Maßgabe für den Umgang des Monitorings eines Seafile Systems ist die Größe des Systems, der Anzahl der User, die Bedeutung für die Unternehmensprozesse und die Toleranz gegenüber Ausfällen. Bei einem als Austauschplattform genutzten Single-Node Seafile Server ist es normalerweise ausreichend, in regelmäßigen Abständen die Erreichbarkeit der Weboberfläche und des Synchronisationsdienstes zu überprüfen. Man reagiert, wenn eine Komponente ausgefallen ist. Anders bei einem Seafile Cluster: Dessen bewusst geschaffene Redundanzen sollen den Ausfall einzelner Komponenten ohne Verfügbarkeitseinschränkungen ermöglichen. Ohne ein aktives Monitoring merkt man schlimmstenfalls gar nicht, dass einzelnen Komponenten nicht mehr funktionieren und verpasst das Zeitfenster, in dem man ohne Ausfall das System reparieren kann.

Seafile Cluster orientieren sich typischerweise an den folgenden Best-Practise Ansätzen, die es zu überwachen gilt:

  1. Das Seafile System besteht aus mehreren Frontend- und einem Backend-Knoten kombiniert mit vorgeschalteten Load Balancern zur Verteilung der Zugriffe.
  2. Als Datenbank kommt ein Galera Cluster für MySQL zum Einsatz, um die Datenbank auf allen Seafile Knoten synchron zu halten.
  3. Als Storage Backend kommt einer oder mehrerer der unterstützten Objektspeicher wie Amazon AWS, OpenStack Swift oder Ceph zum Einsatz.

Die zentralen Komponenten von Seafile

Während der zentrale Synchronisationsserver aus C Code besteht, ist Seafiles Webinterface Seahub in Python programmiert. Seafile benötigt ein Dateisystem zum Speichern der Datenblöcke und eine Datenbank zum Abspeichern der Benutzer-, Block- und Metainformationen.

Während der Verlust eines Frontend- oder eines Backendknotens das System nicht in die Knie zwingen sollte, ist es essentiell über so ein Ereignis informiert zu werden, um einen zuverlässigen Betrieb garantieren zu können. Aus diesem Grund ist es von zentraler Bedeutung, dass der Seafile Server, die Load Balancer, der Datenspeicher und die Datenbank aktiv überwacht werden. Dieses Dokument gibt die notwendigen Hilfsmittel hierfür an die Hand.

Seafile Server und das Webinterface Seahub

Seafile bietet einen einfachen Mechanismus zur Überprüfung, ob sowohl der Applikationsserver sowie die Weboberfläche verfügbar und bereit sind. Es genügen die folgenden Abfragen, um die Erreichbarkeit zu testen. Wenn die folgenden Rückgabewerte zurückgeliefert werden, kann man davon ausgehen, dass der Seafile Server zur Verfügung steht:


$ curl SEAFILE-URL/api2/ping/
"pong"

$ curl SEAFILE-URL/seafhttp/protocol-version
{"version": 2}

Wichtig: Diese beiden Abfragen müssen auf allen Knoten des Clusters ausgeführt werden.

Webserver

Obwohl Seafile den auf Python-basierenden Webserver Gunicorn mitbringt, empfiehlt es sich, einen dedizierten Webserver wie Apache oder nginx als Reverse Proxy einzusetzen. So profitiert das Seafile System von SSL-Verschlüsselung und diversen Caching-Mechanismen, die das System beschleunigen. Da nginx (oder Apache) eine zentrale Komponente zum Betrieb des Seafile Servers ist, sollte dieser Dienst aktiv überwacht werden. So empfiehlt es sich, die beiden Logdateien (seahub.access.log und seahub.error.log) auf Fehlercodes im Bereich 4xx und 5xx zu überwachen. Praktisch jedes Log-Analysetool oder Monitoringtool bringt entsprechende Fähigkeiten mit.

Datenbank-Cluster

Die SQL-Datenbank ist eine weitere Komponente von zentraler Bedeutung für den Betrieb von Seafile. Für die Überwachung eines Galera Clusters liefert die Software entsprechende Methoden direkt mit oder man bedient sich eines separaten Management-Tools wie z.B. ClusterControl von severalnines.

Was den Umfang der Überwachung angeht, so sollte man nicht den Fehler machen und die Prüfung auf das Vorhandensein der Datenbank zu beschränken. Man sollte auch regelmäßig die einzelnen Knoten überwachen, um eine Split-Brain Situation zu vermeiden.

Das Management des Datenbank Clusters ist vermutlich die komplexeste Aufgabe des Monitorings. Bei ungelösten Datenbankproblemen drohen im schlimmsten Fall auch Datenverlust. Entsprechende Aufmerksamkeit sollte dieser Komponenten daher geschenkt werden.

Speichersystem

Aufgrund der Vielzahl der möglichen Speichersysteme richtet sich die optimale Vorgehensweise nach dem eingesetzten Speichersystem. Grundsätzlich sollte man die verfügbaren Prüfmechanismen des Speichersystemanbieters verwenden und zusätzlich auf verfügbare und bewährte Techniken des Speicher-Host-Systems wie z.B. die Überwachung von SMART Werten und den RAID Zustand setzen. Pauschale Aussagen nach der Art des Monitorings sind jedoch aufgrund der Vielzahl und der Unterschiede nicht möglich.

Load Balancer

Auch bei den Load Balancern gibt es eine große Bandbreite an möglichen Lösungen. Neben Software-basierten Lösungen wie HAProxy oder Kemp gibt es fertige Hardware-basierte Lösungen wie die populären Angebote von F5, TP-Link oder Barracuda. Sehr im Trend liegen darüber hinaus Cloud-basierte Load-Balancer von Digital Ocean und Amazon AWS.

Während man sich bei Load Balancern aus der Cloud auf die Zuverlässigkeit des jeweiligen Anbieter verlassen kann, muss man Hard- und Software-basierte Lösungen aktiv überwachen und in das Monitoringkonzept integrieren.

Sonstige unkritische Dienste

Auch wenn die folgenden Dienste nicht zwingend für den Betrieb von Seafile notwendig sind, lohnt es sich, diese zu überwachen, da ein Ausfall den nutzbaren Funktionsumfang von Seafile einschränkt. Von Haus aus bringt Seafile elasticsearch als Grundlage für die Volltextsuche mit. Memcached wird verwendet, um die Webseitenaufrufe zu beschleunigen. Auch Keepalived kommt typischerweise bei Seafile Clustern zum Einsatz, um virtuelle IP-Adressen für die interne Kommunikation der Komponenten zu ermöglichen.

Die einfachste Überwachungsmethode dieser drei Komponenten besteht darin, regelmäßig die Anzahl der zugehörigen Prozesse zu zählen und zu reagieren, wenn sich diese unaufgefordert beendet haben sollten oder zu viele Prozesse im System vorhanden sind.

Das aktive Monitoring eines Seafile Cluster ist Pflicht

Mit einem Seafile Cluster baut man bewusst Redundanzen auf, um eine höhere Verfügbarkeit des Gesamtsystems zu gewährleisten. Dabei sollte man das System nicht unbeobachtet lassen, sondern ein aktives Monitoring aufbauen, um rechtzeitig über entstehende Probleme oder Ressourcenengpässe informiert zu werden. Nur so erhalten die Administratoren die notwendige Zeit, um auf die aktuelle Situation zu reagieren.

Dieser Artikel hat die zu überwachenden Komponenten eines Seafile Clusters und, soweit möglich, die Art der Überwachungen aufgezeigt. Welche konkreten Monitoring-Tools wir empfehlen und typischerweise verwenden, soll Bestandteil eines folgenden Artikels werden. Wenn Sie Fragen rund um das Thema haben, zögern Sie nicht, uns anzusprechen.