System ist ein Debian Wheezy
Ziel ist es auf 2 Servern GlusterFS 3.4.0 zu installieren und ein Striped Volume zu erstellen.
1. Installtion – GlusterFS – GPG Key hinzufügen
# wget -O – http://download.gluster.org/pub/gluster/glusterfs/3.4/3.4.0/Debian/pubkey.gpg | apt-key add –
GlusterFS – in der Sourcelist eintragen, da in Wheezy nur die 3. 2.7-3 enthalten ist
# echo deb http://download.gluster.org/pub/gluster/glusterfs/3.4/3.4.0/Debian/apt wheezy main > /etc/apt/sources.list.d/gluster.list
1.1. Installation – Updaten der Paketquellen
# aptitude update && aptitude safe-upgrade
1.2 Installation – GlusterFS – Server Installation:
# aptitude install glusterfs-common glusterfs-server
2. Vorbereitungen – GlusterFS – Export /Daten Verzeichnis erstellen
Dieser enthält die Daten und stellt das Brick für das Volume auf dem Server da. Hier wird üblicherweise eine eingebundene Festplatte aus dem /mnt/disk1 etc. verwendet.
# mkdir -p /glusterfs/data
2.1. Vorbereitungen- GlusterFS – hosts anpassen
Am besten werden die statischen IP-Adressen in die /etc/hosts eingetragen, eine Reservierung in einem funktionierendem DNS geht natürlich auch
# mcedit /etc/hosts
192.168.0.11 glusternode1
192.168.0.12 glusternode2
…
3. Konfiguration – GlusterFS – Trusted Storage Pool erstellen
Bevor wir Volumes erstellen können, muss ein Pool der vertrauenswürdigen Server erstellt werden, die auch später zum Volume gehören.
//ausgeführt von glusternode1
# gluster peer probe glusternode2
alternativ vom anderen Brick / Server
# ausgeführt von glusternode2
# gluster peer probe glusternode1
3.1. Konfiguration – GlusterFS – Trusted Storage Pool überprüfen
//ausgeführt von glusternode1
#gluster peer status
Number of Peers: 1
Hostname: glusternode2
Port: 24007
Uuid: 26ae02c1-5d95-4b4b-a29d-d645f57d441f
State: Peer in Cluster (Connected)
Hier können wir genau sehen, dass der andere Node zum Pool gehört. Selbes kann von glusternode2 ausgeführt werden.
3.2. Konfiguration – GlusterFS – Server aus Trusted Storage Pool entfernen
Solltest du dich vertippt haben oder ein Server aus den Pool entfernt werden kann folgendes ausgeführt werden:
# gluster peer detach glusternode2
# gluster peer status
peer status: No peers present
3.3. Konfiguration – GlusterFS – Striped Volume erstellen
Als nächstes möchte ich ein Striped Volume erstellen. Dies ist eine Verteilung der Dateien auf alle im Pool befindlichen Server / Bricks des Volume. Dabei wird die einzelne Datei zerlegt und auf alle Bricks verteilt. Vorteil ist die Performance da die Datei auf z.B. 2 Bricks liegt und beide Server gleichzeitig angesprochen werden. Nachteil ist die Sicherheit, denn sollte ein Server ausfallen sind alle Daten weg.
Grundbefehl -> gluster volume create <NEW-VOLNAME> [stripe <COUNT>] [replica <COUNT>] [transport <tcp|rdma|tcp,rdma>] <NEW-BRICK>
Dieser wird NUR auf einem der Server ausgeführt, die anderen werden dann entpsrechend automatisch informiert und konfiguriert.
Erklärung
gluster volume create = Befehl zum erstellen eines Volume
new-volname = der Name des Volume, der frei aber nur einmalig vergeben wird
stripe <count> = erstellt ein Striped-Vol mit der Anzahl count Server oder
replica <count> = erstellt ein Replicated-Vol mit der Anzahl count Server
transport = gibt die Verbindung unter den Server an, z.B. tcp, rdma – wird nichts angegeben ist tcp Default
new-brick = ist das Storage das auf dem Server für dieses Vol zur Verfügung gestellt wird – z.B. ein Mountpoint
also z.B. -> gluster volume create vol1 stripe 2 transport tcp glusternode1:/mnt/vol1 glusternode2:/mnt/vol2
oder wie in diesem Beispiel-> gluster volume create vol1 stripe 2 glusternode1:/glusterfs/data glusternode2:/glusterfs/data
Ergebnis: volume create: vol1: success: please start the volume to access data
Nun können wir im eigentlichen Konfiguratinsverzeichnis unter „vols“ folgendes beobachten:
# ls /var/lib/glusterd/vols/vol1/
bricks/
cksum
info
node_state.info
rbstate
trusted-vol1-fuse.vol
vol1-fuse.vol
vol1.glusternode1.glusterfs-data.vol
vol1.glusternode2.glusterfs-data.vol
4. Starten – GlusterFS – Volume vol1 starten
# gluster volume start vol1
volume start: vol1: success
4.1. Starten – GlusterFS – Prüfen des Volume vol1
Nun schauen wir nach ob das Volume gestartet wurde und ob die Einstellungen, Distribute mit 2 Bricks über TCP stimmen:
# gluster volume info
Volume Name: vol1
Type: Stripe
Volume ID: e2c07968-4f01-441f-b936-58a643bac7c7
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: glusternode1:/glusterfs/data
Brick2: glusternode2:/glusterfs/data
5. Sicherheit – GlusterFS – Zugriff steuern
Damit nur bestimmte Clients und Server kommunizieren dürfen, oder aber ganze Netze erlaubt sind kann folgendes ausgeführt werden:
Nur einzelne Server erlauben
# gluster volume set vol1 auth.allow 192.168.0.10, 192.168.0.11, 192.168.0.12, 192.168.0.13, 192.168.0.14
volume set: success
Ein ganzes Netz von 192.168.0.1-192.168.0.254 erlauben
# gluster volume set vol1 auth.allow 192.168.0.*
volume set: success
5.1 Sicherheit – GlusterFS Zugriff prüfen
Wer darf eigentlich auf die Server und somit auf die Volumes zugreifen?
gluster volume info
VVolume Name: vol1
Type: Stripe
Volume ID: e2c07968-4f01-441f-b936-58a643bac7c7
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: glusternode1:/glusterfs/data
Brick2: glusternode2:/glusterfs/data
Options Reconfigured:
auth.allow: 192.168.0.*
Wie an der letzten Zeile zu sehen alle Server von 192.168.0.1-192.168.0.254.
6. Informationen – GlusterFS – Konfigurationsdateien
Diese liegen alle im Verzeichnis:
# ls /var/lib/glusterd/
geo-replication glustershd hooks options vols
glusterd.info groups nfs peers
6.1. Informationen – Befehl – glusterfsd –version
glusterfs 3.4.0 built on Jul 19 2013 03:56:38
Repository revision: git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2013 Red Hat, Inc. <http://www.redhat.com/>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
It is licensed to you under your choice of the GNU Lesser
General Public License, version 3 or any later version (LGPLv3
or later), or the GNU General Public License, version 2 (GPLv2),
in all cases as published by the Free Software Foundation.
Links
http://gluster.org/community/documentation/index.php/Arch/A_Newbie%27s_Guide_to_Gluster_Internals
http://gluster.org/community/documentation/index.php/Translators_options
http://joejulian.name/blog/should-i-use-stripe-on-glusterfs/
Randnotizen
GlusterFS – Volume erstellen Defaultwerte
Hier der Inhalt der glusterd.vol Datei nach der Installation vorhanden ist:
cat /etc/glusterfs/glusterd.vol
1 volume management
2 type mgmt/glusterd
3 option working-directory /var/lib/glusterd
4 option transport-type socket,rdma
5 option transport.socket.keepalive-time 10
6 option transport.socket.keepalive-interval 2
7 option transport.socket.read-fail-log off
8 end-volume
Erklärung
Zeile 1 – mit „volume“ wird dem Parser der Datei der Beginn der Konfiguration angezeigt – management ist der Name des Volume der einmalig sein muss
Zeile 2 – gibt dem Parser an welcher Translator verwendet werden soll (weitere: cluster/distributet, cluster/replicate, protocol/client, cluster/unify, scheduler/alu, performance/write-behind, performance/io-cache) – und somit den Pfad zu den Objektdateien die geladen werden müssen
Zeile 8 – zeigt dem Parser auf, dass hier das Ende der Konfiguration ereicht ist
GlusterFS – Volume erstellen die geänderte Datei
mcedit /etc/glusterfs/glusterd.vol
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.