Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:hochverfuegbarkeit_glusterfs

Hochverfügbarkeit GlusterFS

GlusterFS ist eine „OpenSource“ Dateisystem-Replikationsmethode, welche in der Lage ist, eine Skalierung auf mehrere Petabyte (aktuell, 72 BrontoBytes!) zu verwirklichen und die parallele Nutzung durch tausende von Clients, bewerkstelligen kann.

GlusterFS-Cluster nutzt Storage Building Blocks über Infiniband RDMA oder TCP/IP-Interconnect, aggregieren Festplatte und Speicher-Ressourcen und verwalten Daten in einem einzigen globalen Namensraum.

GlusterFS Architektur - Beispiel Überblick

Vorbereitung

Nachfolgende vorbereitende Schritte sind notwendig, um ein GlusterFS-Dateisystem zu betreiben.

  • Eintragung der beteiligtne Server bzw. Knoten in die Namensauflösung DNS, bzw. /etc/hosts.
  • Freischaltung der benötigten Paketfilter-Regeln, hier iptables.
  • Einbindung des externen, benötigten Repositorys, hier das von EPEL

um anschließend die

  • Installation der benötigten Server-Software-Komponenten.
  • Installation der benötigten Client-Software-Komponenten.
  • Einrichten von Mount-Points auf den nutzenden Clients.

durchführen zu können.

/etc/hosts

In der nachfolgend gezeigten Installation eines GlusterFS-Dateisystems, werden zusätzlich zu möglichen Eintragungen im DNS, nachfolgende Eintragungen in allen beteiligten Servern Knoten, durchgeführt:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.200  ha-manager ha-manager.intra.tachtler.net
192.168.1.201  ha-node-01 ha-node-01.intra.tachtler.net
192.168.1.202  ha-node-02 ha-node-02.intra.tachtler.net

Server/Knoten 2 - IP-Adresse: 192.168.1.202:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.200  ha-manager ha-manager.intra.tachtler.net
192.168.1.201  ha-node-01 ha-node-01.intra.tachtler.net
192.168.1.202  ha-node-02 ha-node-02.intra.tachtler.net

/etc/sysconfig/iptables-save

Damit die Server/Knoten auch erreichbar sind und nicht die Spiegelung der Festplatten vom Paketfilter iptables blockiert wird, müssen nachfolgende Regel zum iptables-Regelwerk auf allen Servern hinzugefügt werden.

Um die aktuellen iptables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1    23732 6343K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3       12   693 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        6   360 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22  
5       86  2752 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 22420 packets, 17M bytes)
num   pkts bytes target     prot opt in     out     source               destination

Nachfolgende Befehle, fügen folgende iptables-Regeln dem iptables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
  • -A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
  • -A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24041 -j ACCEPT
  • -A INPUT -m state --state NEW -m tcp -p tcp --dport 38465:38467 -j ACCEPT

und hier die Befehle:

# iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
# iptables -I INPUT 6 -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
# iptables -I INPUT 7 -m state --state NEW -m tcp -p tcp --dport 24007:24041 -j ACCEPT
# iptables -I INPUT 8 -m state --state NEW -m tcp -p tcp --dport 38465:38467 -j ACCEPT

:!: HINWEIS - Nachfolgende Ports sind wie folgt zu setzen:

  • 24007:24041 - Port 24007, 24008 und 24009, danach für jeden Knoten +1 (24009-24041 = max. 32 Knoten)
  • 38465:38467 - Port 38465 bis 38467, nur bei verwendung von NFS-Mount-Points nötig.

Eine erneute Abfrage des iptables-Regelwerks, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1      119  9860 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:111
6        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:111
7        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpts:24007:24041
8        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpts:38465:38467
9        1    32 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 6 packets, 936 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Die neuen Zeilen sind an Position 5 bis Postition 8 zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:111
6        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:111
7        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpts:24007:24041
8        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpts:38465:38467
...

Um diese iptables-Regeln dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl, abschließend noch ausgeführt werden:

# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

EPEL-Repository einbinden

Bevor externe Repository's auf den Servern/Knoten eingebunden werden, sollte sichergestellt werden, dass keine Pakete aus externen Repositorys, die der eigentlichen CentOS-Repositorys überschreiben.

Dies kann durch die Installation des sogenannten

  • Priorities-Plugin für den Paket-Manager yum

erfolgen.

Die Installation des Priorities-Plugin für den Paket-Manager yum wird durch nachfolgenden Befehl durchgeführt:

# yum install yum-plugin-priorities
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package yum-plugin-priorities.noarch 0:1.1.30-14.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                     Arch         Version              Repository  Size
================================================================================
Installing:
 yum-plugin-priorities       noarch       1.1.30-14.el6        base        22 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 22 k
Installed size: 28 k
Is this ok [y/N]: y
Downloading Packages:
yum-plugin-priorities-1.1.30-14.el6.noarch.rpm           |  22 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : yum-plugin-priorities-1.1.30-14.el6.noarch                   1/1 
  Verifying  : yum-plugin-priorities-1.1.30-14.el6.noarch                   1/1 

Installed:
  yum-plugin-priorities.noarch 0:1.1.30-14.el6                                  

Complete!

Der Inhalt des Paketes yum-plugin-priorities kann mit nachfolgendem Befehl angezeigt werden:

