Mit großem Dateibaum meine ich ungefähr 200.000 Dateien, die ständig wachsen. Eine relativ kleine Anzahl von Dateien wird jedoch in einer bestimmten Stunde geändert.
Mit bidirektional meine ich, dass Änderungen auf beiden Servern auftreten können und auf den anderen übertragen werden müssen, sodass rsync nicht geeignet erscheint.
Mit Ferne meine ich, dass sich die Server beide in Rechenzentren befinden, aber geografisch voneinander entfernt sind. Derzeit gibt es nur 2 Server, die sich jedoch im Laufe der Zeit erweitern können.
In Echtzeit ist es in Ordnung, dass zwischen den Synchronisierungen eine kurze Wartezeit liegt, aber das Ausführen eines Cron alle 1-2 Minuten scheint nicht richtig zu sein, da sich ein sehr kleiner Teil der Dateien in einer bestimmten Stunde ändern kann, geschweige denn in einer Minute.
BEARBEITEN : Dies läuft auf VPS, so dass ich möglicherweise auf die Arten von Kernel-Level-Sachen beschränkt bin, die ich tun kann. Außerdem sind die VPS nicht ressourcenreich, weshalb ich Lösungen, die viel RAM erfordern (wie Gluster?), Scheuen würde.
Was ist der beste / am meisten akzeptierte Ansatz, um dies zu erreichen? Dies scheint ein allgemeines Bedürfnis zu sein, aber ich konnte noch keinen allgemein akzeptierten Ansatz finden, was überraschend war. (Ich suche die Sicherheit der Massen. :)
Ich bin auf lsyncd gestoßen , um eine Synchronisierung auf der Dateisystem-Änderungsstufe auszulösen. Das scheint klug, wenn auch nicht sehr häufig, und ich bin ein bisschen verwirrt von den verschiedenen lsyncd-Ansätzen. Es gibt nur die Verwendung von lsyncd mit rsync, aber es scheint, dass dies für die Bidirektionalität fragil ist, da rsync keine Vorstellung von Arbeitsspeicher hat (z. B. zu wissen, ob eine gelöschte Datei auf A auf B gelöscht werden soll oder ob es sich um eine neue Datei auf B handelt das sollte nach A) kopiert werden. lipsync scheint nur eine lsyncd + rsync-Implementierung zu sein, oder?
Dann gibt es lsyncd mit csync2 , wie folgt : https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ... Ich neige zu diesem Ansatz, aber csync2 ist ein bisschen schrullig, obwohl ich es erfolgreich getestet habe. Ich bin größtenteils besorgt, dass ich nicht viele Community-Bestätigungen für diese Methode finden konnte.
Die Leute hier scheinen Unison sehr zu mögen, aber es scheint, dass es sich nicht mehr in der aktiven Entwicklung befindet und es nicht klar ist, dass es einen automatischen Trigger wie lsyncd hat.
Ich habe gesehen, wie Gluster erwähnt wurde, aber vielleicht zu viel für das, was ich brauche?
UPDATE: Letztendlich habe ich die ursprüngliche Lösung gewählt, die ich erwähnt habe: lsyncd + csync2. Es scheint ganz gut zu funktionieren, und ich mag den architektonischen Ansatz, dass die Server sehr locker verbunden sind, sodass jeder Server unabhängig von der Verbindungsqualität für sich unbegrenzt arbeiten kann.
Antworten:
DRBD im Dual-Primary- Modus mit einem Proxy ist eine Option.
quelle
Warum nicht das gleiche Dateisystem über NFS synchronisieren?
quelle
Die Implementierung eines verteilten Dateisystems ist wahrscheinlich besser, als dies zusammen mit Tools und Skripten zu hacken, insbesondere wenn der Cluster von Servern wächst. Sie werden auch in der Lage sein, mit einem heruntergefahrenen Knoten besser umzugehen.
Ich denke nicht, dass Gluster (oder AFS) übertrieben ist.
quelle
In Ihrem Fall würde ich eine Kombination aus DRBD im Dual-Primary-Modus und gfs oder ocfs empfehlen.
Der Nachteil von DRBD im Dual-Primary-Modus ist, dass es im synchronen Modus ausgeführt wird. Aber die Schreibgeschwindigkeit scheint hier nicht wichtig zu sein, oder?
Eine Alternative zu DRBD könnte ein Soft-Raid1 mit vielen (2+) iSCSI-Zielen sein - ich würde jedoch DRBD mit zwei Knoten bevorzugen.
quelle
Wie oben gezeigt, gibt es viele Lösungen, jede mit ihren Vor- und Nachteilen.
Ich denke, ich würde in Betracht ziehen, den gesamten Baum der Versionskontrolle zu unterstellen ( z. B. Subversion ) und in regelmäßigen Abständen in Cron-Jobs von beiden Servern einzuchecken / zu aktualisieren.
quelle
Nachdem ich soeben eine Suche in Bezug auf das Gleiche beendet habe, gehe ich mit Glanz davon. Ich habe jedoch keine Leistungstests durchgeführt oder gefunden.
quelle