Benutzer-Werkzeuge

Webseiten-Werkzeuge


glusterfs_einrichten

GlusterFS einrichten

Scenario: Wir haben 2 Nodes (Server1 und Server2) und möchten ein verteiltes und automatisch replizierendes Dateisystem auf beiden Maschinen einrichten. Wir haben außerdem 2 (virtuelle) storages unter /dev/sdb1 auf jedem der beiden Nodes.

Pakete installieren

apt-get install glusterfs-client glusterfs-common glusterfs-server xfsprogs

Partitionierung

<wrap important>GlusterFS sollte niemals auf der root-Partition laufen</wrap>

Folgendes dann auf beiden Nodes ausführen:

mkfs.xfs -i size=512 /dev/sdb1
mkdir -p /var/glusterfs
echo "/dev/sdb1 /var/glusterfs xfs defaults 1 2" >>/etc/fstab
mount -a && mount | grep glusterfs

Es sollte ausgegeben werden, dass /dev/sdb1 nach /var/glusterfs gemountet worden ist

Jetzt kann auch schon der Serverdienst gestertet werden

service glusterfs-server start

Konfiguration des Pools

Auf Server1:

gluster peer probe Server2
# peer probe: success

Auf Server2:

gluster peer probe Server1
# peer probe: success

Wenn man den Test mit den Hostnamen machen möchte, muss sichergestellt sein, dass die DNS-Auflösung funktioniert oder dass die IP/hostnames in der /etc/hosts gepflegt werden

Konfiguration des Volumes

Auf beiden Server ausführen:

mkdir /var/glusterfs/datenverzeichnis

Nur auf einem Server ausführen:

gluster volume create datenverzeichnis replica 2 Server1:/var/glusterfs/datenverzeichnis Server2:/var/glusterfs/datenverzeichnis
gluster volume start datenverzeichnis

Es sollte nun der Status "started" ausgegeben werden.

gluster volume info
#Volume Name: datenverzeichnis
#Type: Replicate
#Volume ID: 3b857b0e-553a-42df-939c-4901a945eda0
#Status: Started
#Number of Bricks: 1 x 2 = 2
#Transport-type: tcp
#Bricks:
#Brick1: Server1:/var/glusterfs/datenverzeichnis
#Brick2: Server2:/var/glusterfs/datenverzeichnis

Testen des Volumes

Das Volume kann jetzt vom einem Client (Achtung: Paket glusterfs-client muss installiert sein, wenn man es als glusterfs mounten will) oder auf localhost gemountet werden. Alternativ kann man das Volume auch nativ mittels nfs oder cifs mounten. Hier das Mounting auf localhost

mkdir /mnt/gluster_daten
mount -t glusterfs localhost:datenverzeichnis /mnt/gluster_daten
for i in {1..100}; do touch /mnt/gluster_daten/$i; done

Wenn man das oben genannte Beispiel auf Server1 gemacht hat, sollte man nun auf Server2 im mountpoint 100 Dateien finden

Wenn alles passt, dann nur noch das mounting persistent machen

echo "localhost:datenverzeichnis /mnt/gluster_daten glusterfs defaults 0 0" >>/etc/fstab

<wrap warning>NIEMALS ins Volume Verzeichnis /var/glusterfs/datenverzeichnis selbst schreiben. Solche Funktionen immer über den gemounteten Client machen</wrap>

Tuning

Man kann das NFS-Feature, falls man es nicht benötigt, abschalten. Auch den cifs-support kann man abschalten. Das spart eine Menge overhead

gluster volume set datenverzeichnis nfs.disable ON
gluster volume set datenverzeichnis user.cifs OFF

Troubleshooting

Die Konfiguration von GlusterFS liegt unter /var/lib/glusterd

das Logging erfolgt, je nachdem was für Dienste man nutzt:

geo-replication /var/log/glusterfs/geo-replication/*
self-heal operations /var/log/glusterfs/glustershd.log
NFS access /var/log/glusterfs/nfs.log
SMB access /var/log/samba/glusterfs-<VOLNAME>-ClientIP.log

Es kann vorkommen, dass bei einem Mount auf localhost mit dem type=glusterfs das Volume nicht gemountet werden kann, da der Server noch nicht komplett bereit ist. Dies lässt sich durch das folgende upstart-script umgehen:

/etc/init/mounting-glusterfs.conf
description "Block the mounting event for glusterfs filesystems until the network interfaces are running"
 
instance $MOUNTPOINT
 
start on mounting TYPE=glusterfs
task
exec start wait-for-state WAIT_FOR=glusterd WAITER=mounting-glusterfs-$MOUNTPOINT

Hintergrundinformationen

Protokolle

Jedes GlusterFS-Volume kann so konfiguriert werden, dass es mehrere Protokolle gleichzeitig unterstützt. Da allerdings die verschiedenen Protokolle auch verschiedenen Mechanismen z.B. fürs file locking benutzen, kann man diese nicht einfach frei kombinieren. Die unten stehende Tabelle zeigt an, welche Protokolle sicher miteinander kombinieren lassen.

SMB NFS Nativ Objekt
SMB Nein Nein Nein
NFS Nein Ja Ja
Nativ Nein Ja Ja
Objekt Nein Ja Ja

Firewall-Ports

Port Type Beschreibung
24007 tcp glusterd Kommunikation
49152-59153 tcp glusterfsd Ports (jeweils einer)
111 tcp & udp portmapper für NFS Zugang
38465-38466 tcp gluster nfs
11211 tcp & udp memcached port für Swift
6000-6002 tcp Swift Object, Container und Account Server Ports
443,8080 tcp Swift Proxy Server
/home/http/wiki/data/pages/glusterfs_einrichten.txt · Zuletzt geändert: von 127.0.0.1