# rpm -qil yum-plugin-priorities
Name        : yum-plugin-priorities        Relocations: (not relocatable)
Version     : 1.1.30                            Vendor: CentOS
Release     : 14.el6                        Build Date: Fri 22 Jun 2012 02:23:05 PM CEST
Install Date: Fri 07 Sep 2012 11:28:52 AM CEST      Build Host: c6b8.bsys.dev.centos.org
Group       : System Environment/Base       Source RPM: yum-utils-1.1.30-14.el6.src.rpm
Size        : 28555                            License: GPLv2+
Signature   : RSA/SHA1, Mon 25 Jun 2012 12:20:22 AM CEST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://yum.baseurl.org/download/yum-utils/
Summary     : plugin to give priorities to packages from different repos
Description :
This plugin allows repositories to have different priorities.
Packages in a repository with a lower priority can't be overridden by packages
from a repository with a higher priority even if repo has a later version.
/etc/yum/pluginconf.d/priorities.conf
/usr/lib/yum-plugins/priorities.py
/usr/lib/yum-plugins/priorities.pyc
/usr/lib/yum-plugins/priorities.pyo
/usr/share/doc/yum-plugin-priorities-1.1.30
/usr/share/doc/yum-plugin-priorities-1.1.30/COPYING

Entscheidend ist nun, im Verzeichnis

  • /etc/yum.repos.d/

den dort enthaltenen Repository-Konfigurationsdateien, durch Ergänzung nachfolgender Zeile, eine Priorität zuzuweisen (nur relevanter Ausschnitt):

...
priority=1
...

Was im Beispiel der Konfigurationsdatei

  • /etc/yum.repos.d/Centos-Base-repo

dann wie folgt aussehen könnte (nur beispielhafter relevanter Ausschnitt):

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
...

:!: HINWEIS - Den eigenen Rpository's aus CentOS sollte eine höhere Priorität, durch Zuweisung einer kleineren Zahl gegeben werden!

Um EPEL auf den Servern/Knoten Nutzen zu können, muss nachfolgende Datei heruntergeladen werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
--2012-09-07 13:06:13--  http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
Resolving dl.fedoraproject.org... 209.132.181.23, 209.132.181.24, 209.132.181.25, ...
Connecting to dl.fedoraproject.org|209.132.181.23|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14496 (14K) [application/x-rpm]
Saving to: “epel-release-6-7.noarch.rpm”

100%[======================================>] 14,496      72.2K/s   in 0.2s    

2012-09-07 13:06:14 (72.2 KB/s) - “epel-release-6-7.noarch.rpm” saved [14496/14496]

Anschließend sollte zur Prüfung der Echtheit des soeben heruntergeladenen rpm-Pakets

  • epel-release-6-7.noarch.rpm

dessen Schlüssel, mit dem das Paket signiert wurde, in die RPM-Paket-Verwaltung importiert werden:

# rpm --import https://fedoraproject.org/static/0608B895.txt

Danach kann das so heruntergeladene Paket, mit nachfolgendem Befehl auf dessen Echtheit, überprüft werden:

# rpm -K epel-release-6-7.noarch.rpm 
epel-release-6-7.noarch.rpm: rsa sha1 (md5) pgp md5 OK

Abschließend kann dann, mit nachfolgendem Befehl, das Paket installiert werden:

# yum localinstall epel-release-6-7.noarch.rpm 
Loaded plugins: fastestmirror, priorities
Setting up Local Package Process
Examining epel-release-6-7.noarch.rpm: epel-release-6-7.noarch
Marking epel-release-6-7.noarch.rpm to be installed
Loading mirror speeds from cached hostfile
base                                                     | 3.7 kB     00:00     
extras                                                   | 3.0 kB     00:00     
updates                                                  | 3.5 kB     00:00     
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:6-7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package            Arch         Version   Repository                      Size
================================================================================
Installing:
 epel-release       noarch       6-7       /epel-release-6-7.noarch        22 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total size: 22 k
Installed size: 22 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : epel-release-6-7.noarch                                      1/1 
  Verifying  : epel-release-6-7.noarch                                      1/1 

Installed:
  epel-release.noarch 0:6-7                                                     

Complete!

Der Inhalt des Pakets epel-release-6-7.noarch kann mit nachfolgendem Befehl angezeigt werden:

# rpm -qil epel-release
Name        : epel-release                 Relocations: (not relocatable)
Version     : 6                                 Vendor: Fedora Project
Release     : 7                             Build Date: Wed 09 May 2012 05:58:17 PM CEST
Install Date: Fri 07 Sep 2012 11:41:46 AM CEST      Build Host: x86-03.phx2.fedoraproject.org
Group       : System Environment/Base       Source RPM: epel-release-6-7.src.rpm
Size        : 22169                            License: GPLv2
Signature   : RSA/8, Thu 10 May 2012 05:00:09 PM CEST, Key ID 3b49df2a0608b895
Packager    : Fedora Project
URL         : http://download.fedora.redhat.com/pub/epel
Summary     : Extra Packages for Enterprise Linux repository configuration
Description :
This package contains the Extra Packages for Enterprise Linux (EPEL) repository
GPG key as well as configuration for yum and up2date.
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
/etc/rpm/macros.ghc-srpm
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/epel.repo
/usr/share/doc/epel-release-6
/usr/share/doc/epel-release-6/GPL

:!: HINWEIS - Abschließend sollte hier die Priorität des EPEL-Repositorys, eine niedrigere Priorität, durch Zuweisung einer größeren Zahl, als die der eigenen Rpository's aus CentOS gegeben werden!

Was im Beispiel der Konfigurationsdatei

  • /etc/yum.repos.d/epel.repo

dann wie folgt aussehen könnte (nur beispielhafter relevanter Ausschnitt):

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
priority=10
...

Server: Installation

:!: HINWEIS - Die Installation erfolgt NUR auf den Server/Knoten (ha-node-01 und ha-node-02) !!!

