Benutzer-Werkzeuge

Webseiten-Werkzeuge

A PCRE internal error occured. This might be caused by a faulty plugin

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 ===== <code bash> apt-get install glusterfs-client glusterfs-common glusterfs-server xfsprogs </code> ===== Partitionierung ===== <wrap important>GlusterFS sollte **niemals** auf der root-Partition laufen</wrap> Folgendes dann auf beiden Nodes ausführen: <code bash> 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 </code> Es sollte ausgegeben werden, dass /dev/sdb1 nach /var/glusterfs gemountet worden ist Jetzt kann auch schon der Serverdienst gestertet werden <code bash> service glusterfs-server start </code> ===== Konfiguration des Pools ===== Auf Server1: <code bash> gluster peer probe Server2 # peer probe: success </code> Auf Server2: <code bash> gluster peer probe Server1 # peer probe: success </code> 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: <code bash> mkdir /var/glusterfs/datenverzeichnis </code> Nur auf einem Server ausführen: <code bash> gluster volume create datenverzeichnis replica 2 Server1:/var/glusterfs/datenverzeichnis Server2:/var/glusterfs/datenverzeichnis gluster volume start datenverzeichnis </code> Es sollte nun der Status "started" ausgegeben werden. <code bash> 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 </code> ===== 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 <code bash> mkdir /mnt/gluster_daten mount -t glusterfs localhost:datenverzeichnis /mnt/gluster_daten for i in {1..100}; do touch /mnt/gluster_daten/$i; done </code> 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 <code bash> echo "localhost:datenverzeichnis /mnt/gluster_daten glusterfs defaults 0 0" >>/etc/fstab </code> <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 <code bash> gluster volume set datenverzeichnis nfs.disable ON gluster volume set datenverzeichnis user.cifs OFF </code> ===== 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: <code bash /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 </code> ===== 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 |

glusterfs_einrichten.txt · Zuletzt geändert: 2016/04/13 00:50 (Externe Bearbeitung)