GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Installieren und konfigurieren Sie GlusterFS unter Ubuntu 16.04 / Debian 8

In der Technologiewelt ist es immer entscheidend, die Daten hochverfügbar zu halten, um sicherzustellen, dass sie für die Anwendung/den Benutzer zugänglich sind. Hochverfügbarkeit wird hier erreicht, indem die Daten auf mehrere Volumes/Knoten verteilt werden.

Client-Rechner/Benutzer können auf den Speicher wie auf einen lokalen Speicher zugreifen. Wann immer der Benutzer Daten auf dem Gluster-Speicher erstellt, werden die Daten auf andere Speicherknoten gespiegelt/verteilt.

Was ist GlusterFS?

GlusterFS ist ein skalierbares Open-Source-Netzwerkdateisystem, das sich für hohe datenintensive Workloads wie Medien-Streaming, Cloud-Speicher und CDN (Content Delivery Network) eignet. GlusterFS wurde ursprünglich von Gluster Inc und dann von Redhat als Ergebnis der Übernahme entwickelt.

Terminologien:

Nachfolgend finden Sie die wichtigen Terminologien, die wir in diesem Artikel verwenden.

Ziegel – ist Basisspeicher (Verzeichnis) auf einem Server im vertrauenswürdigen Speicherpool.

Lautstärke – ist eine logische Sammlung von Bausteinen.

Cluster – ist eine Gruppe verbundener Computer, die wie ein einziger Computer zusammenarbeiten.

Verteiltes Dateisystem – Ein Dateisystem, in dem die Daten über mehrere Speicherknoten verteilt sind und den Clients den Zugriff über ein Netzwerk ermöglichen.

Kunde – ist eine Maschine, die das Volume einbindet.

Server – ist eine Maschine, auf der das eigentliche Dateisystem gehostet wird, in dem die Daten gespeichert werden.

Replizieren – Erstellen mehrerer Datenkopien, um eine hohe Redundanz zu erreichen.

Sicherung – ist ein ladbares Kernel-Modul, mit dem nicht-privilegierte Benutzer ihre eigenen Dateisysteme erstellen können, ohne den Kernel-Code zu bearbeiten.

Glusterd – ist ein Daemon, der auf allen Servern im vertrauenswürdigen Speicherpool läuft.

RAID – Redundant Array of Inexpensive Disks (RAID) ist eine Technologie, die durch Redundanz eine erhöhte Speicherzuverlässigkeit bietet.

Volumen:

Wie bereits erwähnt, ist das Volume eine Sammlung von Bausteinen, und die meisten Gluster-Operationen wie Lesen und Schreiben finden auf dem Volume statt. GlusterFS unterstützt je nach Anforderung verschiedene Arten von Volumes; geeignet, um die Speichergröße zu skalieren oder die Leistung zu verbessern oder für beides.

In diesem Artikel konfigurieren wir das replizierte GlusterFS-Volume auf Ubuntu 16.04 / Debian 8. Diese Anleitung sollte auch auf früheren Versionen von Ubuntu wie Ubuntu 14.04 / Ubuntu 12.04 funktionieren.

Repliziertes Glusterfs-Volumen ist wie ein RAID 1 , und volume behält exakte Kopien der Daten auf allen Bausteinen bei. Sie können die Anzahl der Replikate beim Erstellen des Volumes festlegen, sodass Sie mindestens zwei Bausteine ​​benötigen, um ein Volume mit zwei Replikaten zu erstellen, oder drei Bausteine, um ein Volume mit 3 Replikaten zu erstellen.

Dieses Volume bietet eine bessere Datenzuverlässigkeit und Datenredundanz.

Lesen Sie mehr über die verbleibenden Arten von GlusterFS-Volumes.

Anforderungen:

Hier konfigurieren wir das GlusterFS-Volume mit zwei Replikaten. Stellen Sie sicher, dass Sie zwei 64-Bit-Systeme (entweder virtuell oder physisch) mit 1 GB Arbeitsspeicher und eine Ersatzfestplatte auf jedem System haben.

Hostname IP-Adresse Betriebssystem Erinnerung Datenträger Zweck
gluster1.itzgeek.local 192.168.12.16 Ubuntu 16.04 LTS 1 GB /dev/sdb (5 GB) Speicherknoten 1
gluster2.itzgeek.local 192.168.12.17 Debian 8 1 GB /dev/sdb (5 GB) Speicherknoten 2
client.itzgeek.local 192.168.12.8 CentOS 7 / Debian NA NA Client-Rechner
Zur Demonstration verwende ich hier für jeden Speicherknoten eine andere Linux-Distribution. Ich empfehle Ihnen, eine einzelne Linux-Distribution im gesamten Cluster zu verwenden, damit Sie die Probleme, die in der Produktion auftreten, einfacher beheben können.

