GlusterFS ist ein verteiltes Dateisystem, das Speicherelemente von mehreren Servern als einheitliches Dateisystem präsentiert und eignet sich besonders gut als Festplattenspeicher für hochverfügbare Systeme.
Im Artikel "Cluster HA 3 Knoten" wurde beschrieben, wie man einen Cluster auf Proxmox VE aufsetzt. Als Storage wurde für die virtuellen Festplatten Netzspeiche SMB/CIFS ausgewählt.
Es gibt auch die Möglichkeit auf den Proxmox VE Servern ein verteiltes Dateisystem namens Gluster FS zu konfigurieren. Hier muss auf jedem Server entsprechend viel Festplattenspeicher zur Verfügung stehen, möglichst gleiche Kapazität auf allen Servern. Sollten wir mehrere physische Festplatten in einem Server haben, können wir eine große logische Festplatte mit LV erstellen. Das machen wir auf allen 3 Servern.
Ich gehe davon aus, dass wir auf allen 3 Servern jeweils eine Volume Group vg1und eine Logical Volums lv1haben. Die lv1 ist mit ext4 formatiert.
Ein Ordner mit dem Namen /data wird auf allen 3 Servern erstellt.
# mkdir /data
Die Datei /etc/fstab wird geöffnet und entsprechender Eintrag gemacht, damit die Festplatte beim Start gemountet wird. Auf allen 3 Servern.
/dev/vg1/lv1 /data ext4 defaults 0 0
Wir können sofort mounten
# mount -a
Wenn die Partition gemountet ist müssen wir noch unter /data ein Ordner namens Brick erstellen, so wie unten.
Namen der Server in DNS bitte eintragen. Sollte kein DNS-Server vorhanden sein oder kein Eintrag in DNS erwünscht, dann bitte die Namen in der /etc/hosts Datei eintragen. Die Einträge macht man auf jedem Server in der /etc/hosts Datei.
Alle 3 Server sollten miteinander connecten. Das erreichen wir mit dem Befehl gluster peer probe <Servername oder IP>. Sollten die Server mit mindestens 2 Netzwerkarten ausgestattet sein, dann können wir ein Netz nur für den Gluster konfigurieren. In so einem Fall nutzen wir die IP-Adresse statt die Namen der Server. In unserem Fall haben wir nur ein Netz.
Wir befinden sich auf dem ersten Server und erstellen eine Verbindung mit den anderen Servern. Als Ergebnis solte wir peer probe: success bekommen
Status auf alle 3 Server kann man mit dem folgenden Befehl überprüfen. Es sollten die beiden andere Servernamen angezeigt werden.
# gluster peer status
Ein volume wird erstellt, mit dem Namen vol1. Nur auf einem Server braucht man den Befehl auszuführen. Die Daten werden auf andere Server repliziert.
# gluster volume create vol1 replica 3 transport tcp pve1:/data/brick1 pve2:/data/brick2 pve3:/data/brick3 force
Das volumevol1 wird gestartet. Diesen Befehl können wir auf beliebigem Gluster Server ausführen, auf pve1, pve2 oder pve3
# gluster volume start vol1 force
Sicherheit bei Glusters. Normalerweise jeder im Netz kann auf das volume vol1zugreifen. Will man das begrenzen, muss das Erlauben für bestimmte IP bzw. Netze setzen gluster volume set <volumename>auth.allow <IP-Adresse1>, <IP-Adresse2>, <IP-Adresse3>, z.B.
# gluster volume set vol1 auth.allow 172.16.0.101, 172.16.0.102, 172.16.0.103
oder für ganzes Netz 172.16.0.0/22 zulassen, aber nicht für andere Netze.
# gluster volume set vol1 auth.allow 172.16.0.*
So kann man die Zugriff-Berechtigung auslesen
# gluster volume get <volume> all // z.B. # gluster volume get vol1 all
Einige Gluster Befehle. In unserem Fall <volumename> = vol1
# gluster volume status all # gluster volume list # gluster volume info <volumename> # gluster volume status <volumename> detail # gluster volume status <volumename> client # gluster volume status <volumename> mem # gluster volume status <volumename> inode # gluster volume status <volumename> fd # gluster volume status <volumename> callpool // info zum Replikationsstatus # gluster volume heal <volumename> info // volname heilen # gluster volume heal <volumename> // volname heilen # gluster volume heal <volumename> full // es wird überprüft, ob split-brain # gluster volume heal <volumename> info split-brain
GlusterFS in Proxmox VE einbinden.
Die GlusterFS Installation und Konfiguration haben wir auf Proxmox VE gemacht. Wir haben jetzt die Möglichkeit, den Festplatten-Speicher des verteilten Systems unter Proxmox VE einzubinden und zu nutzen. Das WEB-Interface wird gestartet https://<IP-Adresse>:8006 in unserem Beispiel https://172.16.0.101:8006
Alle Daten zu Erstellung des GlusterFS Festplattenspeichers werden eingetragen. Danach haben wir einen Festplattenspeicherplatz mit dem Namen, in unserem Fall dataGluster. Wir können jetzt die VMs erstellen und die Festplatten der VMs in diesem Bereich definieren.
Beim Ausfall einen Knoten (Node) laufen die Server weiter. Wenn ein Knoten ausfällt, auf dem VMs sind, werden die in kürzester Zeit automatisch auf ein anderen Knoten verschoben, selbstverständlich ohne Datenverlust.
GlausterFS Anbindung an einem Linux Server
GlausterFS Anbindung an einem beliebigen Linux Server ist sehr einfach. Zuerst muss man ein GlusterFS-Cient Paket installieren.
# apt install glusterfs-client
Die Namen der 3 Server, auf dem sich GlusterFS befindet, müssen in DNS eingetragen sein, wenn nicht, dann müssen wir das in der Host-Datei auf dem Linux Server machen, auch wenn wir das GlusterFS mit der IP-Adresse mounten möchten. Ist das nicht der Fall, bekommen wir eine Fehlermeldung beim mounten. Welchen Server man beim Mounten angibt, ist egal. Der Linux Server holt sich die Konfiguration und kommuniziert ab da selbst mit den beteiligten GlusterFS Servern.