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?
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle
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?
quelle