Um die Server-Komponenten von GlusterFS zu installieren, sollten nachfolgende Pakete mit nachfolgendem Befehl installiert werden:

  • glusterfs –> Hauptkomponente (Original: core)
  • glusterfs-server –> Server-Komponenten (Startscripte usw.)
  • glusterfs-fuse –> API-Komponenten (Client-Unterstützung)

optional zusätzlich, je nach Einsatzzweck und Kompfort, wird emfpohlen die folgenden Pakete ebenfalls zu installieren:

  • glusterfs-rdma –> Infiniband RDMA Datenaustausch-Paket
  • glusterfs-geo-replication –> Replication über Standorte und Netzwerkgrenzen hinweg
  • glusterfs-vim –> Editor-Schema für vim

Nachfolgend werden hier, als Beispiel nachfolgende Pakete installiert:

# yum install glusterfs glusterfs-server glusterfs-fuse glusterfs-vim
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
84 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package glusterfs.x86_64 0:3.2.7-1.el6 will be installed
---> Package glusterfs-fuse.x86_64 0:3.2.7-1.el6 will be installed
---> Package glusterfs-server.x86_64 0:3.2.7-1.el6 will be installed
---> Package glusterfs-vim.x86_64 0:3.2.7-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                  Arch           Version             Repository    Size
================================================================================
Installing:
 glusterfs                x86_64         3.2.7-1.el6         epel         1.8 M
 glusterfs-fuse           x86_64         3.2.7-1.el6         epel          60 k
 glusterfs-server         x86_64         3.2.7-1.el6         epel          22 k
 glusterfs-vim            x86_64         3.2.7-1.el6         epel          26 k

Transaction Summary
================================================================================
Install       4 Package(s)

Total download size: 1.9 M
Installed size: 7.0 M
Is this ok [y/N]: y
Downloading Packages:
(1/4): glusterfs-3.2.7-1.el6.x86_64.rpm                  | 1.8 MB     00:00     
(2/4): glusterfs-fuse-3.2.7-1.el6.x86_64.rpm             |  60 kB     00:00     
(3/4): glusterfs-server-3.2.7-1.el6.x86_64.rpm           |  22 kB     00:00     
(4/4): glusterfs-vim-3.2.7-1.el6.x86_64.rpm              |  26 kB     00:00     
--------------------------------------------------------------------------------
Total                                           8.0 MB/s | 1.9 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : glusterfs-3.2.7-1.el6.x86_64                                 1/4 
  Installing : glusterfs-fuse-3.2.7-1.el6.x86_64                            2/4 
  Installing : glusterfs-server-3.2.7-1.el6.x86_64                          3/4 
  Installing : glusterfs-vim-3.2.7-1.el6.x86_64                             4/4 
  Verifying  : glusterfs-vim-3.2.7-1.el6.x86_64                             1/4 
  Verifying  : glusterfs-fuse-3.2.7-1.el6.x86_64                            2/4 
  Verifying  : glusterfs-3.2.7-1.el6.x86_64                                 3/4 
  Verifying  : glusterfs-server-3.2.7-1.el6.x86_64                          4/4 

Installed:
  glusterfs.x86_64 0:3.2.7-1.el6          glusterfs-fuse.x86_64 0:3.2.7-1.el6  
  glusterfs-server.x86_64 0:3.2.7-1.el6   glusterfs-vim.x86_64 0:3.2.7-1.el6   

Complete!

Um zu überprüfen, ob die Installation erfolgreich durchgeführt werden konnte, ist nachfolgender Befehl, auf allen Server/Knoten (ha-node-01 und ha-node-02), mit ebenfalls nachfolgender Ausgabe auszuführen:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

# /usr/sbin/glusterfs -V
glusterfs 3.2.7 built on Jun 11 2012 13:22:28
Repository revision: git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2011 Gluster Inc. <http://www.gluster.com>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.

Server/Knoten 2 - IP-Adresse: 192.168.1.202:

# /usr/sbin/glusterfs -V
glusterfs 3.2.7 built on Jun 11 2012 13:22:28
Repository revision: git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2011 Gluster Inc. <http://www.gluster.com>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.

Server: Konfiguration

Nachfolgend soll eine grundlegende Konfiguration eines GlusterFS-Clusters mit

  • zwei Knoten

durchgeführt werden.

/etc/init.d/clusterd

:!: HINWEIS - Die Konfiguration erfolgt NUR auf den Server/Knoten (ha-node-01 und ha-node-02) !!!

Um die GlusterFS Server-Komponente auch nach einem Neustart (restart) des Servers/Knoten zu starten, sollten nachfolgende Schritte durchgeführt werden.

Nachfolgender Befehl, fügt das Start-Skript

  • /etc/init.d/glusterd

der austomatischen Ausführung (Start) beim Start oder Neustart des Servers/Knotens hinzu:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

# chkconfig glusterd on

Server/Knoten 2 - IP-Adresse: 192.168.1.202:

# chkconfig glusterd on

Ein Überpüfung, ob dies erfolgreich war, kann mit nachfolgendem Befehl durchgeführt werden:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

# chkconfig --list | grep glusterd
glusterd       	0:off	1:off	2:on	3:on	4:on	5:on	6:off

Server/Knoten 2 - IP-Adresse: 192.168.1.202:

# chkconfig --list | grep glusterd
glusterd       	0:off	1:off	2:on	3:on	4:on	5:on	6:off

Server: starten

:!: HINWEIS - Der Start der Server/Knoten erfolgt NUR auf den Server/Knoten (ha-node-01 und ha-node-02) !!!

Mit nachfolgendem Befehl, sollten nun auf beiden Servern/Knoten (ha-node-01 und ha-node-02) der Dienst/Daemon der GlusterFS Server-Komponente gestartete werden:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

# service glusterd start
Starting glusterd:                                         [  OK  ]

