Seafile ist bekannt für seine Zuverlässigkeit und Stabilität. Doch selbst die robusteste Software hat einem Serverausfall nichts entgegen zu setzen, wenn sie nur auf einem einzigen Server installiert ist. Einen Seafile Cluster, bei dem Seafiles Komponenten redundant auf mehreren Server betrieben werden, können selbst spontane Ausfälle einzelner Komponenten nicht in die Knie zwingen. In diesem Artikel wird ein typischer Clusteraufbau mit Seafile sowie seine Eigenschaften und Fähigkeiten beschrieben.
Serverausfälle sind unvermeidbar: Neben Datenträgern als Achillesferse von Computersystemen können auch Mainboards, Netzteile oder Netzwerkswitches ohne Ankündigung ihren Dienst einstellen und ein IT-System “ausknipsen”. Auch menschliche Fehler führen immer wieder zu nicht geplanter Downtime, wenn z.B. nach einer Wartung vergessen wird, einen benötigten Dienst zu starten.
Während bei kleinen Teams und Firmen der Ausfall eines zentralen Systems ärgerlich ist, können sie mit ihren kleineren Strukturen schneller und flexibler reagieren als Großunternehmen. Bei letzteren ist ein Stillstand der IT häufig gleichbedeutend mit einem Stillstand der operativen Tätigkeiten. Umso größer ein Unternehmen und umso abhängiger von einem IT-System, desto wichtiger wird die Forderung nach größtmöglicher Verfügbarkeit und Ausfallsicherheit.
Der Aufbau eines Cluster ist ein wichtiger Schritt auf dem Weg zu einem hochverfügbaren System. Bei einem Cluster liegen alle Komponenten, die für die Dienstbereitstellung notwendig sind, redundant vor und können beim Ausfall einer einzelnen Komponenten auch eigenständig die Dienstbereitstellung garantieren. Das grundsätzliche Ziel beim Aufbau eines solchen integrierten Rechnerverbunds ist somit die Vermeidung von Single-Points of Failure. Ausfälle können zu reduzierter Performance führen, aber die zentrale Funktionalität bleibt erhalten und nutzbar.
Die Kehrseite eines Clusters ist seine größere Komplexität mit einhergehenden Mehraufwänden für Aufbau und Wartung. Während man bei einem 1-Knoten-System, also einem auf einem Server installierten Seafile System, nur dieses administrieren muss, erfordert ein Cluster mit mehreren Knoten ein Vielfaches an Zeit und Wissen sowie Investitionen in Hardware und Infrastruktur.
Die einfachste Variante eines Seafile Clusters besteht aus drei Knoten und einem redundanten Storage Backend. Zwei Knoten arbeiten in einem Art Master/Slave Verbund und bilden das Frontend. Fällt der Master aus, übernimmt der Slave nahtlos. Der dritte Knoten übernimmt die unkritischen Hintergrundtätigkeiten (z.B. die Antivirenprüfung, die Dateiindexierung für die Volltextsuche und den E-Mail-Versand) und wird nicht redundant aufgebaut. Die Verlagerung der Hintergrundtätigkeiten auf einen dedizierten Knoten entlastet die beiden Frontend-Knoten und ermöglicht so gleichbleibende Performance auch bei vielen hunderten Zugriffen.
Die drei Seafile Server werden alle auf identische Art und Weise installiert. Über die Konfiguration werden die Rollen – zwei Applikationsserver und ein Background Server – festgelegt. Jeder Server beinhaltet die vollständige Seafile Datenbank, welche konstant über alle drei Knoten synchronisiert wird und über die die Kommunikation der drei Knoten erfolgt.
Um sich vor Hardwareschäden optimal zu schützen, sollten die beiden Applikationsserver physikalisch getrennt sein, d.h. auf zwei verschiedenen Servern installiert werden. Der Zugriff auf den Seafile Cluster erfolgt nun typischerweise nicht mehr über die IP-Adresse eines der beiden Server, sondern der Seafile Cluster verfügt über eine virtuelle IP, die im Regelbetrieb auf den Master und bei einem Ausfall auf den Slave verweist. Auch auf Netzwerkebene sollten man Single-Points of Failure vermeiden und so sollten Master und Slave nicht über den gleichen Netzwerkswitch angebunden sein.
Seafile unterstützt diverse Backends, die potentiell hochverfügbar gemacht werden können. Die meisten Kunden besitzen bereits ein zentralisiertes Speichersystem, welches vom Seafile Cluster dann verwendet wird. Den unterschiedlichen Backendmethoden werden wir einen eigenen Artikel widmen und daher in diesem Artikel nicht näher darauf eingehen.
Der hier beschriebene Minimalaufbau bietet Schutz gegen Ausfälle einzelner Server. Andererseits ist dieser Aufbau ineffizient im Sinne der Ressourcennutzung. Der Server im Slave Modus kommt nur bei einem Ausfall des Masters zum Einsatz. Bei hoher Last bleibt seine Kapazität ungenutzt.
Eine effiziente Nutzung der eingesetzten Ressourcen erreicht man durch den Einsatz von Load Balancern. Ihre Aufgabe ist es, die eingehenden Anfragen entgegen zu nehmen und auf die die Frontend-Knoten zu verteilen.
Durch den Einsatz eines Load Balancers lässt sich ein Seafile Cluster bei Bedarf auch um zusätzliche Rechenleistung ergänzen. Bei steigenden Zugriffen wird einfach ein weiterer Frontend-Knoten in den Cluster eingefügt. Über den Load Balancer wird der zusätzliche Knoten angesprochen.
Zur Vermeidung eines Single-Points of Failure empfiehlt es sich, auch die Load-Balancer redundant auszulegen, diese über die vorhandene Serverhardware zu verteilen und per virtueller IP anzusprechen. Anstelle von virtualisierten, lokalen Load Balancern können auch externe Load Balancer genutzt werden. Amazon AWS hat mit dem Elastic Load Balancer ein entsprechendes Produkt im Angebot. Eine weitere Alternative sind Hardware Load Balancer von Herstellern wie Cisco, Citrix und Barracuda.
Die notwendigen Schritte zum Aufsetzen eines Seafile Clusters sind detailliert im englischen Seafile Manual beschrieben. Der Aufbau eines Seafile Clusters ist mit ungefähr einem Tag deutlich aufwändiger als ein 1-Knoten System. Wenn man diese Aufgabe jedoch gewissenhaft erledigt, wird man mit einem Seafile System belohnt, das sowohl Ausfallsicherheit als auch eine optimierte Zugriffsverteilung bietet.
Unser deutscher Support Partner datamate berät Sie gerne bei Planung und Einrichtung eines Seafile Clusters. Weitere Informationen zum Thema Seafile Cluster finden Sie im Folgeartikel Erweiterte Clusterkonfigurationen für den Einsatz in weltweiten Unternehmensnetzwerken.
Ein Cluster alleine bietet noch keine Hochverfügbarkeit. Für Verfügbarkeiten über 99% müssen sämtliche dienstkritischen Komponenten berücksichtigt werden. Dazu gehören neben Seafile selbst auch Netzwerkswitches und -kabel, Stromversorgung, Internetleitung sowie externe IP-Adressen. Auch menschliche Fehler sind nicht zu vernachlässigen.
Sollte es Ihrem Unternehmen weniger um eine Verfügbarkeit nahe der 100% gehen und ist für Sie die Planbarkeit der Downtime von größerer Bedeutung, dann ist ein Real-Time Backup Server ein alternativer Ansatz zur Reduzierung der Ausfallzeit. Ein solcher Backup Server hält zu jeder Zeit den aktuellen Datenbestand vor und springt bei Problemen ein. Mehr zu dessen Eigenschaften finde Sie in diesem Artikel.