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.

Das könnte dich auch interessieren …