Server/Knoten 2 - IP-Adresse: 192.168.1.202:

# service glusterd start
Starting glusterd:                                         [  OK  ]

Gluster Console Manager

Der „Gluster Console Manager - Command Line Utility“

  • gluster

ist ein shell-basiertes Werkzeug und eine einfache Lösung, zur Konfiguration und Verwaltung einer Speicher-Umgebung.

Die Möglichkeiten des Gluster Console Managers - gluster, können mit nachfolgendem Befehl aufgelistet werden:

# gluster help
volume info [all|<VOLNAME>] - list information of all volumes
volume create <NEW-VOLNAME> [stripe <COUNT>] [replica <COUNT>] [transport <tcp|rdma|tcp,rdma>] <NEW-BRICK> ... - create a new volume of specified type with mentioned bricks
volume delete <VOLNAME> - delete volume specified by <VOLNAME>
volume start <VOLNAME> [force] - start volume specified by <VOLNAME>
volume stop <VOLNAME> [force] - stop volume specified by <VOLNAME>
volume add-brick <VOLNAME> <NEW-BRICK> ... - add brick to volume <VOLNAME>
volume remove-brick <VOLNAME> <BRICK> ... - remove brick from volume <VOLNAME>
volume rebalance <VOLNAME> [fix-layout|migrate-data] {start|stop|status} - rebalance operations
volume replace-brick <VOLNAME> <BRICK> <NEW-BRICK> {start|pause|abort|status|commit} - replace-brick operations
volume set <VOLNAME> <KEY> <VALUE> - set options for volume <VOLNAME>
volume help - display help for the volume command
volume log filename <VOLNAME> [BRICK] <PATH> - set the log file for corresponding volume/brick
volume log locate <VOLNAME> [BRICK] - locate the log file for corresponding volume/brick
volume log rotate <VOLNAME> [BRICK] - rotate the log file for corresponding volume/brick
volume sync <HOSTNAME> [all|<VOLNAME>] - sync the volume information from a peer
volume reset <VOLNAME> [force] - reset all the reconfigured options
volume geo-replication [<VOLNAME>] [<SLAVE-URL>] {start|stop|config|status|log-rotate} [options...] - Geo-sync operations
volume profile <VOLNAME> {start|info|stop} - volume profile operations
volume quota <VOLNAME> <enable|disable|limit-usage|list|remove> [path] [value] - quota translator specific operations
volume top <VOLNAME> {[open|read|write|opendir|readdir] |[read-perf|write-perf bs <size> count <count>]}  [brick <brick>] [list-cnt <count>] - volume top operations
peer probe <HOSTNAME> - probe peer specified by <HOSTNAME>
peer detach <HOSTNAME> - detach peer specified by <HOSTNAME>
peer status - list status of peers
peer help - Help command for peer 
quit - quit
help - display command options

Der Gluster Console Managers - gluster, kann (ähnlich wie lvm ) sowohl im direkten Befehlsmodus, wie z.B.

# gluster peer help
peer probe <HOSTNAME> - probe peer specified by <HOSTNAME>
peer detach <HOSTNAME> - detach peer specified by <HOSTNAME>
peer status - list status of peers
peer help - Help command for peer.

oder in einem interaktiven Modus

# gluster
gluster> peer help
peer probe <HOSTNAME> - probe peer specified by <HOSTNAME>
peer detach <HOSTNAME> - detach peer specified by <HOSTNAME>
peer status - list status of peers
peer help - Help command for peer 
gluster> quit

genutzt werden.

Trusted Storage Pools

:!: HINWEIS - Die Konfiguration ist NUR auf EINEN der Server/Knoten (ha-node-01 und ha-node-02) erforderlich !!!

Bevor mit der Konfiguration eines unter GlusterFS erstellten Volume (Speicherbereich auf physischen Festplatte(n)) begonnen werden kann, muss ein sogenannter Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich), bestehend aus den Servern/Knoten, auch Bricks genannt, erstellt werden.

Server/Knoten hinzufügen

Um einen bzw. mehrere Servern/Knoten zu einem Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich) hinzuzufügen, kann nachfolgender Befehl genutzt werden:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

# gluster peer probe ha-node-02.intra.tachtler.net
Probe successful

:!: HINWEIS - Es ist NICHT möglich und erforderlich, den Server/Knoten auf dem der oben genannte Befehl ausgeführt wird, ebenfalls hinzuzufügen !!!

Server/Knoten überprüfen

Eine Überprüfung, ob nun beide Server/Knoten einen Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich) bilden, kann mit nachfolgendem Befehl überprüft werden:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

# gluster peer status
Number of Peers: 1

Hostname: ha-node-02.intra.tachtler.net
Uuid: 89ceff6c-25da-49d1-818c-d21897feb0f8
State: Peer in Cluster (Connected)

Server/Knoten 2 - IP-Adresse: 192.168.1.202:

# gluster peer status
Number of Peers: 1

Hostname: 192.168.1.201
Uuid: 58a9154b-733a-477b-bb9b-9d9bfeb86966
State: Peer in Cluster (Connected)

Server/Knoten entfernen

Um einen bzw. mehrere Servern/Knoten von einem Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich) zu entfernen, kann nachfolgender Befehl genutzt werden:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

# gluster peer detach ha-node-02.intra.tachtler.net
Detach successful

GlusterFS Server Volume

Um nach, unter dem nachfolgendem internen Link innerhalb dieses DokuWiki –> Hochverfügbarkeit GlusterFS - Trusted Storage Pools gezeigten Erstellung eines Trusted Storage Pool (Vertrauenswürdiger Speicher Bereich), auch ein Volume (Speicherbereich auf physischen Festplatte(n)) zu erstellen, sind nachfolgende Informationen wichtig.

