Create a shared disk for VMware ESX guests

To create a shared disk between two or more VMs, login into one of your ESX hosts and create a disk image.

cd /vmfs/volumes/#volume-name#/#vm-name#/;
vmkfstools -d thick -a lsilogic -c 50G shareddisk.vmdk;

Add the new hardrive to the guest(s) and select a new SCSI bus (like SCSI 2:0). VMware create a new SCSI controller. Set SCSI Bus Sharing = Physical or Virtual and have fun ­čÖé

HA mit Debian Lenny & drbd8, ocfs2, heartbeat, pound (http) und mysql

Vorrausetzung

  • 2 Server mit einer Lenny Grundinstallation ( Hier als Servernamen cnode1 und cnode2 )
  • Optional: 2 Netzwerkkarten je Server (f├╝r drbd)
  • eine leere Partion je Server
  • Vorausgesetzt es ist nicht anderst angegeben, alles auf beiden Nodes ausf├╝hren !

Konfiguration von drbd

Auf beiden Servern als root anmelden

aptitude install drbd8-utils drbd8-modules-2.6.24-1-686
echo "drbd" >> /etc/modules

Nun sichern wir die alte drbd-Konfigurationsdatei

mv /etc/drbd.conf /etc/drbd.conf.old

Jetzt erstellen wir eine neue Datei mit vim /etc/drbd.conf

global { usage-count yes; }
common { syncer { rate 10M; } }
resource ha {
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120; }
disk { on-io-error detach; }
net {
cram-hmac-alg sha1;
allow-two-primaries; # Wichtig f├╝r Primary/Primary Setup
}
on cnode1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.1:7788;
meta-disk internal;
}
on cnode2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.2:7788;
meta-disk internal;
}
}

Speichern mit :wq

Wenn 2 Netzwerkkarten vorhanden sind, drbd lieber auf eine eigene Karte konfigurieren. Damit drbd mit der Partion etwas anfangen kann, m├╝ssen wir diese initialisieren.

drbdadm create-md ha

Nun k├Ânnen wir die beiden Partionen synchronisieren. (Den folgenden Befehl nur auf einer Node starten !)

drbdsetup /edv/drbd0 primary --overwrite-data-of-peer

Je nach dem wie gro├č die Partionen sind kann es nun etwas Zeit vergehen. Der Fortschritt kann ├╝berpr├╝ft werden mit

/etc/init.d/drbd status

In der Ausgabe sollte sich die unten stehende Zeile finden lassen, wenn beide drbd-Devices synchron sind.

0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---

Nun k├Ânnen wir die zweite Node auch zum ”Primary” machen

drbdsetup primary r0

Update (Danke keks)

Da es sehr st├Ârend ist, wenn wir die Server neustarten, immer per Hand die 2 Nodes als Primary zu definieren, f├╝gen wir noch zus├Ątzlich in den startup-Block

become-primary-on both;

ein. Die Zeile sollte dann wie folgt aussehen:

startup { wfc-timeout 0; degr-wfc-timeout: 120; become-primary-on both; }

Das bewirkt, dass beide w├Ąhrend des Bootvorgangs als Master definiert werden. Nun die Konfiguration auf beiden Nodes aktualisieren, dann

drbdadm adjust ha

und

drbdadm primary ha

(Befehle auf beiden Nodes ausf├╝hren!)

Wichtig: Um diese Funktion zunutzen, m├╝sst ihr DRBD aus den Quellen bauen, da die Funktion (laut drbd-Homepage) erst ab 8.2.0 implementiert ist.

Konfiguration von ocfs2

Jetzt installieren das ocfs2 Filesystem

aptitude install ocfs2-tools ocfs2console

Noch die Konfigurationsdatei erstellen

#/etc/ocfs2/cluster.conf

node:
ip_port = 7777
ip_address = 192.168.1.1
number = 0
name = cnode1
cluster = ocfs2

node:
ip_port = 7777
ip_address = 192.168.1.2
number = 1
name = cnode2
cluster = ocfs2

cluster:
node_count = 2
name = ocfs2

Nun sind wir fast fertig. Jetzt einmal

/etc/init.d/ocfs2 restart

und dann k├Ânnen wir das Filesystem erstellen mit

mkfs.ocfs2 /dev/drbd0

Damit wir mit dem Filesystem arbeiten k├Ânnen, m├╝ssen wir es initialisieren.

/etc/init.d/o2cb online ocfs2

bewirkt das der Cluster mit dem Namen ocfs2 geladen wird.

/etc/init.d/o2cd load
/etc/init.d/o2cd online ocfs2

Jetzt k├Ânnen wir es mit

mount /dev/drbd0 /srv

nutzen

Konfiguration vom HTTP Loadbalancer – pound

Hier ­čÖé

Konfiguration von heartbeat

Folgt !