GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

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

Dieses Tutorial zeigt, wie Data Striping (Segmentierung von logisch sequenziellen Daten, z. B. einer einzelnen Datei, sodass Segmente mehreren physischen Geräten im Round-Robin-Verfahren zugewiesen und somit gleichzeitig geschrieben werden können) über vier einzelne Speicherserver (auf denen CentOS ausgeführt wird) durchgeführt wird 6.3) mit GlusterFS. Das Client-System (auch CentOS 6.3) 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.

Bitte beachten Sie, dass diese Art von Speicher keine Hochverfügbarkeits-/Fehlertoleranzfunktionen bietet, wie dies bei repliziertem Speicher der Fall wäre.

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

1 Vorbemerkung

In diesem Tutorial verwende ich fünf Systeme, vier Server und einen Client:

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

Alle fünf 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 fünf Systemen wie folgt aussieht:

vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.100   server1.example.com     server1
192.168.0.101   server2.example.com     server2
192.168.0.102   server3.example.com     server3
192.168.0.103   server4.example.com     server4
192.168.0.104   client1.example.com     client1

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

(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 Zusätzliche Repositories aktivieren

server1.example.com/server2.example.com/server3.example.com/server4.example.com/client1.example.com:

Zuerst importieren wir die GPG-Schlüssel für Softwarepakete:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Dann aktivieren wir das EPEL6-Repository auf unseren CentOS-Systemen:

rpm --import https://fedoraproject.org/static/0608B895.txt

cd /tmp
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm -ivh epel-release-6- 7.noarch.rpm

yum install yum-priorities

Bearbeiten Sie /etc/yum.repos.d/epel.repo...

vi /etc/yum.repos.d/epel.repo

... und fügen Sie die Zeile priority=10 zum Abschnitt [epel] hinzu:

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[...]

3 Einrichten der GlusterFS-Server

server1.example.com/server2.example.com/server3.example.com/server4.example.com:

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

yum install glusterfs-server

Erstellen Sie die Systemstartlinks für den Gluster-Daemon und starten Sie ihn:

chkconfig --levels 235 glusterd on
/etc/init.d/glusterd start

Der Befehl

glusterfsd --version

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

[[email protected] ~]# glusterfsd --version
glusterfs 3.2.7 erstellt am 11. Juni 2012 13:22:28
Repository-Überarbeitung:git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2011 Gluster Inc.
GlusterFS wird mit ABSOLUT KEINER GARANTIE geliefert.
Sie dürfen Kopien von GlusterFS unter den Bedingungen weitergeben die 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, server2.example.com, server3.example.com und geöffnet sind server4.beispiel.com.

Als nächstes müssen wir server2.example.com, server3.example.com und server4.example.com zum vertrauenswürdigen Speicherpool hinzufügen (bitte beachten Sie, dass ich alle GlusterFS-Konfigurationsbefehle von server1.example.com aus ausführe, aber Sie können als Führen Sie sie gut von server2.example.com oder server3.example.com oder server4.example.com aus, da die Konfiguration zwischen den GlusterFS-Knoten repliziert wird - 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
Gluster-Peer-Probe server3.example.com
Gluster-Peer-Probe server4.example.com

Die Ausgabe sollte wie folgt aussehen:

[[email protected] ~]# gluster peer probe server2.example.com
Prüfung 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:3

Hostname:server2.example.com
Uuid:600ff607-f7fd-43f6-af8d-419df703376d
Status:Peer im Cluster (verbunden)

Hostname:server3.example.com
Uuid:1d6a5f3f-c2dd-4727-a050-0431772cc381
Status:Peer im Cluster (verbunden)

Hostname:server4.example.com
Uuid:0bd9d445-0b5b-4a91-be6f-02b13c41d5d6
Status:Peer im Cluster (verbunden)
[[email protected] ~]#

Als Nächstes erstellen wir die Striped-Freigabe mit dem Namen testvol (bitte beachten Sie, dass die Anzahl der Stripes in diesem Fall gleich der Anzahl der Server ist) auf server1.example.com, server2.example.com, server3.example.com und server4.example .com im /data-Verzeichnis (dieses wird erstellt, wenn es nicht existiert):

gluster volume create testvol stripe 4 transport tcp server1.example.com:/data server2.example.com:/data server3.example.com:/data server4.example.com:/data 

[[email protected] ~]# gluster volume create testvol stripe 4 transport tcp server1.example.com:/data server2.example.com:/data server3.example.com:/data server4.example.com:/data
Erstellung des Volumens 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.example.com/server2.example.com/server3.example.com/server4.example.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 1365 /glusterfsd
TCP 0 0 LOCALHOST:1023 LOCALHOST:24007 Erstellt 1365 /glusterfsd
tcp 0 0 server1.example.com:24009 server1.example.com:1023    EINRICHTET 1365/glusterfsd
[[email protected] ~]#

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

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

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

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

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

server2.example.com/server3.example.com/server4.example.com:

/etc/init.d/glusterfsd restart 

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

netstat -tap | grep glusterfsd

... wieder auf diesen Servern - es sollte jetzt so aussehen:

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

[[email protected] ~]# netstat -tap | grep glusterfsd
tcp 0 0*:24009*:*Hören 1311 /glusterfsd
TCP 0 0 localhost.localdom:1018 localhost.localdo:24007 Erstellt 1311 /glusterfsd
[[E -Mail -Protected] ~ ]#

[[email protected] ~]# netstat -tap | grep glusterfsd
tcp 0 0*:24009*:*Hören 1297 /glusterfsd
TCP 0 0 localhost.localdom:1019 localhost.localdo:24007 gegründet 1297 /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 volume info
[[email protected] ~]# gluster volume info

Volume-Name:testvol
Typ:Stripe
Status:Gestartet
Anzahl der Bricks:4
Transporttyp:tcp
Bricks:
Brick1:server1. example.com:/data
Brick2:server2.example.com:/data
Brick3:server3.example.com:/data
Brick4:server4.example.com:/data
[[E-Mail geschützt] ~]#

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

gluster volume set testvol auth.allow 192.168.0.104

Bitte beachten Sie, dass für die IP-Adressen Wildcards verwendet werden können (z. B. 192.168.*) und mehrere IP-Adressen durch Komma getrennt angegeben werden können (z. B. 192.168.0.104,192.168.0.105).

Die Volume-Info sollte nun den aktualisierten Status anzeigen:

gluster volume info
[[email protected] ~]# gluster volume info

Volume-Name:testvol
Typ:Stripe
Status:Gestartet
Anzahl der Bricks:4
Transporttyp:tcp
Bricks:
Brick1:server1. example.com:/data
Brick2:server2.example.com:/data
Brick3:server3.example.com:/data
Brick4:server4.example.com:/data
Optionen neu konfiguriert:
auth.allow:192.168.0.104
[[email protected] ~]#

4 Einrichten des GlusterFS-Clients

client1.beispiel.com:

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

yum 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 oder server3.example.com oder server4.example.com verwenden!)

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

sehen
mount

[[email protected] ~]# mount
/dev/mapper/vg_client1-LogVol00 on / geben Sie ext4 (rw) ein
proc on /proc geben Sie proc (rw) ein
sysfs on /sys geben Sie ein sysfs (rw)
devpts auf /dev/pts geben Sie devpts (rw,gid=5,mode=620) ein
tmpfs auf /dev/shm geben Sie tmpfs (rw)
/dev/sda1 ein bei /boot ext4 (rw) eingeben
keine bei /proc/sys/fs/binfmt_misc binfmt_misc (rw) eingeben
sunrpc bei /var/lib/nfs/rpc_pipefs rpc_pipefs (rw) eingeben
server1.example.com:/testvol auf /mnt/glusterfs geben Sie fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
[[email protected] ~]#

ein

... und ...

df -h

[[email protected] ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_client1-LogVol00
                     9.7G  1.7G  7.5G  /
/> TMPFS 499m 0 499m 0%/Dev/SHM
/dev/sda1 504m 39m 440m 9%/boot
server1.example.com:/testvol
116G 4,2G 106G 4%/ mnt/glusterfs
[[email protected] ~]#

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 oder server3.example.com oder server4.example.com verwenden!)

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

reboot 

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

finden
df -h 

... und ...

mount

5 Testen

Lassen Sie uns nun eine große Testdatei auf der GlusterFS-Freigabe erstellen:

client1.beispiel.com:

dd if=/dev/zero of=/mnt/glusterfs/test.img bs=1024k count=1000
ls -l /mnt/glusterfs

[[email protected] ~]# ls -l /mnt/glusterfs
insgesamt 1024032
-rw-r--r-- 1 root root 1048576000 2012-12-17 17:31 test.img
[[email protected] ~]#

Lassen Sie uns nun das /data-Verzeichnis auf server1.example.com, server2.example.com, server3.example.com und server4.example.com überprüfen. Sie sollten die Datei test.img auf jedem Knoten sehen, jedoch mit unterschiedlichen Größen (aufgrund von Data Striping):

server1.beispiel.com:

ls -l /data

[[email protected] ~]# ls -l /data
total 256008
-rw-r--r-- 1 root root 1045430272 2012-12-17 17:31 test.img
[[E-Mail geschützt] ~]#

server2.beispiel.com:

ls -l /data

[[email protected] ~]# ls -l /data
total 256008
-rw-r--r-- 1 root root 1046478848 2012-12-17 17:27 test.img
[[E-Mail geschützt] ~]#

server3.beispiel.com:

ls -l /data

[[email protected] ~]# ls -l /data
total 256008
-rw-r--r-- 1 root root 1047527424 2012-12-17 17:26 test.img
[[E-Mail geschützt] ~]#

server4.beispiel.com:

ls -l /data

[[email protected] ~]# ls -l /data
total 256008
-rw-r--r-- 1 root root 1048576000 2012-12-17 17:30 test.img
[[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
  • CentOS:http://www.centos.org/

Cent OS
  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. Verteilter replizierter Speicher über vier Speicherknoten mit GlusterFS auf CentOS 5.4

  4. Verteilter Speicher auf vier Speicherknoten mit GlusterFS unter CentOS 5.4

  5. Striping über vier Speicherknoten mit GlusterFS auf CentOS 5.4

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

Verteilter Speicher über vier Speicherknoten mit GlusterFS auf Debian Lenny

Verteilter replizierter Speicher über vier Speicherknoten mit GlusterFS auf Debian Lenny

Striping über vier Speicherknoten mit GlusterFS auf Debian Lenny

Verteilter replizierter Speicher über vier Speicherknoten mit GlusterFS auf Fedora 12

Striping über vier Speicherknoten mit GlusterFS auf Fedora 12