Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
tachtler:hochverfuegbarkeit_gfs2 [2012/09/12 13:31] – klaus | tachtler:hochverfuegbarkeit_gfs2 [2012/09/12 23:44] (aktuell) – klaus |
---|
===== Vorbereitung ===== | ===== Vorbereitung ===== |
| |
Nachfolgende vorbereitende Schritte sind notwendig, um eine [[https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Global_File_System_2/index.html|GFS2]]-Dateisystem zu betreiben. | Nachfolgende vorbereitende Schritte sind notwendig, um ein [[https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Global_File_System_2/index.html|GFS2]]-Dateisystem zu betreiben. |
* Eintragung der beteiligten Server bzw. **Knoten** in die Namensauflösung **DNS**, bzw. **''/etc/hosts''**. | * Eintragung der beteiligten 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''**. |
um anschließend die | um anschließend die |
* Installation der benötigten **Software-Komponenten**. | * Installation der benötigten **Software-Komponenten**. |
==== /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 Kommunikation 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: |
</code> | </code> |
| |
Ein erneute Abfrage des ''iptables''-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann: | Ein 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 |
* **''Resilient Storage''** | * **''Resilient Storage''** |
| |
Mit nachfolgendem Befehl, kann eine Blick auf den Inhalt der **''rpm''**-Pakte-Gruppe **''Resilient Storage''** geworfen werden: | Mit nachfolgendem Befehl, kann ein Blick auf den Inhalt der **''rpm''**-Paket-Gruppe **''Resilient Storage''** geworfen werden: |
<code> | <code> |
# yum groupinfo "Resilient Storage" | # yum groupinfo "Resilient Storage" |
| |
Complete! | Complete! |
| </code> |
| |
| Damit das [[https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Global_File_System_2/index.html|GFS2]]-Dateisystem auch nach einem Neustart (**restart**) des Servers/Knoten zur Verfügung steht, sollten nachfolgende Schritte durchgeführt werden. |
| |
| Nachfolgender Befehl, fügt das **Start-Skript** |
| * **''/etc/init.d/cman''** |
| der automatischen Ausführung (Start) beim Start oder Neustart des Servers/Knotens hinzu: |
| |
| **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
| <code> |
| # chkconfig cman on |
| </code> |
| |
| **Server/Knoten 2 - IP-Adresse: 192.168.1.202:** |
| <code> |
| # chkconfig cman on |
| </code> |
| |
| Ein Überprüfung, ob dies erfolgreich war, kann mit nachfolgendem Befehl durchgeführt werden: |
| |
| **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
| <code> |
| # chkconfig --list | grep cman |
| cman 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
| </code> |
| |
| **Server/Knoten 2 - IP-Adresse: 192.168.1.202:** |
| <code> |
| # chkconfig --list | grep cman |
| cman 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
| </code> |
| |
| ===== /ect/cluster/cluster.conf ===== |
| |
| Um die weitere Konfiguration eines **Clusters** durchführen zu können, ist nachfolgende **minimale** Konfigurationsdatei für den Dienst/Daemon |
| * **''cman''** |
| erforderlich: |
| |
| **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
| <code ini> |
| <cluster name="mycluster" config_version="3"> |
| <cman two_node="1" expected_votes="1"/> |
| <clusternodes> |
| <clusternode name="ha-node-01.intra.tachtler.net" nodeid="1"> |
| </clusternode> |
| <clusternode name="ha-node-02.intra.tachtler.net" nodeid="2"> |
| </clusternode> |
| </clusternodes> |
| </cluster> |
| </code> |
| |
| **Server/Knoten 2 - IP-Adresse: 192.168.1.202:** |
| <code ini> |
| <cluster name="mycluster" config_version="3"> |
| <cman two_node="1" expected_votes="1"/> |
| <clusternodes> |
| <clusternode name="ha-node-01.intra.tachtler.net" nodeid="1"> |
| </clusternode> |
| <clusternode name="ha-node-02.intra.tachtler.net" nodeid="2"> |
| </clusternode> |
| </clusternodes> |
| </cluster> |
| </code> |
| |
| ===== Starten der Komponenten ===== |
| |
| Nachfolgender Befehl startet den Dienst/Daemon **''cman''**: |
| |
| **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
| <code> |
| # service cman start |
| Starting cluster: |
| Checking if cluster has been disabled at boot... [ OK ] |
| Checking Network Manager... [ OK ] |
| Global setup... [ OK ] |
| Loading kernel modules... [ OK ] |
| Mounting configfs... [ OK ] |
| Starting cman... [ OK ] |
| Waiting for quorum... [ OK ] |
| Starting fenced... [ OK ] |
| Starting dlm_controld... [ OK ] |
| Starting gfs_controld... [ OK ] |
| Unfencing self... [ OK ] |
| Joining fence domain... [ OK ] |
| </code> |
| |
| **Server/Knoten 2 - IP-Adresse: 192.168.1.202:** |
| <code> |
| # service cman start |
| Starting cluster: |
| Checking if cluster has been disabled at boot... [ OK ] |
| Checking Network Manager... [ OK ] |
| Global setup... [ OK ] |
| Loading kernel modules... [ OK ] |
| Mounting configfs... [ OK ] |
| Starting cman... [ OK ] |
| Waiting for quorum... [ OK ] |
| Starting fenced... [ OK ] |
| Starting dlm_controld... [ OK ] |
| Starting gfs_controld... [ OK ] |
| Unfencing self... [ OK ] |
| Joining fence domain... [ OK ] |
</code> | </code> |
| |
</code> | </code> |
| |
Entscheidend, in oben gezeigten Abfrage, ist nachfolgende Zeile: | Entscheidend, in oben gezeigten Abfragen, ist nachfolgende Zeile: |
<code> | <code> |
... | ... |
//*Hier stehen noch 616 MegaByte freier Speicherplatz zur Verfügung// | //*Hier stehen noch 616 MegaByte freier Speicherplatz zur Verfügung// |
| |
Der noch freie Speicher, kann nun mit nachfolgendem Befehl, durch eine logisches **Volume** belegt werden: | Der noch freie Speicher, kann nun mit nachfolgendem Befehl, durch ein logisches **Volume** belegt werden: |
| |
**Server/Knoten 1 - IP-Adresse: 192.168.1.201:** | **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
==== Formatierung ==== | ==== Formatierung ==== |
| |
Nachdem die entsprechende **Partition** innerhalb eines LVM erstellt wurde, kann die der Formatierung mit dem [[https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Global_File_System_2/index.html|GFS2]]-Dateisystem mit nachfolgendem Befehl durchgeführt werden: | Nachdem die entsprechende **Partition** innerhalb eines LVM erstellt wurde, kann die Formatierung mit dem [[https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Global_File_System_2/index.html|GFS2]]-Dateisystem, mit nachfolgendem Befehl durchgeführt werden: |
| |
**Server/Knoten 1 - IP-Adresse: 192.168.1.201:** | **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
<code> | <code> |
... | ... |
/dev/mapper/VolGroup/LogVolGFS /mnt gfs2 defaults 0 0 | /dev/VolGroup/LogVolGFS /mnt gfs2 defaults 0 0 |
... | ... |
</code> | </code> |
<code> | <code> |
... | ... |
/dev/mapper/VolGroup/LogVolGFS /mnt gfs2 defaults 0 0 | /dev/VolGroup/LogVolGFS /mnt gfs2 defaults 0 0 |
... | ... |
</code> | </code> |
Dies bewirkt das **mounten** (einhängen) des durch [[https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Global_File_System_2/index.html|GFS2]] erstellte **Volume** in das Dateisystem, via **gfs2**: | Dies bewirkt das **mounten** (einhängen) des durch [[https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Global_File_System_2/index.html|GFS2]] erstellte **Volume** in das Dateisystem, via **gfs2**: |
| |
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 der 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: |
| |
**Server/Knoten 1 - IP-Adresse: 192.168.1.201:** | **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** |
<code> | <code> |
# df -h | grep /mnt -1 | # df -h | grep /mnt -1 |
| /dev/mapper/VolGroup-LogVolGFS |
| 616M 518M 99M 84% /mnt |
</code> | </code> |
| |
**Server/Knoten 2 - IP-Adresse: 192.168.1.202:** | **Server/Knoten 2 - IP-Adresse: 192.168.1.202:** |
<code> | <code> |
# df -h | grep mnt -1 | # df -h | grep /mnt -1 |
| /dev/mapper/VolGroup-LogVolGFS |
| 616M 518M 99M 84% /mnt |
</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 | :!: **WICHTIG** - **Falls es gewünscht sein sollte, die __BEIDEN__ Server/Konten und deren [[https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Global_File_System_2/index.html|GFS2]]-Dateisystem __synchron__ zu halten, kann nachfolgender interner Link aus diesem DokuWiki weiterhelfen:** |
* **Server/Knoten 1 - IP-Adresse: 192.168.1.201:** | * **[[tachtler:hochverfuegbarkeit_glusterfs|Hochverfügbarkeit GlusterFS]]** |
mit nachfolgendem Befehl eine (leere) Datei erstellt werden: | |
<code> | |
# touch /mnt/test-datei | |
</code> | |
| |
Anschließend sollte auf | :!: **WICHTIG** - **Auch eine darunterligendes **DRBD** kann eine Lösung zur Synchronisation sein** |
* **Server/Knoten 2 - IP-Adresse: 192.168.1.202:** | |
mit nachfolgendem Befehl überprüft werden, ob die Datei ebenfalls existiert: | |
<code> | |
# ls -l /mnt/ | |
| |
</code> | |
| |