Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:hochverfuegbarkeit_glusterfs

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tachtler:hochverfuegbarkeit_glusterfs [2012/09/10 14:07] klaustachtler:hochverfuegbarkeit_glusterfs [2012/09/21 10:34] (aktuell) – [Performance] klaus
Zeile 1: Zeile 1:
 ====== 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}}
Zeile 10: Zeile 10:
 ===== 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
Zeile 22: Zeile 22:
 ==== /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:**
Zeile 28: Zeile 28:
 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>
  
Zeile 37: Zeile 37:
 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:
Zeile 93: Zeile 82:
   * **''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
Zeile 126: Zeile 115:
 </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 Befehlabschließend noch ausgeführt werden:
 <code> <code>
 # service iptables save # service iptables save
Zeile 134: Zeile 123:
 ==== 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
Zeile 181: Zeile 170:
 </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
Zeile 241: Zeile 230:
 </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
Zeile 317: Zeile 306:
 </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
Zeile 341: Zeile 330:
 </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 
Zeile 432: Zeile 421:
 </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 Ausgabeauszufü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:**
Zeile 456: Zeile 445:
 ===== 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.
Zeile 496: Zeile 485:
 ===== 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:
Zeile 571: Zeile 560:
 ===== 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.
Zeile 585: Zeile 574:
 </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 ====
Zeile 617: Zeile 606:
 **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>
Zeile 625: Zeile 614:
 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)
Zeile 636: Zeile 625:
   * **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
Zeile 656: Zeile 645:
 ==== 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
Zeile 674: Zeile 663:
 ==== 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
Zeile 691: Zeile 680:
 ==== 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
Zeile 709: Zeile 698:
 ==== 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
Zeile 727: Zeile 716:
 ==== 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
Zeile 746: Zeile 735:
 ===== 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
Zeile 755: Zeile 744:
  
 **__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)
Zeile 789: Zeile 778:
 ===== 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]]
  
Zeile 842: Zeile 831:
  
 Complete! Complete!
 +</code>
 +
 +===== 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 [[http://www.gluster.org/|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**):
 +<code>
 +# mkdir /var/www
 +</code>
 +
 +:!: **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:**
 +<code>
 +...
 +192.168.1.201:/httpd_data  /var/www                glusterfs       defaults,_netdev,log-level=WARNING,log-file=/var/log/glusterfs/gluster.log 0 0
 +...
 +</code>
 +
 +**Server/Knoten 2 - IP-Adresse: 192.168.1.202:**
 +<code>
 +...
 +192.168.1.202:/httpd_data  /var/www                glusterfs       defaults,_netdev,log-level=WARNING,log-file=/var/log/glusterfs/gluster.log 0 0
 +...
 +</code>
 +
 +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 !!!
 +
 +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:**
 +<code>
 +# mount -a
 +</code>
 +
 +**Server/Knoten 2 - IP-Adresse: 192.168.1.202:**
 +<code>
 +# mount -a
 +</code>
 +
 +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:**
 +<code>
 +# df -h | grep /var/www -1
 +192.168.1.201:/httpd_data
 +                      3.5G  771M  2.6G  23% /var/www
 +</code>
 +
 +**Server/Knoten 2 - IP-Adresse: 192.168.1.202:**
 +<code>
 +# df -h | grep /var/www -1
 +192.168.1.202:/httpd_data
 +                      3.5G  771M  2.6G  23% /var/www
 +</code>
 +
 +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:
 +<code>
 +# touch /var/www/test-datei
 +</code>
 +
 +Anschließend sollte auf
 +  * **Server/Knoten 2 - IP-Adresse: 192.168.1.202:**
 +mit nachfolgendem Befehl überprüft werden, ob die Datei ebenfalls existiert:
 +<code>
 +# ls -l /var/www/
 +total 0
 +-rw-r--r-- 1 root root 0 Sep 10 12:47 test-datei
 +</code>
 +
 +===== Monitoring =====
 +
 +Um ein mit [[http://www.gluster.org/|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:
 +<code>
 +# gluster volume profile httpd_data start
 +Starting volume profile on httpd_data has been successful
 +</code>
 +
 +Um die Werte aus der Überwachung im Modus **profile** anzuzeigen, ist nachfolgender Befehl notwendig:
 +<code>
 +# 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                                         
 +No. of Writes:                    2                                        22 
 +
 +   Block Size:                128b+                 256b+                 512b+ 
 + No. of Reads:                    0                                         
 +No. of Writes:                  228                   166                     
 +
 +   Block Size:               1024b+                2048b+                4096b+ 
 + No. of Reads:                    0                                         
 +No. of Writes:                   10                    16                    37 
 +
 +   Block Size:               8192b+               32768b+ 
 + No. of Reads:                    0                     
 +No. of Writes:                   16                     
 + %-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                                         
 +No. of Writes:                    2                                        22 
 +
 +   Block Size:                128b+                 256b+                 512b+ 
 + No. of Reads:                    0                                         
 +No. of Writes:                  228                   166                     
 +
 +   Block Size:               1024b+                2048b+                4096b+ 
 + No. of Reads:                    0                                         
 +No. of Writes:                   10                    16                    37 
 +
 +   Block Size:               8192b+               32768b+ 
 + No. of Reads:                    0                     
 +No. of Writes:                   16                     
 + %-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
 +
 +</code>
 +
 +Um die Überwachung im Modus **profile** zu deaktivieren, ist nachfolgender Befehl notwendig:
 +<code>
 +# gluster volume profile httpd_data stop
 +Stopping volume profile on httpd_data has been successful
 +</code>
 +
 +==== Monitoring: top ====
 +
 +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)
 +  * **''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:
 +<code>
 +# gluster volume top <VOLUME> <BEFEHL> brick <SERVER:/VOLUME> list-cnt <ANZAHL>
 +</code>
 +
 +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).
 +<code>
 +# 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
 +</code>
 +
 +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)
 +  * **''write-perf''** - Anzahl der höchsten Schreib-Zugriffe, Performancedaten je **Brick** (Server/Knoten)
 +
 +Der Befehl ist immer wie folgt aufgebaut:
 +<code>
 +# gluster volume top <VOLUME> <BEFEHL> <BLOCK SIZE nnn> <COUNT n> brick <SERVER:/VOLUME> list-cnt <ANZAHL>
 +</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> </code>
  
tachtler/hochverfuegbarkeit_glusterfs.1347278858.txt.gz · Zuletzt geändert: 2012/09/10 14:07 von klaus