Es gibt nachfolgend aufgezählte Arten, eines Volume (Speicherbereich auf physischen Festplatte(n)):

  1. Distributed - Verteilung einer Datei, als ganzes, auf einen der Bricks (Server/Knoten)
  2. Replicated - Verteilung einer Datei, als ganzes - redundant - auf die Bricks (Server/Knoten)
  3. Striped - Verteilung einer Datei, in Teilen, auf die Bricks (Server/Knoten)
  4. Distributed Striped - Verteilung einer Datei, in Teilen, auf zwei oder mehr Bricks (Server/Knoten) innerhalb eines Clusters
  5. Distributed Replicated - Verteilung einer Datei, als ganzes, auf zwei oder mehr Bricks (Server/Knoten) innerhalb eines Clusters
  6. Striped Replicated - Verteilung einer Datei, in Teilen, auf die Bricks (Server/Knoten), innerhalb eines Clusters, welches sich jedoch replizieren

Sonderform:

  • Distributed Striped Replicated Verteilung einer Datei, in Teilen, auf zwei oder mehr Bricks (Server/Knoten) innerhalb eines Clusters, welches sich jedoch replizieren

Hier noch einem die Arten eines Volume (Speicherbereich auf physischen Festplatte(n)) mit grafischer Beschreibung (wo möglich und sinnvoll):

Distributed Volume

Einsatz: Bei Speicher-Lösungen, bei denen es auf

  • + Performance
  • - Sicherheit

ankommt.

Distributed Volume

Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):

# gluster volume create test-volume transfer tcp server1:/exp1 server2:/exp2
Creation of test-volume has been successful
Please start the volume to access data.

Replicated Volume

Einsatz: Bei Speicher-Lösungen, bei denen es auf

  • + hohe Verfügbarkeit
  • + hohe Zuverlässigkeit
  • - Performance
  • - Speicherverbrauch

ankommt.

Replicated Volume

Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):

# gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
Creation of test-volume has been successful
Please start the volume to access data.

Striped Volume

Einsatz: Bei Speicher-Lösungen, bei denen es auf

  • + hohe Skalierbarkeit
  • + paralleler Zugriff auf große Dateien
  • - Sicherheit

ankommt.

Striped Volume

Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):

# gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
Creation of test-volume has been successful
Please start the volume to access data.

Distributed Striped Volume

Einsatz: Bei Speicher-Lösungen, bei denen es auf

  • + Performance
  • + hohe Skalierbarkeit
  • + paralleler Zugriff auf große Dateien
  • - Sicherheit

ankommt.

Distributed Striped Volume

Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):

# gluster volume create test-volume stripe 4 transport tcp server1:/exp1 server2:/exp2 server1:/exp3 server2:/exp4
Creation of test-volume has been successful
Please start the volume to access data.

Distributed Replicated Volume

Einsatz: Bei Speicher-Lösungen, bei denen es auf

  • + hohe Verfügbarkeit
  • + hohe Zuverlässigkeit
  • + Performance (besonders Lese-Zugriffe)
  • - Sicherheit

ankommt.

Distributed Replicated Volume

Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):

# gluster volume create test-volume replica 2 transport tcp server1:/exp1 server1:/exp2 server2:/exp3 server2:/exp4
Creation of test-volume has been successful
Please start the volume to access data.

Striped Replicated Volume

Einsatz: Bei Speicher-Lösungen, bei denen es auf

  • + hohe Verfügbarkeit
  • + hohe Zuverlässigkeit
  • + Performance (besonders Lese-Zugriffe)
  • + Sicherheit
  • - Speicherverbrauch

ankommt.

Striped Replicated Volume

Zur Erstellung, kann nachfolgender Befehl genutzt werden (Verbindung über TCP):

# gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server1:/exp3 server2:/exp4
Creation of test-volume has been successful
Please start the volume to access data.

Volume: Replicated erstellen

:!: HINWEIS - Die Konfiguration ist NUR auf EINEN der Server/Knoten (ha-node-01 und ha-node-02) erforderlich !!!

In dem hier als Beispiel behandelten Fall, soll nun ein GlusterFS Server Volume - Replicated Volume erstellt werden. Dies kann mit dem nachfolgend beschriebenen Befehl durchgeführt werden:

# gluster volume create httpd_data replica 2 transport tcp ha-node-01.intra.tachtler.net:/exp1 ha-node-02.intra.tachtler.net:/exp2
Creation of volume httpd_data has been successful. Please start the volume to access data.

Erklärung:

  • httpd_data - Name des neuen Volumes
  • replica 2 - Replication über zwei Bricks (Server/Knoten)
  • transport tcp - Die Synchronisation erfolgt über des Protokoll tcp (Infiniband wäre rdma)
  • ha-node-01.intra.tachtler.net:/exp1 - erster Brick (Server/Knoten)
  • ha-node-02.intra.tachtler.net:/exp2 - zweiter Brick (Server/Knoten)

Zur Überprüfung, ob die Erstellung des GlusterFS Server Volume - Replicated Volume mit dem Namen

  • httpd_data

erfolgreich war, kann nachfolgender Befehl genutzt werden:

# gluster volume info

Volume Name: httpd_data
Type: Replicate
Status: Created
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: ha-node-01.intra.tachtler.net:/exp1
Brick2: ha-node-02.intra.tachtler.net:/exp2

Volume: starten

:!: HINWEIS - Das Starten des Volume ist NUR auf EINEM der Server/Knoten (ha-node-01 und ha-node-02) erforderlich !!!

