Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
tachtler:hochverfuegbarkeit_glusterfs [2012/09/10 15:46] – klaus | tachtler:hochverfuegbarkeit_glusterfs [2012/09/21 10:34] (aktuell) – [Performance] klaus |
---|
====== Hochverfügbarkeit GlusterFS ====== | ====== Hochverfügbarkeit GlusterFS ====== |
| |
[[tachtler:hochverfuegbarkeit_allgemein|{{:tachtler:index:glusterfs-48x48.png }}]] [[http://www.gluster.org/|GlusterFS]] ist ein **"OpenSource"** Dateisystem-Replikationsmethode, welche in der Lage ist, eine Skalierung auf mehrere Petabyte (aktuell, 72 BrontoBytes!) zu verwirklichen und die parallele Nutzung durch Tausenden von Clients, bewerkstelligen kann. | [[tachtler:hochverfuegbarkeit_allgemein|{{:tachtler:index:glusterfs-48x48.png }}]] [[http://www.gluster.org/|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. |
\\ | \\ |
\\ | \\ |
[[http://www.gluster.org/|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. | [[http://www.gluster.org/|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. |
| |
{{:tachtler:ha:640px-glusterfs_3.2_architecture.png|GlusterFS Architektur - Beispiel Überblick}} | {{:tachtler:ha:640px-glusterfs_3.2_architecture.png|GlusterFS Architektur - Beispiel Überblick}} |
===== Vorbereitung ===== | ===== Vorbereitung ===== |
| |
Nachfolgende vorbereitende Schritte sind notwendig, um eine [[http://www.gluster.org/|GlusterFS]]-Dateisystem zu betreiben. | Nachfolgende vorbereitende Schritte sind notwendig, um ein [[http://www.gluster.org/|GlusterFS]]-Dateisystem zu betreiben. |
* Eintragung der beteiligtne Server bzw. **Knoten** in die Namensauflösung **DNS**, bzw. **''/etc/hosts''**. | * Eintragung der beteiligtne Server bzw. **Knoten** in die Namensauflösung **DNS**, bzw. **''/etc/hosts''**. |
* Freischaltung der benötigten **Paketfilter-Regeln**, hier **''iptbales''**. | * Freischaltung der benötigten **Paketfilter-Regeln**, hier **''iptables''**. |
* Einbindung des externen, benötigten Repositorys, hier das von [[http://fedoraproject.org/wiki/EPEL|EPEL]] | * Einbindung des externen, benötigten Repositorys, hier das von [[http://fedoraproject.org/wiki/EPEL|EPEL]] |
um anschließend die | um anschließend die |
==== /etc/hosts ==== | ==== /etc/hosts ==== |
| |
In der nachfolgend geszeigten Installation eines [[http://www.gluster.org/|GlusterFS]]-Dateisystems, werden zusätzlich zu möglichen Eintragungen im **DNS**, nachfolgende Eintragungen in allen beteiligten Servern **Knoten**, durchgeführt: | In der nachfolgend gezeigten Installation eines [[http://www.gluster.org/|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:** | **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 |
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 | ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 |
192.168.1.200 ha-manager ha-manager.dmz.tachtler.net | 192.168.1.200 ha-manager ha-manager.intra.tachtler.net |
192.168.1.201 ha-node-01 ha-node-01.dmz.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.dmz.tachtler.net | 192.168.1.202 ha-node-02 ha-node-02.intra.tachtler.net |
</code> | </code> |
| |
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 |
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 | ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 |
192.168.1.200 ha-manager ha-manager.dmz.tachtler.net | 192.168.1.200 ha-manager ha-manager.intra.tachtler.net |
192.168.1.201 ha-node-01 ha-node-01.dmz.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.dmz.tachtler.net | 192.168.1.202 ha-node-02 ha-node-02.intra.tachtler.net |
</code> | |
| |
Zusätzlich, auf eine weiteren späteren Einsatz, soll auch ein **Management-Server** noch in die aktuelle Konfigurationsdatei **''/etc/hosts''** mit aufgenommen werden, dessen Konfigurationsdatei ebenfalls wie nachfolgend dargestellt, ergänzt wird: | |
| |
**Server/Manager - IP-Adresse: 192.168.1.200:** | |
<code> | |
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.dmz.tachtler.net | |
192.168.1.201 ha-node-01 ha-node-01.dmz.tachtler.net | |
192.168.1.202 ha-node-02 ha-node-02.dmz.tachtler.net | |
</code> | </code> |
| |
==== /etc/sysconfig/iptables-save ==== | ==== /etc/sysconfig/iptables-save ==== |
| |
Damit die Server/Knoten/Manager 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. | 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: | Um die aktuellen ''iptables''-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann: |
* **''38465:38467''** - Port 38465 bis 38467, nur bei verwendung von **NFS**-Mount-Points nötig. | * **''38465:38467''** - Port 38465 bis 38467, nur bei verwendung von **NFS**-Mount-Points nötig. |
| |
Ein erneute Abfrage des ''iptables''-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann: | Eine erneute Abfrage des ''iptables''-Regelwerks, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann: |
<code> | <code> |
# iptables -L -nv --line-numbers | # iptables -L -nv --line-numbers |
</code> | </code> |
| |
Um diese ''iptables''-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im ''iptables''-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden: | 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: |
<code> | <code> |
# service iptables save | # service iptables save |
==== EPEL-Repository einbinden ==== | ==== EPEL-Repository einbinden ==== |
| |
Bevor externe Repository's auf den Servern/Knoten/Manager eingebunden werden, sollte sichergestellt werden, dass **__keine__** Pakete aus externen Repositorys, die der eigentlichen [[http://www.centos.org|CentOS]]-Repositorys überschreiben. | Bevor externe Repository's auf den Servern/Knoten eingebunden werden, sollte sichergestellt werden, dass **__keine__** Pakete aus externen Repositorys, die der eigentlichen [[http://www.centos.org|CentOS]]-Repositorys überschreiben. |
| |
Dies kann durch die Installation des sogenannten | Dies kann durch die Installation des sogenannten |
* **Priority-Plugins** für den Paket-Manager **''yum''** | * **Priorities-Plugin** für den Paket-Manager **''yum''** |
erfolgen. | erfolgen. |
| |
Die Installation des **Priority-Plugins** für den Paket-Manager **''yum''** wird durch nachfolgenden Befehl durchgeführt: | Die Installation des **Priorities-Plugin** für den Paket-Manager **''yum''** wird durch nachfolgenden Befehl durchgeführt: |
<code> | <code> |
# yum install yum-plugin-priorities | # yum install yum-plugin-priorities |
</code> | </code> |
| |
Der Inhalt des Paketes **''yum-plugin-priorities.noarch''** kann mit nachfolgendem Befehl angezeigt werden: | Der Inhalt des Paketes **''yum-plugin-priorities''** kann mit nachfolgendem Befehl angezeigt werden: |
<code> | <code> |
# rpm -qil yum-plugin-priorities | # rpm -qil yum-plugin-priorities |
</code> | </code> |
| |
:!: **HINWEIS** - Den eigenen Rpository's aus [[http://www.centos.org|CentOS]] sollte eine **höhere Priorität, durch zuweisung einer __kleineren Zahl__** zugewiesen werden! | :!: **HINWEIS** - Den eigenen Rpository's aus [[http://www.centos.org|CentOS]] sollte eine **höhere Priorität, durch Zuweisung einer __kleineren Zahl__** gegeben werden! |
| |
Um [[http://fedoraproject.org/wiki/EPEL|EPEL]] auf den Servern/Knoten/Manager Nutzen zu können, muss nachfolgende Datei heurntergeladen werden, was mit nachfolgendem Befehl durchgeführt werden kann: | Um [[http://fedoraproject.org/wiki/EPEL|EPEL]] auf den Servern/Knoten Nutzen zu können, muss nachfolgende Datei heruntergeladen werden, was mit nachfolgendem Befehl durchgeführt werden kann: |
<code> | <code> |
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm | # wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm |
</code> | </code> |
| |
Der Inhalt des Paketes **''yum-plugin-priorities.noarch''** kann mit nachfolgendem Befehl angezeigt werden: | Der Inhalt des Pakets **''epel-release-6-7.noarch''** kann mit nachfolgendem Befehl angezeigt werden: |
<code> | <code> |
# rpm -qil epel-release | # rpm -qil epel-release |
</code> | </code> |
| |
:!: **HINWEIS** - Abschließend sollte hier die **Priorität** des [[http://fedoraproject.org/wiki/EPEL|EPEL]]-Repositorys, eine **niedrigere Priorität, durch zuweisung einer __größeren Zahl__**, als die der eigenen Rpository's aus [[http://www.centos.org|CentOS]] zugewiesen werden! | :!: **HINWEIS** - Abschließend sollte hier die **Priorität** des [[http://fedoraproject.org/wiki/EPEL|EPEL]]-Repositorys, eine **niedrigere Priorität, durch Zuweisung einer __größeren Zahl__**, als die der eigenen Rpository's aus [[http://www.centos.org|CentOS]] gegeben werden! |
| |
Was im Beispiel der Konfigurationsdatei | Was im Beispiel der Konfigurationsdatei |
</code> | </code> |
| |
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: | 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:** | **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
===== Server: Konfiguration ===== | ===== Server: Konfiguration ===== |
| |
Nachfolgend soll eine **grundlegende** Konfiguration eines [[http://www.gluster.org/|GlusterFS]] Clusters mit | Nachfolgend soll eine **grundlegende** Konfiguration eines [[http://www.gluster.org/|GlusterFS]]-Clusters mit |
* **zwei Knoten** | * **zwei Knoten** |
durchgeführt werden. | durchgeführt werden. |
===== Server: starten ===== | ===== Server: starten ===== |
| |
:!: **HINWEIS** - **Der Start der Server erfolgt __NUR__ auf den Server/Knoten (ha-node-01 und ha-node-02) !!!** | :!: **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 [[http://www.gluster.org/|GlusterFS]] **Server-Komponente** gestartete werden: | Mit nachfolgendem Befehl, sollten nun auf **beiden Servern/Knoten (ha-node-01 und ha-node-02)** der Dienst/Daemon der [[http://www.gluster.org/|GlusterFS]] **Server-Komponente** gestartete werden: |
===== Trusted Storage Pools ===== | ===== Trusted Storage Pools ===== |
| |
:!: **HINWEIS** - **Der Konfiguration ist __NUR__ auf den __EINEN__ der Server/Knoten (ha-node-01 und ha-node-02) erforderlich !!!** | :!: **HINWEIS** - **Die Konfiguration ist __NUR__ auf __EINEN__ der Server/Knoten (ha-node-01 und ha-node-02) erforderlich !!!** |
| |
Bevor mit der Konfiguration eines unter [[http://www.gluster.org/|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. | Bevor mit der Konfiguration eines unter [[http://www.gluster.org/|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. |
</code> | </code> |
| |
:!: **HINWEIS** - **Es ist __NICHT__ erforderlich, den Server/Knoten auf dem der oben genannte Befehl ausgeführt wird, ebenfalls hinzuzufügen !!!** | :!: **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 ==== | ==== Server/Knoten überprüfen ==== |
**Server/Knoten 1 - IP-Adresse: 192.168.1.201:** | **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
<code> | <code> |
# gluster peer detache ha-node-02.intra.tachtler.net | # gluster peer detach ha-node-02.intra.tachtler.net |
Detach successful | Detach successful |
</code> | </code> |
Um nach, unter dem nachfolgendem internen Link innerhalb dieses DokuWiki --> [[tachtler:hochverfuegbarkeit_glusterfs#trusted_storage_pools|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. | Um nach, unter dem nachfolgendem internen Link innerhalb dieses DokuWiki --> [[tachtler:hochverfuegbarkeit_glusterfs#trusted_storage_pools|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 nachfolgend aufgezählte Arten, eines **Volume** (Speicherbereich auf physischen Festplatte(n)): | Es gibt nachfolgend aufgezählte Arten, eines **Volume** (Speicherbereich auf physischen Festplatte(n)): |
- **Distributed** - Verteilung einer Datei, als ganzes, auf einen der **Bricks** (Server/Knoten) | - **Distributed** - Verteilung einer Datei, als ganzes, auf einen der **Bricks** (Server/Knoten) |
- **Replicated** - Verteilung einer Datei, als ganzes - redundant - auf die **Bricks** (Server/Knoten) | - **Replicated** - Verteilung einer Datei, als ganzes - redundant - auf die **Bricks** (Server/Knoten) |
* **Distributed Striped Replicated** Verteilung einer Datei, in Teilen, auf zwei oder mehr **Bricks** (Server/Knoten) innerhalb eines **Clusters**, welches sich jedoch replizieren | * **Distributed Striped Replicated** Verteilung einer Datei, in Teilen, auf zwei oder mehr **Bricks** (Server/Knoten) innerhalb eines **Clusters**, welches sich jedoch replizieren |
| |
Da ein Bild bekanntlich mehr als 1.000 Worte sagen kann, hier noch einem die Arten eines **Volume** (Speicherbereich auf physischen Festplatte(n)) mit grafischer Beschreibung (wo möglich und sinnvoll): | Hier noch einem die Arten eines **Volume** (Speicherbereich auf physischen Festplatte(n)) mit grafischer Beschreibung (wo möglich und sinnvoll): |
| |
==== Distributed Volume ==== | ==== Distributed Volume ==== |
| |
**Einsatz**: Bei Speicher-Lösungen, bei denen es | **Einsatz**: Bei Speicher-Lösungen, bei denen es auf |
* **+** Performance | * **+** Performance |
* **-** Sicherheit | * **-** Sicherheit |
==== Replicated Volume ==== | ==== Replicated Volume ==== |
| |
**Einsatz**: Bei Speicher-Lösungen, bei denen es | **Einsatz**: Bei Speicher-Lösungen, bei denen es auf |
* **+** hohe Verfügbarkeit | * **+** hohe Verfügbarkeit |
* **+** hohe Zuverlässigkeit | * **+** hohe Zuverlässigkeit |
==== Striped Volume ==== | ==== Striped Volume ==== |
| |
**Einsatz**: Bei Speicher-Lösungen, bei denen es | **Einsatz**: Bei Speicher-Lösungen, bei denen es auf |
* **+** hohe Skalierbarkeit | * **+** hohe Skalierbarkeit |
* **+** paralleler Zugriff auf große Dateien | * **+** paralleler Zugriff auf große Dateien |
==== Distributed Striped Volume ==== | ==== Distributed Striped Volume ==== |
| |
**Einsatz**: Bei Speicher-Lösungen, bei denen es | **Einsatz**: Bei Speicher-Lösungen, bei denen es auf |
* **+** Performance | * **+** Performance |
* **+** hohe Skalierbarkeit | * **+** hohe Skalierbarkeit |
==== Distributed Replicated Volume ==== | ==== Distributed Replicated Volume ==== |
| |
**Einsatz**: Bei Speicher-Lösungen, bei denen es | **Einsatz**: Bei Speicher-Lösungen, bei denen es auf |
* **+** hohe Verfügbarkeit | * **+** hohe Verfügbarkeit |
* **+** hohe Zuverlässigkeit | * **+** hohe Zuverlässigkeit |
==== Striped Replicated Volume ==== | ==== Striped Replicated Volume ==== |
| |
**Einsatz**: Bei Speicher-Lösungen, bei denen es | **Einsatz**: Bei Speicher-Lösungen, bei denen es auf |
* **+** hohe Verfügbarkeit | * **+** hohe Verfügbarkeit |
* **+** hohe Zuverlässigkeit | * **+** hohe Zuverlässigkeit |
===== Volume: Replicated erstellen ===== | ===== Volume: Replicated erstellen ===== |
| |
:!: **HINWEIS** - **Der Konfiguration ist __NUR__ auf den __EINEN__ der Server/Knoten (ha-node-01 und ha-node-02) erforderlich !!!** | :!: **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. Die kann mit dem nachfolgend beschriebenen Befehl durchgeführt werden: | 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: |
<code> | <code> |
# gluster volume create httpd_data replica 2 transport tcp ha-node-01.intra.tachtler.net:/exp1 ha-node-02.intra.tachtler.net:/exp2 | # gluster volume create httpd_data replica 2 transport tcp ha-node-01.intra.tachtler.net:/exp1 ha-node-02.intra.tachtler.net:/exp2 |
| |
**__Erklärung__:** | **__Erklärung__:** |
* **''httpd_data''** - Name des neuen Volumes | * **''httpd_data''** - Name des neuen **Volumes** |
* **''replica 2''** - Replication über zwei **Bricks** (Server/Knoten) | * **''replica 2''** - Replication über zwei **Bricks** (Server/Knoten) |
* **''transport tcp''** - Die Snchronisation erfolgt über des Protokoll ''tcp'' (Infiniband wäre ''rdma'') | * **''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-01.intra.tachtler.net:/exp1''** - erster **Brick** (Server/Knoten) |
* **''ha-node-02.intra.tachtler.net:/exp2''** - zweiter **Brick** (Server/Knoten) | * **''ha-node-02.intra.tachtler.net:/exp2''** - zweiter **Brick** (Server/Knoten) |
===== Client: Installation ===== | ===== Client: Installation ===== |
| |
:!: **HINWEIS** - **Die Installation erfolgt auf __BEIDEN__ den Client/Knoten (ha-node-01 und ha-node-02) !!!** | :!: **HINWEIS** - **Die Installation erfolgt auf __BEIDEN__ Client/Knoten (ha-node-01 und ha-node-02) !!!** |
| |
Um die Client-Komponenten von [[http://www.gluster.org/|GlusterFS]] zu installieren, sollten nachfolgende Pakete mit nachfolgendem Befehl installiert werden: | Um die Client-Komponenten von [[http://www.gluster.org/|GlusterFS]] zu installieren, sollten nachfolgende Pakete mit nachfolgendem Befehl installiert werden: |
* **''fuse''** --> [[http://fuse.sourceforge.net/|FUSE]] Userspace Werkzeuge, um eine [[http://fuse.sourceforge.net/|FUSE]]-Dateisystem //mounten// (einhängen) zu können | * **''fuse''** --> [[http://fuse.sourceforge.net/|FUSE]] Userspace Werkzeuge, um ein [[http://fuse.sourceforge.net/|FUSE]]-Dateisystem //mounten// (einhängen) zu können |
* **''fuse-libs''** --> Die Bibliotheken zu [[http://fuse.sourceforge.net/|FUSE]] | * **''fuse-libs''** --> Die Bibliotheken zu [[http://fuse.sourceforge.net/|FUSE]] |
| |
===== Client: Konfiguration ===== | ===== Client: Konfiguration ===== |
| |
:!: **HINWEIS** - **Die Konfiguration erfolgt auf __BEIDEN__ den Client/Knoten (ha-node-01 und ha-node-02) !!!** | :!: **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 [[http://www.gluster.org/|GlusterFS]] erstellte **Volume** auf einen neuen, oder auch bestehenden **mount-point** (Verzeichnis, in welches das Dateisystem eingehängt wird). | Die Konfiguration ist eigentlich nur das **mounten** (einhängen) des durch [[http://www.gluster.org/|GlusterFS]] erstellte **Volume** auf einen neuen, oder auch bestehenden **mount-point** (Verzeichnis, in welches das Dateisystem eingehängt wird). |
</code> | </code> |
| |
Dies bewirkt das **mounten** (einhängen) des durch [[http://www.gluster.org/|GlusterFS]] erstellte **Volume** in das Dateisystem, via **glusterfs**: | Dies bewirkt das **mounten** (einhängen) des durch [[http://www.gluster.org/|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 !!! | :!: **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** (einhängen) 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: | 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:** | **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
</code> | </code> |
| |
Um zu überprüfen, ob die Replikation wischen (ha-node-01 und ha-node-02) auch tatsächlich funktioniert, kann z.B. auf | 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:** | * **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
mit nachfolgendem Befehl eine (leere) Datei erstellt werden: | mit nachfolgendem Befehl eine (leere) Datei erstellt werden: |
==== Monitoring: top ==== | ==== Monitoring: top ==== |
| |
Nachfolgende Befehle geben die Nutzungsdaten eines [[http://www.gluster.org/|GlusterFS]] erstelltes **Volume** aus: | Nachfolgende Befehle geben die Nutzungsdaten eines mit [[http://www.gluster.org/|GlusterFS]] erstelltes **Volume** aus: |
* **''open''** - Anzahl der geöffneten Dateien und wie oft diese geöffnet wurden je **Brick** (Server/Knoten) | * **''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) | * **''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) | * **''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) | * **''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) | * **''readdir''** - Anzahl der höchsten Lese-Zugriffe auf Verzeichnisse je **Brick** (Server/Knoten) |
| |
</code> | </code> |
| |
Nachfolgende Befehle geben die Nutzungsdaten eines [[http://www.gluster.org/|GlusterFS]] erstelltes **Volume** aus: | Nachfolgende Befehle geben die Nutzungsdaten eines mit [[http://www.gluster.org/|GlusterFS]] erstellten **Volume** aus: |
* **''read-perf''** - Anzahl der höchsten Lese-Zugriffe Performancedaten je **Brick** (Server/Knoten) | * **''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) | * **''write-perf''** - Anzahl der höchsten Schreib-Zugriffe, Performancedaten je **Brick** (Server/Knoten) |
| |
Der Befehl ist immer wie folgt aufgebaut: | Der Befehl ist immer wie folgt aufgebaut: |
</code> | </code> |
| |
| Mit nachfolgendem Befehl, können z.B. diese Performance Dateien angezeigt werden. |
| (**''list-cnt 25''** begrenzt die Anzeige auf die letzten 25 Einträge). |
| <code> |
| # 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 |
| </code> |
| |
| ==== Monitoring: Informationen ==== |
| |
| Mit nachfolgendem Befehl, können Informationen über die Beschaffenheit eines mit[[http://www.gluster.org/|GlusterFS]] erstellten **Volume** abgefragt werden: |
| <code> |
| # 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 |
| </code> |
| oder **über alle**, __nicht__ explizit eines **Volume**: |
| <code> |
| # 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 |
| </code> |
| |
| ===== 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**: |
| <code> |
| # 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 |
| </code> |
| |
| **Erstellung einer 100 MegaByte großen Datei auf einem GlusterFS Dateisystem**: |
| <code> |
| # 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 |
| </code> |
| |