XenServer mit Glusterfs
XenServer mit GlusterFS installieren
GlusterFS ist ein verteiltes Dateisystem das man mittels NFS mounten kann. In dieser Anleitung zeige ich wie man alles auf zwei XenServer installieren muss damit die lokalen Festplatten über GlusterFS erreichbar sind.
In dieser Anleitung hab ich zwei Rechner mit dem XenServer 6.5 aufgesetzt. Und alle Updates eingespielt.
Hierzu habe ich das XenServer Update Script verwendet. Damit geht es um einiges schneller als per XenCenter.
Die Server
- xenserver1.local 192.168.0.221
- 1 TB lokale Festplatte
- xenserver2.local 192.168.0.222
- 1 TB lokale Festplatte
Bei der Installation des XenServers hab ich die Option „Enable thin provisioning“ aktiviert. Dadurch muss man nicht das Local storage erst entfernen um Platz für das GlusterFS zu haben.
Als erstes prüft man ob mittels XenCenter der XenServer auf dem aktuellen stand ist.
Wenn nicht zieht man erst mal alle Updates nach.
XenServer vorbereiten
Falls man bei der Installation das thin provisioning nicht eingeschaltet hat kann man das LVM es mittels dieser Anleitung entfernen.
Bei mir kam ein Fehler das das Citrix.repo nicht funktioniert. Deswegen schaltet man es am besten aus.
Bei der ersten Installation hatte der XenServer 6.5 kein Local storage.
Bei dem zweiten wurde allerdings ein Local storage angelegt
Man kann es aber auf der Konsole mit diesem Befehl anlegen falls man das wünscht. Wird aber in dieser Anleitung nicht benötigt
Um das Local Storage zu entfernen hab ich diese Anleitung benutzt
Festplatten vorbereiten
Als nächstes formatieren wir die Festplatte und legen einen mount point an.
Prüfen der Partitionen
7 0 57296 loop0
8 0 976762584 sda
8 1 4193297 sda1
8 2 4193297 sda2
8 3 968372935 sda3
Jetzt formatieren wir die sda3. Das kann je nach Größe und Festplatten Geschwindigkeit etwas dauern.
Als nächstes legen wir ein Verzeichnis an in das wir die Festplatte mounten werden.
Dieses Verzeichnis dient dann dem GlusterFS als datastore.
echo „/dev/sda3 /export ext3 defaults,noatime 0 0“ >> /etc/fstab
mount -a
mkdir /export/{datastore1,isostore1}
rm /export/lost+found/ -rf
Iptables einstellen für GlusterFS
Für das GlusterFS werden noch weiter Ports benötigt damit es funktionieren kann.
Leider hatte ich noch ein paar Probleme mit den regeln und der Stabilität von GlusterFS
Um die Firewall abzuschalten nutzt man diesen Befehl.
Das sind die verwendeten iptables Regeln die von GlusterFS genutzt werden.
iptables -A RH-Firewall-1-INPUT -p tcp –dport 111 -j ACCEPT -m comment –comment „GlusterFS“
iptables -A RH-Firewall-1-INPUT -p udp –dport 111 -j ACCEPT -m comment –comment „GlusterFS“
iptables -A RH-Firewall-1-INPUT -p tcp –dport 38465:38467 -j ACCEPT -m comment –comment „GlusterFS“
service iptables save
Hier könnte man noch nur das Lokales Netzwerk erlauben das wäre dann mit der Option -s 192.168.0.0/24 am ende gemacht
Da Iptables die Regeln immer hinten anhängt müssen wir die /etc/sysconfig/iptables bereiten und die REJECT Regel nach unten setzen
# Generated by iptables-save v1.4.16.3 on Sat Aug 15 23:49:37 2015 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [31:4126] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -i xenapi -p udp -m udp --dport 67 -j ACCEPT -A RH-Firewall-1-INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 694 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.0.0/24 -p tcp --dport 24007:24047 -m comment --comment GlusterFS -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.0.0/24 -p tcp --dport 111 -m comment --comment GlusterFS -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.0.0/24 -p udp --dport 111 -m comment --comment GlusterFS -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.0.0/24 -p tcp --dport 38465:38467 -m comment --comment GlusterFS -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Sat Aug 15 23:49:37 2015
Dann können wir die iptables Regeln neu laden.
GlusterFS Installation
Als erstes holt man sich die Repo Daten.
wget http://download.gluster.org/pub/gluster/glusterfs/3.5/LATEST/EPEL.repo/glusterfs-epel.repo.el5
mv glusterfs-epel.repo.el5 glusterfs-epel.repo
Jetzt kann man das update ausführen und sich die Pakete anzeigen lassen
Loading mirror speeds from cached hostfile
Setting up Update Process
No Packages marked for Update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
===================================================================
Matched: glusterfs
===================================================================
glusterfs.x86_64 : Cluster File System
glusterfs-api.x86_64 : GlusterFS api library
glusterfs-api-devel.x86_64 : Development Libraries
glusterfs-cli.x86_64 : GlusterFS CLI
glusterfs-client-xlators.x86_64 : GlusterFS client-side translators
glusterfs-debuginfo.x86_64 : Debug information for package glusterfs
glusterfs-devel.x86_64 : Development Libraries
glusterfs-extra-xlators.x86_64 : Extra Gluster filesystem Translators
glusterfs-fuse.x86_64 : Fuse client
glusterfs-ganesha.x86_64 : NFS-Ganesha configuration
glusterfs-libs.x86_64 : GlusterFS common libraries
glusterfs-rdma.x86_64 : GlusterFS rdma support for ib-verbs
glusterfs-resource-agents.x86_64 : OCF Resource Agents for GlusterFS
glusterfs-server.x86_64 : Clustered file-system server
python-gluster.x86_64 : GlusterFS python library
Jetzt können wir GlusterFS installieren
===============================================================================
Package Arch Version Repository Size
===============================================================================
Installing:
glusterfs-server x86_64 3.5.5-2.el5 glusterfs-epel 640 k
Installing for dependencies:
glusterfs x86_64 3.5.5-2.el5 glusterfs-epel 1.5 M
glusterfs-api x86_64 3.5.5-2.el5 glusterfs-epel 76 k
glusterfs-cli x86_64 3.5.5-2.el5 glusterfs-epel 130 k
glusterfs-fuse x86_64 3.5.5-2.el5 glusterfs-epel 102 k
glusterfs-libs x86_64 3.5.5-2.el5 glusterfs-epel 301 k
Transaction Summary
==============================================================================
Install 6 Package(s)
Upgrade 0 Package(s)
Sicherstellen das GlusterFS beim reboot startet
GlusterFS manuell starten
Jetzt können wir den anderen Server in das GlusterFS hängen. Dies muss nur auf einer Node gemacht werden.
Als nächstes erstelen wir die beiden GlusterFS Volumes datastore1 (für die VMs) und isostore1 (für die ISO Files)
gluster volume create isostore1 replica 2 xenserver1.local:/export/isostore1 xenserver2.local:/export/isostore1
Bevor die Volumes gestartet werden können muss noch NFS aktiviert werden
gluster volume set isostore1 nfs.port 2049
gluster volume start datastore1
gluster volume start isostore1
Jetzt haben wird zwei GlusterFS Volumes angelegt die per NFS gemountet werden können.
Das kann man jetzt über das XenCenter machen.
Einrichtung NFS im XenCenter
Bei der NFS share location gibt man am besten localhost:/datastore1 an.
Den Rest macht das GlusterFS
GlusterFS Performance Tuning
Hier noch ein paar Performance Tuning Einstellungen die man einschalten sollte für den datastore1
gluster volume set datastore1 nfs.addr-namelookup off
gluster volume set datastore1 nfs.trusted-sync on
gluster volume set datastore1 performance.cache-size 128MB
gluster volume set datastore1 performance.write-behind-window-size 4MB
gluster volume set datastore1 performance.io-thread-count 64
gluster volume set datastore1 performance.io-cache on
gluster volume set datastore1 performance.read-ahead on
- performance.cache-size Größe des read cache in byte
- Default: 32MB
- performance.write-behind-window-size Größe des whrite behind caches per File
- Default: 1MB
- performance.io-thread-count Die maximale anzahl an threads für IO
- Default: 16
- performance.read-ahead Wie beim RAID Controller wird versucht folgenden Blöcke vorrauszulesen
- Default: off
Eventuell sollte man auch bei der Dom0 den RAM vergrößern. Standard ist 2GB
Da das System jetzt noch ein GlusterFS mit RAM versorgen muss.
Anschließend muss man noch einen Neustart machen.
Da die swapp Einstellungen auf dem XenServer nicht optimal sind sollteman die auch noch ändern
Und Falls das System doch mal Swappen tut.
Schreibe einen Kommentar