Abschließend muss nun das soeben unter dem internen DokuWiki-Eintrag –> Hochverfügbarkeit GlusterFS - Volume: Replicated erstellen angelegte Volume (Speicherbereich auf physischen Festplatte(n)) mit nachfolgendem Befehl noch gestartet werden:

# gluster volume start httpd_data
Starting volume httpd_data has been successful

Client: Installation

:!: HINWEIS - Die Installation erfolgt auf BEIDEN Client/Knoten (ha-node-01 und ha-node-02) !!!

Um die Client-Komponenten von GlusterFS zu installieren, sollten nachfolgende Pakete mit nachfolgendem Befehl installiert werden:

  • fuse –> FUSE Userspace Werkzeuge, um ein FUSE-Dateisystem mounten (einhängen) zu können
  • fuse-libs –> Die Bibliotheken zu FUSE

Nachfolgend werden hier, als Beispiel nachfolgende Pakete installiert:

# yum install fuse fuse-libs
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
84 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package fuse.x86_64 0:2.8.3-4.el6 will be installed
---> Package fuse-libs.x86_64 0:2.8.3-4.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
 Package               Arch               Version                  Repository        Size
==========================================================================================
Installing:
 fuse                  x86_64             2.8.3-4.el6              base              71 k
 fuse-libs             x86_64             2.8.3-4.el6              base              74 k

Transaction Summary
==========================================================================================
Install       2 Package(s)

Total download size: 145 k
Installed size: 438 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): fuse-2.8.3-4.el6.x86_64.rpm                                 |  71 kB     00:00     
(2/2): fuse-libs-2.8.3-4.el6.x86_64.rpm                            |  74 kB     00:00     
------------------------------------------------------------------------------------------
Total                                                     3.5 MB/s | 145 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : fuse-2.8.3-4.el6.x86_64                                                1/2 
  Installing : fuse-libs-2.8.3-4.el6.x86_64                                           2/2 
  Verifying  : fuse-libs-2.8.3-4.el6.x86_64                                           1/2 
  Verifying  : fuse-2.8.3-4.el6.x86_64                                                2/2 

Installed:
  fuse.x86_64 0:2.8.3-4.el6                 fuse-libs.x86_64 0:2.8.3-4.el6                

Complete!

Client: Konfiguration

:!: HINWEIS - Die Konfiguration erfolgt auf BEIDEN Client/Knoten (ha-node-01 und ha-node-02) !!!

Die Konfiguration ist eigentlich nur das mounten (einhängen) des durch GlusterFS erstellte Volume auf einen neuen, oder auch bestehenden mount-point (Verzeichnis, in welches das Dateisystem eingehängt wird).

In dem nachfolgendem Beispiel, soll ein Verzeichnis mit dem Namen

  • /var/www

mit nachfolgendem Befehl erzeugt werden (Dies sollte noch nicht bestehen, da kein Apache Webserver HTTPD installiert worden sein sollte):

# mkdir /var/www

:!: HINWEIS - Die Besitz- und Dateirechte, des soeben neu erstellten Verzeichnisses, sollten beim Standard, wie durch den Benutzer root erzeugt, beibehalten werden.

Mount: glusterfs

Damit auch nach einem Start bzw. Neustart des Servers das Verzeichnis automatisch gemounted (eingehängt) wird, sollten bei beiden Clients/Knoten (ha-node-01 und ha-node-02) nachfolgende Änderungen an der Konfigurationsdatei

  • /etc/fstab

durchgeführt werden (nur relevanter Ausschnitt):

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

...
192.168.1.201:/httpd_data  /var/www                glusterfs       defaults,_netdev,log-level=WARNING,log-file=/var/log/glusterfs/gluster.log 0 0
...

Server/Knoten 2 - IP-Adresse: 192.168.1.202:

...
192.168.1.202:/httpd_data  /var/www                glusterfs       defaults,_netdev,log-level=WARNING,log-file=/var/log/glusterfs/gluster.log 0 0
...

Dies bewirkt das mounten (einhängen) des durch GlusterFS erstellten Volume in das Dateisystem, via glusterfs:

:!: WICHTIG - Jeder Client/Knoten (ha-node-01 und ha-node-02), mounted von SICH SELBST das Dateisystem /var/www, da es sonst beim Start bzw. Neustart des Servers zu Problemen kommt !!!

Um den soeben durchgeführten Eintrag in die Konfigurationsdatei /etc/fstab auch zu aktivieren und den mount-point (Verzeichnis, in welches das Dateisystem eingehängt wird) sofort nutzbar zu machen, kann nachfolgender Befehl genutzt werden, welcher das mounten (einhängen) aller in der Konfigurationsdatei /etc/fstab definierten Einträge, durchführt:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

# mount -a

Server/Knoten 2 - IP-Adresse: 192.168.1.202:

# mount -a

Ob das mounten (einhängen) auch tatsächlich funktioniert hat, kann mit nachfolgendem Befehl dann abschließend überprüft werden:

Server/Knoten 1 - IP-Adresse: 192.168.1.201:

# df -h | grep /var/www -1
192.168.1.201:/httpd_data
                      3.5G  771M  2.6G  23% /var/www

Server/Knoten 2 - IP-Adresse: 192.168.1.202:

# df -h | grep /var/www -1
192.168.1.202:/httpd_data
                      3.5G  771M  2.6G  23% /var/www

Um zu überprüfen, ob die Replikation zwischen (ha-node-01 und ha-node-02) auch tatsächlich funktioniert, kann z.B. auf

  • Server/Knoten 1 - IP-Adresse: 192.168.1.201:

mit nachfolgendem Befehl eine (leere) Datei erstellt werden:

# touch /var/www/test-datei

Anschließend sollte auf

  • Server/Knoten 2 - IP-Adresse: 192.168.1.202:

