GlusterFS unter Ubuntu 22.04 installieren
GlusterFS ist ein freier, quelloffener und softwaredefinierter verteilter Speicher, der von Gluster Inc. und anschließend von Redhat entwickelt wurde. Es bietet Schnittstellen für Objekt-, Block- und Dateispeicher und wird für datenintensive Workloads wie Cloud-Speicher, CDN und Media-Streaming verwendet. Es lässt sich im Baukastensystem skalieren, um mehrere Petabytes an Daten zu speichern. Er unterstützt mehrere Protokolle wie NFS, SMB, CIFS, HTTP und FTP. Es eignet sich perfekt für verschiedene Anwendungsfälle, die den Umgang mit großen Datenmengen erfordern.
In diesem Lernprogramm lernen wir, wie man ein repliziertes GlusterFS-Volumen unter Ubuntu 22.04 einrichtet.
Anforderungen
- Zwei Server mit Ubuntu 22.04 und je einer externen 2 GB Festplatte.
- Eine statische IP-Adresse 192.168.10.10 ist auf Node1 und 192.168.10.11 ist auf Node2 konfiguriert.
- Auf beiden Servern ist ein Root-Passwort eingerichtet.
Erste Schritte
Bevor du beginnst, solltest du alle Systempakete auf beiden Servern aktualisieren. Du kannst sie aktualisieren, indem du den folgenden Befehl auf beiden Servern ausführst.
apt-get update -y apt-get upgrade -y
Sobald alle Systempakete aktualisiert sind, starte sie neu, damit die Änderungen übernommen werden.
Als Nächstes musst du die Datei /etc/hosts auf beiden Servern bearbeiten und die Hostnamenauflösung einrichten, damit jeder Server mit dem anderen über den Hostnamen kommunizieren kann. Das kannst du mit dem folgenden Befehl tun:
nano /etc/hosts
Füge die folgenden Zeilen ein:
192.168.10.10 node1 192.168.10.11 node2
Speichere und schließe die Datei, wenn du fertig bist.
GlusterFS Server installieren
Standardmäßig ist GlusterFS im Standard-Repository von Ubuntu 22.04 verfügbar. Du kannst es mit dem folgenden Befehl auf beiden Servern installieren.
apt-get install glusterfs-server -y
Sobald das GlusterFS-Paket installiert ist, starte den GlusterFS-Dienst und aktiviere ihn mit dem folgenden Befehl, damit er beim Booten gestartet wird:
systemctl start glusterd systemctl enable glusterd
Du kannst den Status des GlusterFS-Dienstes auch mit dem folgenden Befehl überprüfen:
systemctl status glusterd
Du solltest die folgende Ausgabe sehen:
? glusterd.service - GlusterFS, a clustered file-system server Loaded: loaded (/lib/systemd/system/glusterd.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2022-11-05 04:10:13 UTC; 7s ago Docs: man:glusterd(8) Process: 92014 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid --log-level $LOG_LEVEL $GLUSTERD_OPTIONS (code=exited, status=0/SUCC> Main PID: 92015 (glusterd) Tasks: 9 (limit: 4579) Memory: 7.1M CPU: 2.260s CGroup: /system.slice/glusterd.service ??92015 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO Nov 05 04:10:11 ubuntu2204 systemd[1]: Starting GlusterFS, a clustered file-system server... Nov 05 04:10:13 ubuntu2204 systemd[1]: Started GlusterFS, a clustered file-system server.
Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
GlusterFS-Speicher erstellen
Um einen GlusterFS-Speicher zu erstellen, brauchst du eine externe Festplatte auf beiden Servern. Außerdem musst du eine Partition auf einer externen Festplatte (/dev/sdb) auf beiden Servern erstellen.
Um eine neue Partition auf /dev/sdb zu erstellen , führe den folgenden Befehl aus:
fdisk /dev/sdb
Du solltest die folgende Ausgabe sehen:
Welcome to fdisk (util-linux 2.31.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x06091fe8. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-4194303, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303): Created a new partition 1 of type 'Linux' and of size 2 GiB. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
Als Nächstes formatierst du die Partition mit dem folgenden Befehl:
mkfs.xfs /dev/sdb1
Du solltest die folgende Ausgabe sehen:
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131008 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0 data = bsize=4096 blocks=524032, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
Als Nächstes erstellst du mit folgendem Befehl ein Verzeichnis für den GlusterFS-Speicher auf beiden Servern:
mkdir /glustervolume
Als Nächstes mountest du die Festplatte /dev/sdb1 in das Verzeichnis /glustervolume.
mount.xfs /dev/sdb1 /glustervolume
Als Nächstes bearbeitest du die Datei /etc/fstab und sorgst dafür, dass der Mount über einen Neustart hinweg bestehen bleibt:
nano /etc/fstab
Füge die folgende Zeile hinzu:
/dev/sdb1 /glustervolume xfs defaults 0 0
Speichere und schließe die Datei und führe dann den folgenden Befehl aus, um die Änderungen zu übernehmen:
mount -a
Jetzt kannst du das eingehängte Verzeichnis mit dem folgenden Befehl überprüfen:
df -h
Du solltest die folgende Ausgabe sehen:
Filesystem Size Used Avail Use% Mounted on tmpfs 393M 1.1M 392M 1% /run /dev/sda2 79G 8.6G 67G 12% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 393M 4.0K 393M 1% /run/user/0 /dev/sdb1 2.0G 35M 2.0G 2% /glustervolume
GlusterFS-Volumen konfigurieren
Zuerst musst du einen vertrauenswürdigen Speicherpool erstellen, indem du node2 zu node1 hinzufügst. Dazu führst du den folgenden Befehl auf node1 aus:
gluster peer probe node2
Du kannst den hinzugefügten Speicherpool mit folgendem Befehl überprüfen:
gluster pool list
Du solltest die folgende Ausgabe erhalten:
UUID Hostname State 52245177-ce2e-4217-8da5-2ee7a33dcf46 node2 Connected b6da6e83-b1ea-46de-8904-1c5345b1c229 localhost Connected
Als Nächstes erstellst du auf beiden Knoten ein Brick-Verzeichnis mit dem folgenden Befehl:
mkdir /glustervolume/vol1
Als Nächstes erstellst du ein Volume namens vol1 mit zwei Replikaten:
gluster volume create vol1 replica 2 node1:/glustervolume/vol1 node2:/glustervolume/vol1
Starte das Volume mit folgendem Befehl:
gluster volume start vol1
Du kannst den Status des erstellten Volumes mit dem folgenden Befehl überprüfen:
gluster volume status
Du solltest die folgende Ausgabe erhalten:
Status of volume: vol1 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick node1:/glustervolume/vol1 49152 0 Y 7198 Brick node2:/glustervolume/vol1 49152 0 Y 13214 Self-heal Daemon on localhost N/A N/A Y 6121 Self-heal Daemon on node2 N/A N/A Y 12768 Task Status of Volume vol1 ------------------------------------------------------------------------------ There are no active volume tasks
Du kannst nun die Informationen über das erstellte Volume mit folgendem Befehl überprüfen:
gluster volume info vol1
Du solltest die folgende Ausgabe erhalten:
Volume Name: vol1 Type: Replicate Volume ID: a1023sd6d-81rt-12a2-bc4e-a4gd156c5331 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: node1:/glustervolume/vol1 Brick2: node2:/glustervolume/vol1 Options Reconfigured: transport.address-family: inet nfs.disable: on performance.client-io-threads: off
Als Nächstes mountest du das erstellte Volume im Verzeichnis /opt auf beiden Knoten, indem du die Datei /etc/fstab bearbeitest, damit dein Volume nach dem Booten des Servers verfügbar ist.
nano /etc/fstab
Füge die folgende Zeile hinzu:
localhost:/vol1 /opt glusterfs defaults,_netdev 0 0
Speichere und schließe die Datei, wenn du fertig bist. Führe dann den folgenden Befehl aus, um die Änderungen zu übernehmen:
mount -a
Replikation testen
Dein GlusterFS-Server ist nun installiert und konfiguriert. Nun ist es an der Zeit, die Replikation zwischen den beiden Knoten zu testen.
Erstelle zunächst zwei Dateien auf Knoten1:
touch /opt/test1 /opt/test2
Gehe nun zu Knoten2 und führe den folgenden Befehl aus:
ls -l /opt/
Du solltest die gleichen Dateien sehen, die du auf Node1 erstellt hast:
total 0 -rw-r--r-- 1 root root 0 Nov 7 13:42 file1 -rw-r--r-- 1 root root 0 Nov 7 13:42 file2
Beende nun den GlusterFS-Dienst auf Knoten2 mit folgendem Befehl:
service glusterd stop
Als nächstes gehst du zu node1 und überprüfst den Peer-Status:
gluster peer status
Du solltest sehen, dass Node2 abgekoppelt worden ist:
Number of Peers: 1 Hostname: node2 Uuid: a134f146-1220-3avd-d3f6-1c2554a87sa1 State: Peer in Cluster (Disconnected)
Du kannst auch den Volume-Status mit folgendem Befehl überprüfen:
gluster volume status
Du solltest die folgende Ausgabe sehen:
Status of volume: vol1 Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick node1:/glustervolume/vol1 49152 0 Y 7987 Self-heal Daemon on localhost N/A N/A Y 8010 Task Status of Volume vol1 ------------------------------------------------------------------------------ There are no active volume tasks
Als Nächstes erstellst du zwei weitere Dateien auf node1:
touch /opt/test3 /opt/test4
Gehe nun zu Node2 und starte den GlusterFS-Dienst mit dem folgenden Befehl:
service glusterd start
Überprüfe nun das Verzeichnis /opt auf node2:
ls -l /opt/
Du solltest sehen, dass alle Dateien von Knoten1 repliziert wurden und jetzt verfügbar sind.
total 0 -rw-r--r-- 1 root root 0 Nov 7 13:42 test1 -rw-r--r-- 1 root root 0 Nov 7 13:42 test2 -rw-r--r-- 1 root root 0 Nov 7 13:44 test3 -rw-r--r-- 1 root root 0 Nov 7 13:44 test4
Fazit
Herzlichen Glückwunsch! Du hast erfolgreich einen Replicated Glusterfs Server mit zwei Knoten auf einem Ubuntu 22.04 Server installiert und konfiguriert. Weitere Informationen findest du auf der GlusterFS-Dokumentationsseite. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.