DNS konfigurieren:

GlusterFS-Komponenten verwenden DNS für die Namensauflösung, konfigurieren Sie also entweder DNS oder richten Sie einen Hosts-Eintrag ein. Wenn Sie kein DNS in Ihrer Umgebung haben, ändern Sie die Datei /etc/hosts und aktualisieren Sie sie entsprechend.

sudo vi /etc/hosts

192.168.12.16  gluster1.itzgeek.local  gluster1
192.168.12.17  gluster2.itzgeek.local  gluster2
192.168.12.20 client.itzgeek.local client

GlusterFS-Repository hinzufügen:

Bevor wir mit der Installation fortfahren, müssen wir das GlusterFS-Repository auf beiden Speicherknoten konfigurieren. Folgen Sie den Anweisungen, um das Repository zu Ihrem System hinzuzufügen.

Debian:

Supportpaket für https-Transaktionen installieren.

sudo apt-get install -y lsb-release
sudo apt-get install -y apt-transport-https

Fügen Sie den öffentlichen Schlüssel für das GlusterFS-Repository hinzu.

wget -O - http://download.gluster.org/pub/gluster/glusterfs/LATEST/rsa.pub | sudo apt-key add -
echo deb https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/$(lsb_release -sc)/apt $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/gluster.list

Ubuntu 16.04 / 14.04:

sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:gluster/glusterfs-3.8

GlusterFS installieren:

Sobald Sie das Repository auf Ihren Systemen hinzugefügt haben, können wir mit der Installation von GlusterFS beginnen.

Aktualisieren Sie den Repository-Cache.

sudo apt-get update

Installieren Sie das GlusterFS-Paket mit dem folgenden Befehl.

sudo apt-get install -y glusterfs-server

Starten Sie den Dienst glusterfs-server auf allen gluster-Knoten.

sudo service glusterfs-server start

Stellen Sie sicher, dass der glusterfs-Dienst einwandfrei läuft.

raj@gluster1:~$ sudo service glusterfs-server status

● glusterfs-server.service - LSB: GlusterFS server
   Loaded: loaded (/etc/init.d/glusterfs-server; bad; vendor preset: enabled)
   Active: active (running) since Sat 2016-09-24 21:47:20 IST; 1min 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1570 ExecStop=/etc/init.d/glusterfs-server stop (code=exited, status=0/SUCCESS)
  Process: 1664 ExecStart=/etc/init.d/glusterfs-server start (code=exited, status=0/SUCCESS)
    Tasks: 7 (limit: 512)
   Memory: 25.5M
      CPU: 3.552s
   CGroup: /system.slice/glusterfs-server.service
           └─1673 /usr/sbin/glusterd -p /var/run/glusterd.pid

Sep 24 21:47:16 gluster1.itzgeek.local systemd[1]: Starting LSB: GlusterFS server...
Sep 24 21:47:16 gluster1.itzgeek.local glusterfs-server[1664]:  * Starting glusterd service glusterd
Sep 24 21:47:20 gluster1.itzgeek.local glusterfs-server[1664]:    ...done.
Sep 24 21:47:20 gluster1.itzgeek.local systemd[1]: Started LSB: GlusterFS server.

Firewall konfigurieren:

Sie müssten entweder die Firewall deaktivieren oder die Firewall so konfigurieren, dass alle Verbindungen innerhalb eines Clusters zugelassen werden.

sudo iptables -I INPUT -p all -s <ip-address> -j ACCEPT

Speicher hinzufügen:

Angenommen, Sie haben eine Ersatzfestplatte auf Ihrem Computer, /dev/sdb ist derjenige, den ich hier für einen Ziegelstein verwenden werde. Erstellen Sie eine einzelne Partition auf der Ersatzfestplatte, wie unten gezeigt.

Sie müssten die folgenden Schritte auf beiden Knoten ausführen.

sudo fdisk /dev/sdb

Formatieren Sie die erstellte Partition mit dem Dateisystem Ihrer Wahl.

sudo mkfs.ext4 /dev/sdb1

Mounten Sie die Festplatte in einem Verzeichnis namens /data/gluster .

sudo mkdir -p /data/gluster
sudo mount /dev/sdb1 /data/gluster

Fügen Sie einen Eintrag zu /etc/fstab hinzu um den Mount über den Neustart hinweg persistent zu halten.

echo "/dev/sdb1 /data/gluster ext4 defaults 0 0" | sudo tee --append /etc/fstab

