GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Automatische Dateireplikation (Mirror) über zwei Speicherserver mit GlusterFS 3.2.x auf Ubuntu 12.10

Dieses Tutorial zeigt, wie Sie einen Hochverfügbarkeitsspeicher mit zwei Speicherservern (Ubuntu 12.10) einrichten, die GlusterFS verwenden. Jeder Speicherserver ist ein Spiegel des anderen Speicherservers, und Dateien werden automatisch über beide Speicherserver repliziert. Das Client-System (auch Ubuntu 12.10) kann auf den Speicher zugreifen, als wäre es ein lokales Dateisystem. GlusterFS ist ein geclustertes Dateisystem, das auf mehrere Petabyte skaliert werden kann. Es aggregiert verschiedene Speicherbausteine ​​über Infiniband-RDMA- oder TCP/IP-Verbindungen zu einem großen parallelen Netzwerkdateisystem. Storage Bricks können aus jeder handelsüblichen Hardware wie x86_64-Servern mit SATA-II-RAID und Infiniband-HBA hergestellt werden.

Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

In diesem Tutorial verwende ich drei Systeme, zwei Server und einen Client:

  • server1.example.com:IP-Adresse 192.168.0.100 (Server)
  • server2.example.com:IP-Adresse 192.168.0.101 (Server)
  • client1.example.com:IP-Adresse 192.168.0.102 (Client)

Da wir alle Schritte dieses Tutorials mit Root-Rechten ausführen werden, können wir entweder allen Befehlen in diesem Tutorial die Zeichenfolge sudo voranstellen oder wir werden sofort root, indem wir

eingeben
sudo su

Alle drei Systeme sollten in der Lage sein, die Hostnamen der anderen Systeme aufzulösen. Wenn dies nicht über DNS möglich ist, sollten Sie die Datei /etc/hosts so bearbeiten, dass sie auf allen drei Systemen wie folgt aussieht:

vi /etc/hosts
127.0.0.1 localhost.localdomain localhost192.168.0.100 server1.example.com server1192.168.0.101 server2.example.com server2192.168.0.102 client1.example.com client1# Die folgenden Zeilen sind für IPv6-fähige Hosts wünschenswert::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allroutersff02 ::3 ip6-allhosts

(Es ist auch möglich, IP-Adressen anstelle von Hostnamen im folgenden Setup zu verwenden. Wenn Sie lieber IP-Adressen verwenden, müssen Sie sich nicht darum kümmern, ob die Hostnamen aufgelöst werden können oder nicht.)

2 Einrichten der GlusterFS-Server

server1.beispiel.com/server2.beispiel.com:

GlusterFS ist als Paket für Ubuntu 12.10 verfügbar, daher können wir es wie folgt installieren:

apt-get install glusterfs-server

Der Befehl

glusterfsd --version

sollte jetzt die gerade installierte GlusterFS-Version anzeigen (in diesem Fall 3.2.5):

[email protected]:~# glusterfsd --version
glusterfs 3.2.5 erstellt am 31. Januar 2012 07:39:58
Repository-Überarbeitung:git://git.gluster.com/glusterfs .git
Copyright (c) 2006-2011 Gluster Inc.
GlusterFS wird mit ABSOLUT KEINER GEWÄHRLEISTUNG geliefert.
Sie dürfen Kopien von GlusterFS unter der Bedingungen der GNU General Public License.
[email protected]:~#

Wenn Sie eine Firewall verwenden, stellen Sie sicher, dass die TCP-Ports 111, 24007, 24008, 24009 (24009 + Anzahl der Bricks auf allen Volumes) auf server1.example.com und server2.example.com geöffnet sind.

Als Nächstes müssen wir server2.example.com zum vertrauenswürdigen Speicherpool hinzufügen (bitte beachten Sie, dass ich alle GlusterFS-Konfigurationsbefehle von server1.example.com aus ausführe, Sie sie aber auch von server2.example.com ausführen können, da die Konfiguration zwischen den GlusterFS-Knoten repliziert - stellen Sie nur sicher, dass Sie die richtigen Hostnamen oder IP-Adressen verwenden):

server1.beispiel.com:

Führen Sie auf server1.example.com

aus
gluster peer probe server2.example.com
[email protected]:~# gluster peer probe server2.example.com
Probe erfolgreich
[email protected]:~#

Der Status des vertrauenswürdigen Speicherpools sollte jetzt ungefähr so ​​aussehen:

Gluster-Peer-Status
[email protected]:~# Gluster-Peer-Status
Anzahl der Peers:1
Hostname:server2.example.com
UUID:7cd93007-fccb-4fcb-8063-133e6ba81cd9
Status:Peer im Cluster (verbunden)
[email protected]:~#

Als nächstes erstellen wir die Freigabe mit dem Namen testvol mit zwei Replikaten (bitte beachten Sie, dass die Anzahl der Replikate in diesem Fall gleich der Anzahl der Server ist, da wir die Spiegelung einrichten möchten) auf server1.example.com und server2.example.com in der /data-Verzeichnis (dieses wird erstellt, wenn es nicht existiert):

gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data
[email protected]:~# gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data
Die Erstellung des Volumes testvol war erfolgreich. Bitte starten Sie das Volume, um auf die Daten zuzugreifen.
[email protected]:~#

Lautstärke starten:

gluster volume start testvol

Es ist möglich, dass der obige Befehl Ihnen mitteilt, dass die Aktion nicht erfolgreich war:

[email protected]:~# gluster volume start testvol
Das Starten von volume testvol war nicht erfolgreich
[email protected]:~#

In diesem Fall sollten Sie die Ausgabe von...

überprüfen

server1.beispiel.com/server2.beispiel.com:

netstat -tap | grep glusterfsd

auf beiden Servern.

Wenn Sie eine solche Ausgabe erhalten...

[email protected]:~# netstat -tap | grep glusterfsd 
tcp 0 0*:24009*:*Hören 1548 /glusterfsd
TCP 0 0 localhost.localdom:1019 localhost.localdo:24007 gegründet 1548 /glusterfsd
[E -Mail geschützt]:~ #

... alles ist in Ordnung, aber wenn Sie keine Ausgabe bekommen...

[email protected]:~# netstat -tap | grep glusterfsd
[email protected]:~#

... den GlusterFS-Daemon auf dem entsprechenden Server (in diesem Fall server2.example.com) neu starten:

server2.beispiel.com:

/etc/init.d/glusterfs-server restart

Überprüfen Sie dann die Ausgabe von...

netstat -tap | grep glusterfsd

... wieder auf diesem Server - es sollte jetzt so aussehen:

[email protected]:~# netstat -tap | grep glusterfsd 
tcp 0 0*:24010*:*Hören 1458 /glusterfsd
tcp 0 0 localhost.localdom:1021 localhost.localdo:24007 etabliert 1458 /glusterfsd
[E -Mail geschützt]:~ #

Nun zurück zu server1.example.com:

server1.beispiel.com:

Sie können den Status des Volumes mit dem Befehl

überprüfen
Gluster-Lautstärkeinfo
[email protected]:~# Informationen zum Gluster-Volumen
Name des Volumes:testvol
Typ:Replizieren
Status:Gestartet
Anzahl der Bricks:2
Transporttyp:tcp
Bricks:
Brick1 :server1.example.com:/data
Brick2:server2.example.com:/data
[email protected]:~#

Standardmäßig können sich alle Clients mit dem Volume verbinden. Wenn Sie nur client1.example.com (=192.168.0.102) Zugriff gewähren möchten, führen Sie Folgendes aus:

gluster volume set testvol auth.allow 192.168.0.102

Bitte beachten Sie, dass für die IP-Adressen Platzhalter verwendet werden können (z. B. 192.168.*) und dass Sie mehrere IP-Adressen durch Komma getrennt angeben können (z. B. 192.168.0.102,192.168.0.103).

Die Volume-Info sollte nun den aktualisierten Status anzeigen:

Gluster-Lautstärkeinfo
[email protected]:~# Informationen zum Gluster-Volumen
Name des Volumes:testvol
Typ:Replizieren
Status:Gestartet
Anzahl der Bricks:2
Transporttyp:tcp
Bricks:
Brick1 :server1.example.com:/data
Brick2:server2.example.com:/data
Optionen neu konfiguriert:
auth.allow:192.168.0.102
[email protected]:~#

3 Einrichten des GlusterFS-Clients

client1.beispiel.com:

Auf dem Client können wir den GlusterFS-Client wie folgt installieren:

apt-get install glusterfs-client

Dann erstellen wir folgendes Verzeichnis:

mkdir /mnt/glusterfs

Das ist es! Jetzt können wir das GlusterFS-Dateisystem mit dem folgenden Befehl in /mnt/glusterfs einhängen:

mount.glusterfs server1.example.com:/testvol /mnt/glusterfs

(Anstelle von server1.example.com können Sie im obigen Befehl auch server2.example.com verwenden!)

Sie sollten nun die neue Freigabe in den Ausgaben von...