mit nachfolgendem Befehl überprüft werden, ob die Datei ebenfalls existiert:

# ls -l /var/www/
total 0
-rw-r--r-- 1 root root 0 Sep 10 12:47 test-datei

Monitoring

Um ein mit GlusterFS erstelltes Volume zu überwachen, können nachfolgende Werkzeuge genutzt werden.

Monitoring: profile

Um die Überwachung im Modus profile zu aktivieren, ist nachfolgender Befehl notwendig:

# gluster volume profile httpd_data start
Starting volume profile on httpd_data has been successful

Um die Werte aus der Überwachung im Modus profile anzuzeigen, ist nachfolgender Befehl notwendig:

# gluster volume profile httpd_data info
Brick: ha-node-02.intra.tachtler.net:/exp2
Cumulative Stats:
   Block Size:                  8b+                  32b+                  64b+ 
 No. of Reads:                    0                     0                     0 
No. of Writes:                    2                     2                    22 

   Block Size:                128b+                 256b+                 512b+ 
 No. of Reads:                    0                     0                     0 
No. of Writes:                  228                   166                     6 

   Block Size:               1024b+                2048b+                4096b+ 
 No. of Reads:                    0                     0                     0 
No. of Writes:                   10                    16                    37 

   Block Size:               8192b+               32768b+ 
 No. of Reads:                    0                     0 
No. of Writes:                   16                     2 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            534     RELEASE
      0.00       0.00 us       0.00 us       0.00 us             77  RELEASEDIR
    100.00     177.75 us     138.00 us     269.00 us              4      LOOKUP

    Duration : 1097 seconds
   Data Read : 0 bytes
Data Written : 587693 bytes

Brick: ha-node-02.intra.tachtler.net:/exp2
Interval 1 Stats:
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
    100.00     152.00 us     145.00 us     159.00 us              2      LOOKUP

    Duration : 312 seconds
   Data Read : 0 bytes
Data Written : 0 bytes

Brick: ha-node-01.intra.tachtler.net:/exp1
Cumulative Stats:
   Block Size:                  8b+                  32b+                  64b+ 
 No. of Reads:                    0                     0                     0 
No. of Writes:                    2                     2                    22 

   Block Size:                128b+                 256b+                 512b+ 
 No. of Reads:                    0                     0                     0 
No. of Writes:                  228                   166                     6 

   Block Size:               1024b+                2048b+                4096b+ 
 No. of Reads:                    0                     0                     0 
No. of Writes:                   10                    16                    37 

   Block Size:               8192b+               32768b+ 
 No. of Reads:                    0                     0 
No. of Writes:                   16                     2 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us              1      FORGET
      0.00       0.00 us       0.00 us       0.00 us            535     RELEASE
      0.00       0.00 us       0.00 us       0.00 us             86  RELEASEDIR
    100.00     185.50 us     153.00 us     222.00 us              4      LOOKUP

    Duration : 1425 seconds
   Data Read : 0 bytes
Data Written : 587693 bytes

Brick: ha-node-01.intra.tachtler.net:/exp1
Interval 1 Stats:
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
    100.00     187.50 us     153.00 us     222.00 us              2      LOOKUP

    Duration : 313 seconds
   Data Read : 0 bytes
Data Written : 0 bytes

Um die Überwachung im Modus profile zu deaktivieren, ist nachfolgender Befehl notwendig:

# gluster volume profile httpd_data stop
Stopping volume profile on httpd_data has been successful

Monitoring: top

Nachfolgende Befehle geben die Nutzungsdaten eines mit GlusterFS erstelltes Volume aus:

  • open - Anzahl der geöffneten Dateien und wie oft diese geöffnet wurden je Brick (Server/Knoten)
  • read - Anzahl der höchsten Lese-Zugriffe auf Dateien je Brick (Server/Knoten)
  • write - Anzahl der höchsten Schreib-Zugriffe auf Dateien je Brick (Server/Knoten)
  • opendir - Anzahl der genutzten Verzeichnisse und wie oft diese genutzt wurden, je Brick (Server/Knoten)
  • readdir - Anzahl der höchsten Lese-Zugriffe auf Verzeichnisse je Brick (Server/Knoten)

Der Befehl ist immer wie folgt aufgebaut:

# gluster volume top <VOLUME> <BEFEHL> brick <SERVER:/VOLUME> list-cnt <ANZAHL>

Mit nachfolgender Befehl, können z.B. die Dateien angezeigt werden, welche geöffnet wurden und zusätzlich wie oft diese geöffnet wurden. (list-cnt 25 begrenzt die Anzeige auf die letzten 25 Einträge).

# gluster volume top httpd_data open brick ha-node-01.intra.tachtler.net:/exp1/ list-cnt 25
volume top successful 
Brick: ha-node-01.intra.tachtler.net:/exp1
Current open fds: 0, Max open fds: 3
Count           filename
=======================
2               /error/include/top.html;504dca28
2               /error/include/spacer.html;504dca28
2               /error/include/bottom.html;504dca28
2               /error/contact.html.var;504dca28
2               /error/HTTP_VARIANT_ALSO_VARIES.html.var;504dca28
2               /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var;504dca28
2               /error/HTTP_UNAUTHORIZED.html.var;504dca28
2               /error/HTTP_SERVICE_UNAVAILABLE.html.var;504dca28
2               /error/HTTP_REQUEST_URI_TOO_LARGE.html.var;504dca28
2               /error/HTTP_REQUEST_TIME_OUT.html.var;504dca28
2               /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var;504dca28
2               /error/HTTP_PRECONDITION_FAILED.html.var;504dca28
2               /error/HTTP_NOT_IMPLEMENTED.html.var;504dca28
2               /error/HTTP_NOT_FOUND.html.var;504dca28
2               /error/HTTP_METHOD_NOT_ALLOWED.html.var;504dca28
2               /error/HTTP_LENGTH_REQUIRED.html.var;504dca28
2               /error/HTTP_INTERNAL_SERVER_ERROR.html.var;504dca28
2               /error/HTTP_GONE.html.var;504dca28
2               /error/HTTP_FORBIDDEN.html.var;504dca28
2               /error/HTTP_BAD_REQUEST.html.var;504dca28
2               /error/HTTP_BAD_GATEWAY.html.var;504dca28
1               /html/index.htm
1               /error/noindex.html;504dca01
1               /test3

