Verwenden von GlusterFS zur einfachen Replikation

Verwenden von GlusterFS zur einfachen Replikation

Anfängerfrage. Ich muss das hier bauen:

  • /sharedOrdner ~500 GB an Dateien, jede Datei ~1 MB.
  • Zwei Boxen (Server1 und Server2), verbunden über ein 1-GB-LAN
  • Jede Box muss Lese-/Schreibzugriff auf die Dateien haben, daher sind beide Clients
  • Ich möchte, dass die Dateien auf beiden Boxen repliziert werden. Jedes Mal, wenn eine Datei auf einen Server geschrieben wird, sollte die gleiche Datei auf dem anderen vorhanden sein.

Meine Fragen zu GlusterFS:

  • Es dupliziert die Dateien auf derselben Box?. Beispielsweise befinden sich die Dateien auf /sharedund die Einbindung in /mnt/shared. Es wird auf jedem Server 1 GB Speicherplatz benötigt?
  • Soll ich stattdessen direkt das Dateisystem verwenden und lokal darauf schreiben /shared? Funktioniert die Replikation auf diese Weise, ohne einen Client einzubinden?

Wenn jemand eine andere Möglichkeit kennt, dieses Setup durchzuführen, wäre ich sehr dankbar. Vielen Dank im Voraus.

Antwort1

Tatsächlich ist Gluster für dieses Szenario perfekt geeignet. Sie erhalten bidirektionale Replikation und die Möglichkeit, das Dateisystem von beiden Rechnern aus zu mounten, was Ihnen (theoretisch) die doppelte effektive E/A-Kapazität von NFS und aktives Failover bietet, falls eine der Boxen ausfällt.

Das Problem bei dieser Art der Ausführung von Active rsync ist die Blockierung von I/O aufgrund von Dateisperren. Abhängig von Ihrer Anwendung und der Änderung der Daten kann dies irrelevant oder katastrophal sein! Verteilte Dateisysteme haben sehr spezifische Sperrsemantiken, die dies verhindern. Selbst wenn inotify heutzutage eine bessere Sperrung hat (als ich es das letzte Mal ausprobiert habe, war dies nicht der Fall), können Ihre Dateizugriffe blockiert werden, je nachdem, ob Ihr Netzwerk mit den Änderungen zurechtkommt. Dies sind alles theoretische Vorbehalte, aber es lohnt sich, sie zu berücksichtigen, je nachdem, was Ihre Anwendung tut.

Antwort2

Ich habe es endlich geschafft, das Problem mit GlusterFS in beiden Boxen zu lösen. Einige Dinge, die ich dabei gelernt habe:

  • Zuerst habe ich ein generisches RAID 1-Setup ausprobiert. Das Hauptproblem dabei ist, dass der Client immer TCP verwendet, um beide Server zu kontaktieren, selbst wenn sich einer von ihnen auf derselben Maschine befindet. Daher muss ich die Clientkonfigurationen ändern, um das lokale TPC-Volume durch ein Direktzugriffs-Volume (Speicher/POSIX) zu ersetzen.
  • Um die Netzwerkverbindung nicht zu überlasten, verwendet jeder Client den lokalen Speicher mit der Direktive option read-subvolume. Um die RAID1-Integrität zu wahren, prüft GlusterFS natürlich auch immer andere Volumes, aber die eigentliche Datei wird direkt von der Festplatte abgerufen.
  • Die Leistung ist gut, aber der Client-Prozess scheint Speicherprobleme zu haben. Ich denke, es hängt mit dem Quickread-Volumen zusammen, ich muss das weiter untersuchen.

Geänderte Client-Konfiguration:

# Server1 configuration (RAID 1)
volume server2-tcp
    type protocol/client
    option transport-type tcp
    option remote-host server2
    option transport.socket.nodelay on
    option transport.remote-port 6996
    option remote-subvolume brick1
end-volume

volume posix-local
    type storage/posix
    option directory /shared
end-volume

volume locks-local
    type features/posix-locks
    subvolumes posix-local
end-volume

volume brick-local
    type performance/io-threads
    option thread-count 8
    subvolumes locks-local
end-volume

volume mirror-0
    type cluster/replicate
    option read-subvolume brick-local
    subvolumes brick-local server2-tcp
end-volume

.....

Beantwortung meiner beiden Fragen:

Werden die Dateien auf derselben Box dupliziert?

Nein, das FS wird mit FUSE gemountet. Aktuelle /etc/fstab-Zeile:

/etc/glusterfs/client.vol /mnt/shared glusterfs-Standardwerte 0 0

Soll ich stattdessen direkt das Dateisystem verwenden und lokal auf /shared schreiben? Funktioniert die Replikation auf diese Weise, ohne einen Client zu mounten?

Nein, verwenden Sie zum Lesen/Schreiben immer gemountete Volumes. Die direkte Verwendung des Dateisystems kann zu Inkonsistenzen führen.

Antwort3

Es wäre viel einfacher einzurichtenrsync zur aktiven Spiegelung, oder richten Sie einfach eine NFS-Freigabe ein und lassen Sie beide vom selben Laufwerk ziehen.

verwandte Informationen