
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 |
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 file2Aufgrund 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.