Konfiguriere GlusterFS auf Ubuntu 16.04:

Bevor wir ein Volume erstellen, müssen wir einen vertrauenswürdigen Speicherpool erstellen, indem wir gluster2.itzgeek.local hinzufügen . Sie können GlusterFS-Konfigurationsbefehle auf jedem Server im Cluster ausführen, der denselben Befehl auf allen anderen Servern ausführt.

Hier werde ich alle GlusterFS-Befehle in gluster1.itzgeek.local ausführen Knoten.

raj@gluster1:~$ sudo gluster peer probe gluster2.itzgeek.local
peer probe: success.

Überprüfen Sie den Status des vertrauenswürdigen Speicherpools.

raj@gluster1:~$ sudo gluster peer status

Number of Peers: 1

Hostname: gluster2.itzgeek.local
Uuid: 51470928-dfa8-42e1-a221-d7bbcb8c13bd
State: Peer in Cluster (Connected)

Listen Sie den Speicherpool auf.

raj@gluster1:~$ sudo gluster pool list

UUID                                    Hostname                State
51470928-dfa8-42e1-a221-d7bbcb8c13bd    gluster2.itzgeek.local  Connected
dc7c1639-d21c-4adf-b28f-5150229e6980    localhost               Connected

GlusterFS-Volume einrichten:

Erstellen Sie einen Baustein (Verzeichnis) mit dem Namen „gvol0 ” im gemounteten Dateisystem auf beiden Knoten.

sudo mkdir -p /data/gluster/gvol0

Da wir ein repliziertes Volume verwenden werden, erstellen Sie das Volume mit dem Namen „gvol0 ” mit zwei Repliken.

raj@gluster1:~$ sudo gluster volume create gvol0 replica 2 gluster1.itzgeek.local:/data/gluster/gvol0 gluster2.itzgeek.local:/data/gluster/gvol0
volume create: gvol0: success: please start the volume to access data

Lautstärke starten.

raj@gluster1:~$ sudo gluster volume start gvol0
volume start: gvol0: success

Überprüfen Sie den Status des erstellten Volumes.

raj@gluster1:~$ sudo gluster volume info gvol0

Volume Name: gvol0
Type: Replicate
Volume ID: ca102e4b-6cd1-4d9d-9c5a-03b882c76da0
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster1.itzgeek.local:/data/gluster/gvol0
Brick2: gluster2.itzgeek.local:/data/gluster/gvol0
Options Reconfigured:
transport.address-family: inet
performance.readdir-ahead: on
nfs.disable: on

GlusterFS-Client einrichten:

Installieren Sie glusterfs-client Paket zur Unterstützung des Mountens von GlusterFS-Dateisystemen. Führen Sie alle Befehle als root aus Benutzer.

$ su -

### CentOS / RHEL ###
yum install -y glusterfs-client

### Ubuntu / Debian ###
apt-get install -y glusterfs-client

Erstellen Sie ein Verzeichnis zum Mounten des GlusterFS-Dateisystems.

mkdir -p /mnt/glusterfs

Mounten Sie nun das GlusterFS-Dateisystem unter /mnt/glusterfs mit dem folgenden Befehl.

mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt/glusterfs

Sie können auch gluster2.itzgeek.local verwenden statt gluster1.itzgeek.com im obigen Befehl.

Überprüfen Sie das gemountete GlusterFS-Dateisystem.

[root@client ~]# df -hP /mnt/glusterfs
Filesystem                     Size  Used Avail Use% Mounted on
gluster1.itzgeek.local:/gvol0  4.8G   11M  4.6G   1% /mnt/glusterfs

Sie können auch den folgenden Befehl verwenden, um das GlusterFS-Dateisystem zu überprüfen.

[root@client ~]# cat /proc/mounts
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=490448k,nr_inodes=122612,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0
devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs ro,seclabel,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls 0 0
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos-root / xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0
/dev/mapper/centos-home /home xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
/dev/sda1 /boot xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0
tmpfs /run/user/0 tmpfs rw,seclabel,nosuid,nodev,relatime,size=100136k,mode=700 0 0
gluster1.itzgeek.local:/gvol0 /mnt/glusterfs fuse.glusterfs rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0

Fügen Sie den folgenden Eintrag zu /etc/fstab hinzu zum automatischen Mounten während des Systemstarts.

gluster1.itzgeek.local:/gvol0 /mnt/glusterfs glusterfs  defaults,_netdev 0 0

Testen Sie GlusterFS-Replikation und Hochverfügbarkeit:

GlusterFS-Serverseite:

Um die Replikation zu prüfen, mounten Sie das erstellte GlusterFS-Volume auf demselben Speicherknoten.