sehen
einhängen
[email protected]:~# mount
/dev/mapper/server3-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec ,nosuid,nodev)
sysfs auf /sys geben Sie sysfs (rw,noexec,nosuid,nodev) ein
fusectl auf /sys/fs/fuse/connections geben Sie fusectl (rw)
keine auf / sys/kernel/debug Typ debugfs (rw)
keine auf /sys/kernel/security Typ securityfs (rw)
udev auf /dev Typ devtmpfs (rw,mode=0755)
devpts auf /dev/pts geben Sie devpts ein (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run geben Sie tmpfs ein (rw,noexec,nosuid,size=10%,mode=0755)
keine bei /run/lock geben Sie tmpfs (rw,noexec,nosuid,nodev,size=5242880) ein
keine bei /run/shm geben Sie tmpfs (rw,nosuid,nodev)
/dev/sda1 ein /boot type ext2 (rw)
server1.example.com:/testvol on /mnt/glusterfs type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
[email protected]:~#

... und ...

df -h
[email protected]:~# df -h
Dateisystem            Größe  Verwendet Verfügbar Verwendung % Gemountet auf
/dev/mapper/server3-root
                       29G  1.1G   27G   4 % /
Udev 238m 4,0K 238m 1%/Dev
TMPFS 99M 212K 99m 1%/Lauf
Keine 5,0 m 0 5,0 m 0%/run/lock
Keine 247m 0 247m 0%/%/ run/shm
/dev/sda1             228M   24M  193M  11 % /boot
server1.example.com:/testvol
                       29G  1.1G   27G   4 % /mnt/glusteres [mail geschützt]:~#

Anstatt die GlusterFS-Freigabe manuell auf dem Client zu mounten, könnten Sie /etc/fstab so ändern, dass die Freigabe automatisch gemountet wird, wenn der Client startet.

Öffnen Sie /etc/fstab und fügen Sie die folgende Zeile an:

vi /etc/fstab
[...]server1.example.com:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0

(Auch hier können Sie anstelle von server1.example.com auch server2.example.com verwenden!)

Um zu testen, ob Ihre modifizierte /etc/fstab funktioniert, starten Sie den Client neu:

Neustart

Nach dem Neustart sollten Sie die Freigabe in den Ausgaben von ...

finden
df -h

... und ...

einhängen

4 Testen

Lassen Sie uns nun einige Testdateien auf der GlusterFS-Freigabe erstellen:

client1.beispiel.com:

berühre /mnt/glusterfs/test1
berühre /mnt/glusterfs/test2

Lassen Sie uns nun das /data-Verzeichnis auf server1.example.com und server2.example.com überprüfen. Die Dateien test1 und test2 sollten auf jedem Knoten vorhanden sein:

server1.beispiel.com/server2.beispiel.com:

ls -l /data
[email protected]:~# ls -l /data
total 8
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test2
[email protected]:~#

Jetzt fahren wir server1.example.com herunter und fügen einige Dateien auf der GlusterFS-Freigabe auf client1.example.com hinzu/löschen sie.

server1.beispiel.com:

shutdown -h now

client1.beispiel.com:

touch /mnt/glusterfs/test3
touch /mnt/glusterfs/test4
rm -f /mnt/glusterfs/test2

Die Änderungen sollten im Verzeichnis /data auf server2.example.com sichtbar sein:

server2.beispiel.com:

ls -l /data
[email protected]:~# ls -l /data
total 8
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test3
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test4
[E-Mail-geschützt]:~#

Lassen Sie uns server1.example.com erneut booten und einen Blick auf das /data-Verzeichnis werfen:

server1.beispiel.com:

ls -l /data
[email protected]:~# ls -l /data
total 8
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test2
[email protected]:~#

Wie Sie sehen, hat server1.example.com die Änderungen nicht bemerkt, die während des Ausfalls vorgenommen wurden. Dies ist einfach zu beheben, wir müssen lediglich einen Lesebefehl auf der GlusterFS-Freigabe auf client1.example.com aufrufen, z. B.:

client1.beispiel.com:

ls -l /mnt/glusterfs/
[email protected]:~# ls -l /mnt/glusterfs/
total 8
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test3
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test4
[email protected]:~#

Sehen Sie sich jetzt noch einmal das /data-Verzeichnis auf server1.example.com an, und Sie sollten sehen, dass die Änderungen auf diesen Knoten repliziert wurden:

server1.beispiel.com:

ls -l /data
[email protected]:~# ls -l /data
total 4
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test3
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test4
[E-Mail-geschützt]:~#

  • GlusterFS:http://www.gluster.org/
  • GlusterFS 3.2-Dokumentation:http://download.gluster.com/pub/gluster/glusterfs/3.2/Documentation/AG/html/index.html
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Hochverfügbarkeitsspeicher mit GlusterFS auf Debian 8 – Spiegelung über zwei Speicherserver

  2. Hochverfügbarkeitsspeicher mit GlusterFS auf CentOS 7 – Spiegelung über zwei Speicherserver

  3. Hochverfügbarer Speicher mit GlusterFS 3.0.x auf Debian Squeeze – Automatische Dateireplikation über zwei Speicherserver hinweg

  4. Hochverfügbarer Speicher mit GlusterFS 3.2.x auf Debian Wheezy – Automatische Dateireplikation (Mirror) über zwei Speicherserver

  5. Striping über vier Speicherknoten mit GlusterFS auf Fedora 12

Hochverfügbarkeitsspeicher mit GlusterFS auf Ubuntu 18.04 LTS

Striping über vier Speicherknoten mit GlusterFS 3.2.x auf CentOS 6.3

Verteilter Speicher auf vier Speicherknoten mit GlusterFS 3.2.x auf CentOS 6.3

Verteilter replizierter Speicher über vier Speicherknoten mit GlusterFS 3.2.x auf CentOS 6.3

Hochverfügbarer Speicher mit GlusterFS auf Fedora 12 – Automatische Dateireplikation (Mirror) über zwei Speicherserver

Verteilter Speicher über vier Speicherknoten mit GlusterFS auf Fedora 12