Benutzer-Werkzeuge

Webseiten-Werkzeuge


glusterfs_einrichten

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
glusterfs_einrichten [2015-08-26 07:14:19] manfredglusterfs_einrichten [2016-04-12 22:50:01] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== 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 |