Ist GlusterFS eine gute Wahl, um Webserver synchron zu halten?

9

Ich habe 2 Webserver, mit der Möglichkeit, unterwegs weitere Server hinzufügen zu müssen. Im Moment halte ich diese Server mit lsyncd + csync2 synchron. In Bezug auf die Leistung funktioniert es gut, da sich alle Dateien auf beiden Servern befinden (kein Netzwerkzugriff erforderlich, um Dateien lokal zu öffnen), in anderen Fällen jedoch nicht so gut.

Ein Beispiel hierfür ist, wenn ich eine Datei auf Server 1 lösche und sofort eine neue Datei auf Server 1 mit demselben Namen hochlade. Die Datei wird dann in der Zwischenzeit von Server 2 gelöscht, wodurch die neu hochgeladene Datei auf Server 1 gelöscht wird, wenn Server 2 das Löschereignis an Server 1 sendet, um den "Aktualisierungskreis" zu schließen.

Ich kann mir nicht helfen zu denken, dass es einen besseren Weg geben muss, um Server synchron zu halten. Ich habe mir GlusterFS angesehen und sehe, dass von einem Setup, bei dem alle Dateien auf alle Server repliziert werden, abgeraten wird. Ich verwende jedoch CMS-Systeme wie Drupal auf diesen Servern. Solche CMS-Systeme öffnen oft einige Dateien, und ich mache mir Sorgen, dass zu viel Netzwerkverkehr, um diese Dateien zu erhalten, die Anforderungen verlangsamt.

Wäre es eine Idee, lsyncd + csync2 durch GlusterFS zu ersetzen, das so eingerichtet ist, dass alle Dateien auf alle Knoten repliziert werden, oder ist das eine schlechte Idee?

sbrattla
quelle
2
Ich kann Ihr Problem hier falsch verstehen, aber warum nicht Netzwerkspeicher verwenden, der von Servern gemeinsam genutzt wird?
Mveroone
1
@Kwaio: Ich möchte alle Webserver (sowohl Skripte als auch vom Benutzer hochgeladene Inhalte) "spiegeln", da dies Ausfallzeiten verhindert, wenn auf dem Server, auf dem sich der gemeinsam genutzte Speicher befindet, ein Fehler auftritt. Mit anderen Worten, ich möchte mich nicht auf ein Setup verlassen, bei dem alle Webserver wieder auf einen einzigen Speicher von Dateien angewiesen sind.
Sbrattla
Warum dann nicht ein hochverfügbarer Netzwerkspeichercluster?
Mveroone
Sicher, aber was bedeutet das? Hardware?
Sbrattla
Ich bin kein Spezialist, aber das bedeutet, dass Ihr Netzwerkspeicher in einer Master-Slave-Architektur über 2 Cluster gespiegelt wird und ein System, das bei einem Ausfall des Masters wechselt. Die meisten Anbieter von Netzwerkspeichergeräten haben Lösungen dafür, selbst wenn Sie diese selbst mit Linux-Appliances erstellen könnten, was eine Menge Entwicklung erfordern würde.
Mveroone

Antworten:

2

BitTorrent Sync kann die Tat für Sie erledigen. Ich verwende es, um Dateien zwischen einigen internen Servern in meinem Haus synchron zu halten, und es macht den Job wunderbar. Das andere, woran Sie denken müssen, ist die Backend-Datenbank, wenn Ihre App ein CMS verwendet. Stellen Sie sicher, dass eine MySQL-Replikation stattfindet oder etwas Ähnliches.

Whiskykilo
quelle
Das ist interessant. Wie geht BitTorrent Sync mit Konflikten um? Angenommen, ich habe 5 Webserver und eine Datei wird auf Server A aktualisiert. 2 Sekunden später wird dieselbe Datei auf Server C aktualisiert, bevor die Änderung auf A C erreicht hat. Verfügt die Software über Algorithmen zum Einrichten des Servers? gewinnt in diesen Fällen?
Sbrattla
Nach meinem Verständnis vergleicht BitTorrent Sync das Änderungsdatum und die Änderungszeit auf beiden Kopien und behält nur die neuesten Daten bei, was ideal oder für den Anwendungsfall schädlich sein könnte.
Whiskykilo
1

Gluster würde das Problem lösen, das Sie haben, weil es die Sperren halten, Änderungen verbreiten - die Datei auf allen anderen Knoten löschen kann, aber es kann zusätzliche Latenz hinzufügen, die ein Problem für einen Webserver sein kann. Die nächste Alternative ist DRBD + OCFS2 oder GFS, aber das ist wahrscheinlich komplexer, als wenn Sie mit Gluster das zugrunde liegende Dateisystem verwenden. Es funktioniert nicht auf Blockebene. Wenn Server nicht synchron sind, können Dateien nicht zu schwer repariert werden Es wird nicht so leicht beschädigt, weil das Gehirn gespalten ist.

Wir verwenden es für einen Mailserver und es ist ziemlich langsam für Verzeichnisse mit vielen Dateien. Sie sollten auf jeden Fall alles testen, bevor Sie es bereitstellen. Ich teste derzeit den NFS-Mount, da er für kleine Dateien besser funktioniert.

Jure1873
quelle
1

GlusterFS ist schwer zu implementieren. Bei Webdaten ist die Dateisynchronisierungsebene wie Unison viel einfacher bereitzustellen und zu warten.

DRBD ist eine perfekte Lösung, um die Datensynchronisation auf Blockebene zu halten. Sie müssen sie jedoch in ein spezielles Format wie OCFS2 oder ähnliches formatieren.

truongtx
quelle
GlusterFS ist nicht wie DRBD - es arbeitet nicht auf Blockebene, sondern auf Dateiebene. Aber ich bin mir sicher, dass Unison einfacher zu implementieren ist.
Jure1873
-3

Warum benutzt du kein Werkzeug wie eine Marionette ? Schreiben Sie einmal in eine Quelle und stellen Sie sie mit "Puppet Kick" oder "mcolletive" bereit für die Ziele bereit. Es ist gut dokumentiert. Bei Bedarf können Sie später problemlos Server hinzufügen.

Sie können sich auch auf Tools verlassen, die inotify verwenden, wie z. B. lsyncd, die auf Kernelebene arbeiten. Es sucht nach Änderungen in einem Ordner und löst eine Synchronisierung aus. Aber wenn ein Tool für die Synchronisierung von Dateien in einem Cluster wie csync2 nicht ausreicht, weiß ich nicht, was es sein wird.

Um sicherzugehen, werden die Änderungen auch auf Server 2 oder nur auf Server 1 vorgenommen?

Rosco
quelle
3
Downvoted - Puppet ist kein guter Weg, um Dateien zwischen Servern synchron zu halten. Es ist jedoch ein brillantes Tool zum Verwalten der Serverkonfiguration .
Craig Watson
Änderungen können auf jedem Server vorgenommen werden, da sie an einem Setup mit Lastenausgleich teilnehmen. Benutzer können Dateien auf einen beliebigen Server hochladen. Diese Datei sollte daher auf allen Servern verfügbar sein, da der Datenverkehr auf die Server verteilt wird.
Sbrattla
1
Nun, in diesem Fall ist Marionette nicht das, was Sie wollen (aber @Craig Watson, eine Datei ist immer noch eine Datei, Konfiguration oder HTML, es ist immer noch eine Datei). Ich bezweifle, dass GlusterFS für die Produktion bereit ist. Wenn Sie also wirklich etwas Sicheres wollen, sollten Sie einen NFS-Server mit hoher Verfügbarkeit verwenden.
Rosco