Nachfolgende Befehle geben die Nutzungsdaten eines mit GlusterFS erstellten Volume aus:

  • read-perf - Anzahl der höchsten Lese-Zugriffe, Performancedaten je Brick (Server/Knoten)
  • write-perf - Anzahl der höchsten Schreib-Zugriffe, Performancedaten je Brick (Server/Knoten)

Der Befehl ist immer wie folgt aufgebaut:

# gluster volume top <VOLUME> <BEFEHL> <BLOCK SIZE nnn> <COUNT n> brick <SERVER:/VOLUME> list-cnt <ANZAHL>

Mit nachfolgendem Befehl, können z.B. diese Performance Dateien angezeigt werden. (list-cnt 25 begrenzt die Anzeige auf die letzten 25 Einträge).

# gluster volume top httpd_data write-perf bs 256 count 1 brick ha-node-01.intra.tachtler.net:/exp1/ list-cnt 25
volume top successful 
Brick: ha-node-01.intra.tachtler.net:/exp1
Throughput 10.67 MBps time 0.0000 secs
MBps Filename                                        Time                      
==== ========                                        ====                      
   0 /html/index.htm                                 2012-09-10 13:09:45.73440 
   0 /icons/world2.png;504dca01                      2012-09-10 13:08:59.545589
   0 /icons/world2.gif;504dca01                      2012-09-10 13:08:59.526010
   0 /icons/world1.png;504dca01                      2012-09-10 13:08:59.508038
   0 /icons/world1.gif;504dca01                      2012-09-10 13:08:59.488039
   0 /icons/uuencoded.png;504dca01                   2012-09-10 13:08:59.468116
   0 /icons/uuencoded.gif;504dca01                   2012-09-10 13:08:59.447643
   0 /icons/uu.png;504dca01                          2012-09-10 13:08:59.430159
   0 /icons/uu.gif;504dca01                          2012-09-10 13:08:59.409694
   0 /icons/up.png;504dca01                          2012-09-10 13:08:59.391258
   0 /icons/up.gif;504dca01                          2012-09-10 13:08:59.371173
   0 /icons/unknown.png;504dca01                     2012-09-10 13:08:59.351983
   0 /icons/unknown.gif;504dca01                     2012-09-10 13:08:59.329190
   0 /icons/transfer.png;504dca01                    2012-09-10 13:08:59.310249
   0 /icons/transfer.gif;504dca01                    2012-09-10 13:08:59.289300
   0 /icons/text.png;504dca01                        2012-09-10 13:08:59.267286
   0 /icons/text.gif;504dca01                        2012-09-10 13:08:59.245740
   0 /icons/tex.png;504dca01                         2012-09-10 13:08:59.227291
   0 /icons/tex.gif;504dca01                         2012-09-10 13:08:59.205674
   0 /icons/tar.png;504dca01                         2012-09-10 13:08:59.181107
   0 /icons/tar.gif;504dca01                         2012-09-10 13:08:59.160701
   0 /icons/sphere2.png;504dca01                     2012-09-10 13:08:59.140483
   0 /icons/sphere2.gif;504dca01                     2012-09-10 13:08:59.119717
   0 /icons/sphere1.png;504dca01                     2012-09-10 13:08:59.99520 
   0 /icons/sphere1.gif;504dca01                     2012-09-10 13:08:59.77777

Monitoring: Informationen

Mit nachfolgendem Befehl, können Informationen über die Beschaffenheit eines mitGlusterFS erstellten Volume abgefragt werden:

# gluster volume info httpd_data

Volume Name: httpd_data
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: ha-node-01.intra.tachtler.net:/exp1
Brick2: ha-node-02.intra.tachtler.net:/exp2

oder über alle, nicht explizit eines Volume:

# gluster volume info all

Volume Name: httpd_data
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: ha-node-01.intra.tachtler.net:/exp1
Brick2: ha-node-02.intra.tachtler.net:/exp2

Performance

Nachfolgend soll eine kleine Performance-Messung durchgeführt werden, in dem eine 100 MegaByte große Datei, einmal auf einem der beiden Client/Knoten (ha-node-01 und ha-node-02)

  • lokalem

und auf dem

  • GlusterFS

Dateisystem erstellt wird und eine Messung der dafür benötigten Zeit durchgeführt wird.

Erstellung einer 100 MegaByte großen Datei auf einem lokalem Dateisystem:

# time dd if=/dev/zero of=/tmp/100MBfile bs=1024 count=102400
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 0.63121 s, 166 MB/s

real    0m0.640s
user    0m0.022s
sys     0m0.570s

Erstellung einer 100 MegaByte großen Datei auf einem GlusterFS Dateisystem:

# time dd if=/dev/zero of=/var/www/100MBfile bs=1024 count=102400
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 13.2261 s, 7.9 MB/s

real    0m13.248s
user    0m0.155s
sys     0m0.902s
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/hochverfuegbarkeit_glusterfs.txt · Zuletzt geändert: 2012/09/21 10:34 von klaus