raj@gluster1:~$ sudo mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt
raj@gluster2:~$ sudo mount -t glusterfs gluster2.itzgeek.local:/gvol0 /mnt

Daten in /mnt Verzeichnis beider Knoten ist immer gleich (Replikation).

GlusterFS-Clientseite:

Lassen Sie uns einige Dateien im gemounteten Dateisystem auf client.itzgeek.local. erstellen

touch /mnt/glusterfs/file1
touch /mnt/glusterfs/file2

Überprüfen Sie die erstellten Dateien.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2

Testen Sie die beiden GlusterFS-Knoten, ob sie dieselben Daten in /mnt haben .

raj@gluster1:~$ ll /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 20:52 ./
drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../
-rw-r--r--  1 root root    0 Sep 26 20:52 file1
-rw-r--r--  1 root root    0 Sep 26 20:52 file2


raj@gluster2:~$ ls -al /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 06:30 .
drwxr-xr-x 23 root root 4096 Sep 24 08:39 ..
-rw-r--r--  1 root root    0 Sep 26  2016 file1
-rw-r--r--  1 root root    0 Sep 26  2016 file2

Wie Sie wissen, haben wir das GlusterFS-Volume von gluster1.itzgeek.local gemountet auf client.itzgeek.local , jetzt ist es an der Zeit, die Hochverfügbarkeit des Volumes zu testen, indem Sie den Knoten herunterfahren.

raj@gluster1:~$ sudo poweroff

Testen Sie nun die Verfügbarkeit der Dateien, Sie würden Dateien sehen, die wir kürzlich erstellt haben, obwohl der Knoten ausgefallen ist.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2
Aufgrund der Umstellung von GlusterFS auf gluster2.itzgeek.local kann es vorkommen, dass Sie beim Ausführen von Befehlen auf dem gemounteten GlusterFS-Dateisystem langsam sind wenn die client.itzgeek.local kann gluster1.itzgeek.local nicht erreichen .

Erstellen Sie einige weitere Dateien im GlusterFS-Dateisystem, um die Replikation zu überprüfen.

touch /mnt/glusterfs/file3
touch /mnt/glusterfs/file4

Überprüfen Sie die Anzahl der Dateien.

[root@client ~]# ll /mnt/glusterfs/
total 0
-rw-r--r--. 1 root root 0 Sep 26 11:22 file1
-rw-r--r--. 1 root root 0 Sep 26 11:22 file2
-rw-r--r--. 1 root root 0 Sep 26 11:26 file3
-rw-r--r--. 1 root root 0 Sep 26 11:26 file4

Da die gluster1 heruntergefahren ist, werden alle Ihre Daten jetzt auf gluster2.itzgeek.local geschrieben wegen Hochverfügbarkeit. Schalten Sie nun den node1 ein (gluster1.itzgeek.local ).

Überprüfen Sie die /mnt der gluster1.itzgeekk.local; Sie sollten alle vier Dateien im Verzeichnis sehen, dies bestätigt, dass die Replikation wie erwartet funktioniert.

raj@gluster1:~$ sudo mount -t glusterfs gluster1.itzgeek.local:/gvol0 /mnt
[sudo] password for raj:

raj@gluster1:~$ ll /mnt/
total 12
drwxr-xr-x  4 root root 4096 Sep 26 20:59 ./
drwxr-xr-x 24 root root 4096 Sep 25 21:57 ../
-rw-r--r--  1 root root    0 Sep 26 20:52 file1
-rw-r--r--  1 root root    0 Sep 26 20:52 file2
-rw-r--r--  1 root root    0 Sep 26 20:56 file3
-rw-r--r--  1 root root    0 Sep 26 20:56 file4

Das ist alles.


Debian
  1. So installieren und konfigurieren Sie Docker unter Debian 11

  2. So installieren und konfigurieren Sie Mariadb 10 in Debian 11

  3. So installieren und konfigurieren Sie MongoDB 5 unter Debian 11

  4. So installieren und konfigurieren Sie Redis 6 unter Debian 11

  5. Installieren und konfigurieren Sie Apache und PHP mit cgi auf Ubuntu oder Debian

So installieren und konfigurieren Sie den ELK-Stack unter Ubuntu und Debian

So installieren und konfigurieren Sie Git in Debian 11

Installieren und konfigurieren Sie OwnCloud auf Ubuntu 21 / Debian 11

Installieren und konfigurieren Sie Virtualmin auf Ubuntu 20.04 / Debian 10 Server

Wie installiere und konfiguriere ich Apache unter Debian 11?

Installieren und konfigurieren Sie Fail2ban unter Debian 11