So installierst du das skalierbare Netzwerk-Dateisystem GlusterFS unter Debian 11
GlusterFS oder Gluster File System, ist ein freies und quelloffenes verteiltes Dateisystem, das von RedHat entwickelt wurde. GlusterFS ist ein skalierbares Dateisystem, das sich aus mehreren Servern zu einem einzigen Dateisystem zusammensetzt, das es den Nutzern ermöglicht, sich mit dem GlusterFS-Volumen zu verbinden und es einzuhängen.
GlusterFS ist ein modernes Dateisystem, das Petabytes an Daten verarbeiten kann. Außerdem ist es einfach zu installieren und zu warten, und das Dateisystem lässt sich leicht skalieren.
In diesem Lernprogramm installierst du GlusterFS – ein verteiltes und skalierbares Netzwerkdateisystem – auf Debian 11 Servern. Du richtest ein GlusterFS-Volumen ein, das Daten automatisch auf mehrere Server repliziert, und richtest das hochverfügbare Dateisystem ein. Außerdem lernst du, wie du das Linux-Partitionierungswerkzeug „parted“ verwendest, um zusätzliche Festplatten auf Debian-Servern einzurichten. Schließlich überprüfst du die Datenreplikation auf GlusterFS zwischen mehreren Debian-Servern und stellst die Hochverfügbarkeit sicher.
Voraussetzungen
Um dieses Tutorial durchzuführen, brauchst du die folgenden Voraussetzungen:
- Zwei oder drei Debian 11 Server.
- Ein Nicht-Root-Benutzer mit sudo/administrator Root-Rechten.
In diesem Beispiel werden drei Debian 11 Server mit den folgenden Angaben verwendet:
Hostname IP Address -------------------------- node1 192.168.5.50 node2 192.168.5.56 node3 192.168.5.57
Das war’s. Wenn diese Voraussetzungen erfüllt sind, starte die GlusterFS-Installation.
Hostname und FQDN einrichten
Der erste Schritt, den du tun musst, ist die Einrichtung von Hostname und FQDN für alle Debian-Server, die von GlusterFS verwendet werden sollen. Du kannst den Hostnamen über den Befehl„hostnamectl“ und den FQDN (Fully Qualified Domain Name) über die Datei„/etc/hosts“ einrichten.
Um den Hostnamen einzurichten, gibst du auf jedem Server den folgenden Befehl ein.
# run on node1 sudo hostnamectl set-hostname node1.home.lan
# run on node2 sudo hostnamectl set-hostname node2.home.lan
# run on node3 sudo hostnamectl set-hostname node3.home.lan
Anschließend öffnest du die Datei„/etc/hosts“ auf jedem Server mit deinem bevorzugten Editor. Für diesen Lehrgang wirst du den Editor nano verwenden.
sudo nano /etc/hosts
Füge die folgenden Zeilen in die Datei ein. Wenn du eine IP-Adresse hast, die auf mehrere Hostnamen verweist, ersetze sie durch die folgenden Zeilen.
192.168.5.50 node1.home.lan node1 192.168.5.56 node2.home.lan node2 192.168.5.57 node3.home.lan node3
Drücke Strg+x zum Beenden, gib y zur Bestätigung ein und drücke dann ENTER, um fortzufahren.
Überprüfe abschließend den fqdn auf jedem Server, indem du den folgenden Befehl eingibst.
hostname -f cat /etc/hosts
Du erhältst eine ähnliche Ausgabe wie diese – Auf Knoten1 sollte der fqdn node1.home.lan, auf Knoten2 node2.home.lan und auf Knoten3 node3.home.lan lauten.
Festplattenpartition einrichten
Es wird empfohlen, ein bestimmtes Laufwerk bzw. eine bestimmte Festplatte für den GlusterFS-Einsatz zu verwenden. In diesem Beispiel hat jeder Debian-Server eine zusätzliche Festplatte „/dev/vdb“, die für die GlusterFS-Installation verwendet wird. In diesem Schritt lernst du, wie du mit dem Terminal und dem Befehl „fdisk“ eine neue Festplatte auf einem Linux-System einrichten kannst.
Gib zunächst den folgenden„fdisk„-Befehl ein, um die Liste der verfügbaren Festplatten auf deinem Debian-Server zu überprüfen.
sudo fdisk -l
Du erhältst eine ähnliche Ausgabe wie diese – Auf dem„node1“ sind zwei Festplatten verfügbar, die„/dev/vda„, auf der das Betriebssystem installiert ist, und die„/dev/vdb„, die noch nicht konfiguriert ist.
Um mit der Partitionierung der Festplatte „/dev/vdb“ zu beginnen, gibst du den folgenden fdisk-Befehl ein. Du solltest die neue Eingabeaufforderung des fdisk-Tools erhalten und dich mit der Festplatte„/dev/vdb“ verbinden.
sudo fdisk /dev/vdb
- Um eine neue Partition zu erstellen, gib den Befehl„n“ ein.
- Wähle den Partitionstyp aus, den du erstellen möchtest.p“ für primär und „e“ für erweitert. In diesem Beispiel wirst du eine primäre Partition erstellen, also gib„p“ ein.
- Wie viele Partitionen möchtest du auf der Festplatte „/dev/vdb“ erstellen? In diesem Beispiel wirst du nur eine Partition erstellen, also gib„1“ ein.
- Wähle den ersten Sektor für die neue Partition. Du kannst ihn als Standard belassen, also drücke ENTER, um fortzufahren.
- Im letzten Sektor legst du die Größe der Partition fest, die du erstellen willst. In diesem Beispiel werden es etwa 5 GB sein, also gib„+5GB“ ein.
- Zum Schluss gibst du „w“ ein, um die Änderungen auf der Festplatte „/dev/vdb“ zu bestätigen und anzuwenden.
Die Ausgabe„Die Partitionstabelle wurde geändert“ bestätigt, dass die Änderungen auf deine Festplatte angewendet wurden.
Damit ist deine neue Partition zwar erstellt, aber immer noch unbrauchbar. Denn du musst deine neue Partition auf bestimmte Dateisystemformate formatieren. Du kannst den folgenden fdisk-Befehl eingeben, um sicherzustellen, dass die neue Partition auf der Festplatte „/dev/vdb“ erstellt wird.
sudo fdiks -l
Du erhältst eine ähnliche Ausgabe wie diese – Im Abschnitt „/dev/vdb“ siehst du, dass die neue Partition„/dev/vdb1“ mit einer Größe von„4,7 GB“ erstellt wurde.
Als Nächstes gibst du den folgenden Befehl ein, um deine neue Partition„/dev/vdb1“ zu formatieren. In diesem Beispiel formatierst du die Partition im ext4-Dateisystemformat.
sudo mkfs -t ext4 /dev/vdb1
Du erhältst dann eine ähnliche Ausgabe wie diese – Die neue Partition ‚/dev/vda1‚ ist als ext4-Dateisystem formatiert.
Auto-Mount-Partition einrichten
In diesem Schritt richtest du die automatische Einbindung der neuen Partition „/dev/vdb1“ über die Datei„/etc/fstab“ ein. Außerdem erstellst du ein neues Verzeichnis, das zum Speichern von Daten in GlusterFS verwendet werden soll.
Erstelle zunächst ein neues Zielverzeichnis, das zum Einhängen der neuen Partition„/dev/vdb1“ verwendet wird.
# run on node1 mkdir -p /data/node1 # run on node2 mkdir -p /data/node2 # run on node3 mkdir -p /data/node3
Öffne die Konfigurationsdatei„/etc/fstab“ mit dem unten stehenden nano-Editor-Befehl.
sudo nano /etc/fstab
Füge die folgende Zeile in die Datei ein. Damit wird die neue Partition„/dev/vdb1“ beim Systemstart automatisch eingehängt.
# for node1 /dev/vdb1 /data/node1 ext4 defaults 0 1 # for node2 /dev/vdb1 /data/node2 ext4 defaults 0 1 # for node3 /dev/vdb1 /data/node3 ext4 defaults 0 1
Als Nächstes führst du den folgenden Befehl aus, um die neue Partition einzuhängen, die du in der Datei „/etc/fstab“ konfiguriert hast. Wenn kein Fehler auftritt, kannst du loslegen.
sudo mount -a
Zuletzt führst du den folgenden Befehl aus, um für jeden Server ein neues Verzeichnis „brick0“ auf der neu gemounteten Partition zu erstellen.
# run on node1 mkdir -p /data/node1/brick0 # run on node2 mkdir -p /data/node2/brick0 # run on node3 mkdir -p /data/node3/brick0
Installation von GlusterFS Server
In diesem Schritt installierst du das GlusterFS-Paket auf den Debian-Servern, die für den GlusterFS-Cluster verwendet werden sollen. Daher musst du die folgenden Befehle auf den Servern node1, node2 und node3 ausführen.
Führe den folgenden apt-Befehl aus, um grundlegende Abhängigkeiten auf deinem System zu installieren. Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.
sudo apt install gnupg2 apt-transport-https software-properties-common
Ausgabe:
Lade den GPG-Schlüssel für das GlusterFS-Repository über den Befehl curl herunter. Konvertiere dann den neuen Schlüssel in die Datei„/usr/share/keyrings/glusterfs-archive-keyring.gpg„.
curl https://download.gluster.org/pub/gluster/glusterfs/10/rsa.pub | gpg --dearmor > /usr/share/keyrings/glusterfs-archive-keyring.gpg
Als Nächstes führst du den folgenden Befehl aus, um neue Umgebungsvariablen zu erstellen und das GlusterFS-Repository zu deinem System hinzuzufügen.
DEBID=$(grep 'VERSION_ID=' /etc/os-release | cut -d '=' -f 2 | tr -d '"') DEBVER=$(grep 'VERSION=' /etc/os-release | grep -Eo '[a-z]+') DEBARCH=$(dpkg --print-architecture) echo "deb [signed-by=/usr/share/keyrings/glusterfs-archive-keyring.gpg] https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/${DEBID}/${DEBARCH}/apt ${DEBVER} main" | sudo tee /etc/apt/sources.list.d/gluster.list
Ausgabe:
Sobald der GPG-Schlüssel und das Repository hinzugefügt sind, führe den folgenden apt-Befehl aus, um den Paketindex zu aktualisieren und aufzufrischen.
sudo apt update
Ausgabe:
Installiere nun das GLusterFS-Serverpaket, indem du den folgenden Befehl eingibst. Wenn du zur Bestätigung aufgefordert wirst, gib y ein und drücke ENTER.
sudo apt install glusterfs-server
Ausgabe:
Nachdem du GlusterFS installiert hast, führe den folgenden systemctl-Befehl aus, um den GLusterFS-Dienst zu starten und zu aktivieren. Damit sollte GlusterFS auf allen deinen Servern laufen und ist nun aktiviert, d.h. der GlusterFS-Dienst wird beim Systemstart automatisch gestartet.
sudo systemctl start glusterd sudo systemctl enable glusterd
Führe abschließend den folgenden systemctl-Befehl aus, um den GlusterFS-Dienst zu überprüfen und sicherzustellen, dass der Dienst läuft und aktiviert ist.
sudo systemctl status glusterd
Die Ausgabe „active (running)“ bestätigt, dass der GlusterFS-Dienst läuft und die Ausgabe „…; enabled;“ bestätigt, dass der GlusterFS-Dienst aktiviert ist und beim Systemstart automatisch gestartet wird.
Jetzt hast du eine neue Festplatte/Partition vorbereitet und den GLusterFS-Server installiert. Als Nächstes beginnst du mit der Erstellung und Initialisierung des GLusterFS-Clusters.
Speicherpool initialisieren
In diesem Schritt richtest du den GlusterFS-Cluster mit drei Debian-Servern, node1, node2 und node3, ein. Du initialisierst den GlusterFS-Cluster von„node1“ aus und fügst die anderen Knoten„node2“ und„node3“ zum Cluster hinzu.
Bevor du beginnst, stelle sicher, dass jeder Server über den Hostnamen oder fqdn erreichbar ist. Du kannst dies überprüfen, indem du den Ping-Befehl an jeden Server sendest.
ping node2.home.lan ping node3.home.lan
Auf dem Terminal „node1“ führst du den folgenden Gluster-Befehl aus, um den GlusterFS-Cluster mit den Clustermitgliedern node2 und node3 zu initialisieren.
sudo gluster peer probe node2.home.lan sudo gluster peer probe node3.home.lan
Die Ausgabe„peer probe: success“ bestätigt, dass die Initialisierung des GlusterFS-Clusters erfolgreich war.
Als Nächstes gehst du zum Terminal„node2“ und gibst den folgenden Befehl ein, um den Status des GlusterFS-Clusters zu überprüfen.
sudo gluster peer status
Du solltest eine ähnliche Ausgabe erhalten wie diese – Auf’node2‚ siehst du den GlusterFS-Cluster mit zwei Peers, node1 und node3, mit dem Status connected.
Wechsle nun zum Terminal„node3“ und führe den folgenden Befehl aus, um den Status des GLusterFS-Clusters zu überprüfen.
sudo gluster peer status
Ausgabe – Auf’node3‚ siehst du den GlusterFS-Cluster mit zwei Peers, node1 und node2, mit dem Status connected.
Außerdem kannst du die Liste der Pools auf dem GlusterFS-Cluster mit dem folgenden Befehl überprüfen. Du kannst diesen Befehl auf den Servern node1, node2 oder node3 ausführen.
sudo gluster pool list
Damit hast du den GlusterFS-Cluster mit drei Debian-Servern erfolgreich initialisiert. Im nächsten Schritt erfährst du, wie du ein Volume auf GlusterFS erstellst und wie du das GlusterFS-Volume auf dem Client-Rechner einhängst.
Repliziertes Volume erstellen
Bei GlusterFS gibt es mehrere Arten von Volumes, die du erstellen kannst: Verteiltes Volume, Repliziertes Volume, Verteiltes Repliziertes Volume, Disperses Volume und Verteiltes Disperses Volume. In der offiziellen Dokumentation von GlusterFS findest du weitere Informationen zu den einzelnen Volume-Typen.
In diesem Schritt erstellst du ein neues GlusterFS-Volume mit dem Typ Replicated mit drei verschiedenen GlusterFS-Servern. Damit werden deine Daten automatisch von einem Server zum anderen innerhalb des Speicherpools und des GlusterFS-Clusters kopiert.
Führe den folgenden Gluster-Befehl aus, um ein neues repliziertes Volume auf GlusterFS zu erstellen. In diesem Beispiel erstellst du ein neues Volume„testVolume“ mit dem Typ Replicated zwischen den drei Servern node1, node2 und node3.
sudo gluster volume create testVolume replica 3 node1.home.lan:/data/node1/brick0 node2.home.lan:/data/node2/brick0 node3.home.lan:/data/node3/brick0
Die Ausgabe‚volume create: testVolume: success: …‚ bestätigt, dass das neue Volume‚testVolume‚ erstellt ist.
Als Nächstes musst du das‚testVolume‚ starten, bevor du es verwenden kannst, indem du den folgenden Befehl gibst.
sudo gluster volume start testVolume
Die Ausgabe‚volume start: testVolume: success‚ bestätigt, dass das‚testVolume‚ gestartet und bereit ist.
Ausgabe:
Abschließend kannst du mit dem folgenden gluster-Befehl die Detailinformationen zu„testVolume“ überprüfen.
sudo gluster volume info
Du erhältst eine ähnliche Ausgabe wie diese – Das„testVolume“ mit dem Typ„Replicated„, der Standardübertragungsart„tcp“ und drei verschiedenen Servern node1, node2 und node3.
Ausgabe:
Damit hast du den GlusterFS-Cluster mit drei verschiedenen Servern initialisiert und ein Replicated-Volume „testVolume“ darauf erstellt. Im nächsten Schritt erfährst du, wie du den Client-Rechner einrichtest und das GlusterFS-Volumen muntest.
GlusterFS-Volumen auf dem Client einbinden
In diesem Schritt lernst du, wie du ein GlusterFS-Volume auf dem Client-Rechner einhängst. In diesem Beispiel wird ein Ubuntu/Debian-basierter Rechner mit dem Hostnamen„client“ verwendet. Nun wirst du das GlusterFS-Volume„testVolume“ auf dem Client-Rechner einbinden und die automatische Einbindung über die Datei „/etc/fstab“ einrichten.
Öffne zunächst die Datei„/etc/hosts“ mit dem folgenden Editor-Befehl: nano.
sudo nano /etc/hosts
Gib die folgenden Zeilen in die Datei ein und achte darauf, dass du die Details der IP-Adressen und Hostnamen mit dem GLusterFS-Server abgleichst.
192.168.5.50 node1.home.lan node1 192.168.5.56 node2.home.lan node2 192.168.5.57 node3.home.lan node3
Speichere die Datei und beende den Editor, wenn du fertig bist.
Als nächstes führst du den folgenden apt-Befehl aus, um das Paket „glusterfs-client“ zu installieren. Um das GlusterFS-Volume zu mounten, musst du das Paket„glusterfs-client“ auf deinem Client-Rechner installieren.
sudo apt install glusterfs-client
Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.
Nachdem der glusterfs-client installiert ist, erstelle ein neues Verzeichnis „/data“, das als Zielverzeichnis für das GlusterFS-Volume verwendet wird.
mkdir /data
Hänge das GlusterFS-Volume„testVolume“ mit dem unten stehenden Einhängebefehl in das Verzeichnis„/data“ ein.
sudo mount.glusterfs node1.home.lan:/testVolume /data
Überprüfe die Liste der gemounteten Festplatten auf deinem System mit dem Befehl df.
sudo df -h
Wenn du erfolgreich warst, solltest du sehen, dass das GlusterFS-Volume „testVolume“ in das Verzeichnis „/data“ eingehängt wurde.
Ausgabe:
Als Nächstes richtest du die automatische Einbindung des GlusterFS-Volumes über die Datei „/ect/fstab“ ein.
Öffne die Datei „/etc/fstab“ mit dem folgenden Befehl des Editors nano.
sudo nano /etc/fstab
Füge die folgenden Zeilen in die Datei ein. Damit wird das GlusterFS-Volumen„testVolume“ beim Booten automatisch gemountet.
node1.home.lan:/testVolume /data glusterfs defaults,_netdev 0 0
Speichere und beende die Datei, wenn du fertig bist.
Jetzt hast du die Client-Konfiguration für das Einhängen des GlusterFS-Volumes abgeschlossen und das automatische Einhängen des GlusterFS-Volumes über die Datei „/etc/fstab“ konfiguriert. Im nächsten Schritt überprüfst du die Replikation und Hochverfügbarkeit des GLusterFS-Clusters.
Replikation und Hochverfügbarkeit testen
Verschiebe auf dem Client-Rechner das Arbeitsverzeichnis nach „/data“ und erstelle mit dem folgenden Befehl neue Dateien. Dadurch werden neue Dateien„1-15.md“ erstellt.
cd /data touch file{1..15}.md
Gib den Befehl ls ein, um die Liste der Dateien im aktuellen Verzeichnis zu erhalten.
ls
Ausgabe:
Als nächstes wechselst du zum Terminal„node1“ und gehst in das Verzeichnis„/data/node1/brick0„. Gib dann den Befehl ls ein, um die Liste der Dateien und Verzeichnisse zu überprüfen.
cd /data/node1/brick0 ls
Du solltest sehen, dass die Dateien‚1-15.md‚ auf node1 verfügbar sind.
Ausgabe:
Wechsle zum Terminal„node2“ und gehe in das Verzeichnis„/data/node2/brick0„. Gib dann den Befehl ls ein, um die Liste der Dateien und Verzeichnisse zu überprüfen.
cd /data/node2/brick0 ls
Du solltest sehen, dass die Dateien‚1-15.md‚ auf node2 verfügbar sind.
Ausgabe:
Wechsle zum Terminal„node3“ und gehe in das Verzeichnis „/data/node3/brick0„. Gib dann den Befehl ls ein, um die Liste der Dateien und Verzeichnisse zu überprüfen.
cd /data/node3/brick0 ls
Du solltest sehen, dass die Dateien‚1-15.md‚ auf node3 verfügbar sind.
Ausgabe:
Damit sind die Daten, die du auf dem Client-Rechner erstellt hast, auf mehrere Server auf dem GlusterFS-Server repliziert.
Als Nächstes kannst du zur Hochverfügbarkeit von GLusterFS den’node1‚ ausschalten oder herunterfahren und überprüfen, ob der Client-Rechner noch mit dem GlusterFS-Cluster verbunden ist.
Gehe zum Terminal„node1“ und führe den folgenden Befehl aus, um den Server herunterzufahren.
sudo poweroff
Gehe dann zum Terminal„node2“ und führe den unten stehenden Befehl aus, um den Status des GLusterFS-Clusters zu überprüfen.
sudo gluster peer status
Du solltest eine Ausgabe wie diese erhalten – Der Status von node1 ist„Disconnected„.
Wechsle zum Client-Terminal und führe den folgenden Befehl aus, um sicherzustellen, dass du noch mit dem GlusterFS-Cluster verbunden bist.
cd /data ls
Ausgabe:
Damit funktioniert die Hochverfügbarkeit des GlusterFS-Clusters.
Fazit
In diesem Lernprogramm hast du GlusterFS Cluster mit drei Debian 11 Servern installiert. Außerdem hast du eine neue Festplatte/Partition unter Linux mit fdisk konfiguriert und die automatische Einbindung der Linux-Festplatte/Partition mit der Datei /etc/fstab eingerichtet. Außerdem hast du gelernt, wie du ein repliziertes Volume auf GlusterFS erstellst und einen Debian/Ubuntu-basierten Client-Rechner einrichtest, um das GlusterFS-Volume zu mounten.
Jetzt kannst du deinen GlusterFS-Cluster durch Hinzufügen weiterer Festplatten und Server zu einem hochverfügbaren Netzwerk-Dateisystem ausbauen, auf das du über deine Netzwerke zugreifen kannst. Mehr über die Verwaltung von GlusterFS erfährst du in der offiziellen GlusterFS-Dokumentation.