Anwendungen Server

DRBD/OCFS2 – OCFS2

Um mich mal ein wenig von IBM abzulenken, mache ich einfach mal mit der alten Artikelserie die wohl die meisten interessieren wird weiter. Unsere letzte Aktion war DRBD einrichten, dies ist nun erledigt und wir können den nächsten Schritt gehen: OCSF2.

Kernel
Wenn wir nicht gerade einen Ur- Alt Kernel verwenden ist OCFS2 bereits mit enthalten (im Kernelsource). Dieses müssen wir nun nur noch in den Kernel mit einbauen. Wer nun wie ich denkt, dies könne man fest einkompilieren da die Funktionalität eh gebraucht wird, der irrt. Die entsprechenden Funktionen MÜSSEN als Modul kompiliert werden, nach dem Neustart muss es entsprechend so aussehen:

node ~ # lsmod
Module                  Size  Used by
drbd                  185640  4 
ocfs2_dlmfs            20752  1 
ocfs2                 385256  1 
ocfs2_dlm             176540  2 ocfs2_dlmfs,ocfs2
ocfs2_nodemanager     196424  7 ocfs2_dlmfs,ocfs2,ocfs2_dlm
configfs               25704  2 ocfs2_nodemanager

Das “drbd” Modul geht uns momentan nichts an. Unter Umständen kann es auch sein das die Module noch nicht geladen wurden, dies wird dann vom init Script erledigt, falls nicht kann man diese auch einfach in die autoload einfügen.

OCFS2 Tools
Damit nach ein Blockdevice als Clusterdateisystem genutzt werden kann, benötigen wir noch einige Tools. Wie immer wird von Gentoo ausgegangen:

emerge ocsf2-tools

Einmal davon abgesehen das das Paket maskiert ist (was für Gentoo Kenner kein Problem sein sollte) wird es nicht sauber emergen da das “make” abstürzen wird. Theoretisch könnte ich damit den Artikel beenden und die Lösung nur gegen Geld zur Verfügung stellen, aber wir machen nun einfach weiter, folgendes funktioniert zum aktuellen Zeitpunkt Copy und Paste:

cd /usr/portage/sys-fs/ocfs2-tools/
ebuild ocfs2-tools-1.2.1.ebuild unpack
cd /var/tmp/portage/sys-fs/ocfs2-tools-1.2.1/work/ocfs2-tools-1.2.1/libocfs2/include/
vi ocfs2.h

In die ocfs2.h fügen wir nun die Zeilen mit dem + am Anfang ein, die anderen sind nur als Navigationshilfe gezeigt (Zeile 48), das + (PLUS) sollte natürlich entfernt werden:

#include "byteorder.h"
 
+#if !defined(offsetof)
+#   define offsetof(type,memb) ((size_t)&((type*)0)->memb)
+#endif
 
#if OCFS2_FLAT_INCLUDES
#include "o2dlm.h"

Noch einen anderen “Bug” fixen:

cd /usr/portage/sys-fs/ocfs2-tools/
ln -s /usr/src/linux/include/asm/page.h /usr/include/asm/

Und den “Gentoo Way” weiter:

ebuild ocfs2-tools-1.2.1.ebuild compile
ebuild ocfs2-tools-1.2.1.ebuild install
ebuild ocfs2-tools-1.2.1.ebuild qmerge

Konfigurieren
Die Konfigurationsdatei, Copy und Paste muss natürlich angepasst werden, die Datei heisst:
/etc/ocfs2/cluster.conf

node:
	ip_port = 7777
	ip_address = 172.16.4.20
	number = 0
	name =web1
	cluster = ocfs2

node:
	ip_port = 7777
	ip_address = 172.16.4.21
	number = 1
	name = web2
	cluster = ocfs2

cluster:
	node_count = 2
	name = ocfs2

Da da bei cluster “ocfs2” steht hat nichts zu sagen, dies ist nur der Name des Clusters, da könnte auch Wurstbrot stehen (ich bin jetzt mal gespannt wer seinen Cluster Wurstbrot nennt). Wichtig ist noch das die Namen der Nodes auflösbar sind, sonst können lustige Probleme entstehen, müssen aber nicht.

Weitere Vorbereitungen
Zwei neue Zeilen in der fstab:

none                    /config         configfs        defaults                0 0
none                    /dlm            ocfs2_dlmfs     defaults                0 0

Die entsprechenden Ordner /config und /dlm müssen von Hand angelegt werden.

Formatieren
Nun formatieren wir unser DRBD Device mit OCFS2:

mkfs.ocfs2 /dev/drbd0

Unter Umständen sollten noch andere Inode und Cluster Größen gewählt werden, der Standard war mir zu verschwenderisch. Das formatieren ist natürlich nur auf einer Seite notwendig, wir haben ja DRBD.

Starten und nutzen
Mit einem beherzten:

/etc/init.d/ocfs2 start
mount /dev/drbd0 /mnt/sonstwohin

Das natürlich auf beiden Nodes bzw. allen Nodes ausgeführt werden sollte ist unser Cluster nun fertig.

Theoretisch ist diese Serie nun zu Ende, es wird aber noch ein paar Teile geben, die auf das Loadbalancing und vor allem auf mögliche Probleme die entstehen können eingehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert