Barcamp München 2008: Session LinuxHA und DRBD
Auf dem Barcamp München habe ich eine Session zu Hochverfügbarkeit mit Linux gehalten.
Eine gewisse Ironie ergab sich schon aus der Raumzuteilung: die Linux-HA Session fand im Raum "Microsoft" statt. Die Besucheranzahl war nicht allzu groß - vielleicht war das Thema auch etwas speziell gewählt. Die ersten 15 Minuten der Session dienten einer Einführung in das Thema anhand einer Präsentation.
Der zweite Teil bestand aus dem Aufbau eines Democlusters; einem ausfallsicheren NFS Server. Die beiden Clusterknoten wurden mit Hilfe von VMwarerealisiert. Vorbereitet waren zwei, bis auf die Netzwerkkonfiguration, identische Debian-Lenny-Instanzen.
Nachfolgend sind die in der Session verwendeten Shellbefehle wiedergegeben, die darin erwähnten Konfigurations-Dateien stehen in einem tar-gz-Archiv zur Verfügung:
# Script der HA-Cluster-Installationssession # # Vorraussetzung ist 2 x Debian Lenny mit Minimalausstattung + opensshd # # soweit nicht anderweitig angegeben müssen die Befehle auf beiden Knoten ausgeführt werden. # die COPY anweisungen beziehen sich auf die Inhalte des beiliegenden tar.gz files # # zusätzliche Pakete installieren aptitude install ntpdate drbd8-modules-2.6-686 drbd8-utils drbdlinks heartbeat nfs-kernel-server # autostart der von Heartbeat gemanagten Dienste verhindern update-rc.d -f drbd remove update-rc.d -f nfs-kernel-server remove ntpdate pool.ntp.org mkdir -p /shared/data # drbd config # =========== fdisk /dev/sda # gleich große Partition auf beiden Knoten einrichten scp COPY/etc/drbd.conf root@node[1,2]:/etc drbdadm create-md r0 /etc/init.d/drbd start drbdadm -- --overwrite-data-of-peer primary r0 # nur auf einem host cat /proc/drbd mkfs.ext3 /dev/drbd0 # nur auf primary drbd node # heartbeat # ========= scp COPY/etc/ha.cf root@node[1,2]:/etc/authkeys # lokal hb_gui starten und zu node1 verbinden (user hacluster) # cib sample files auf einen Knoten kopieren cat linuxha-drbd-session-files.tar.gz | ssh root@node1 "tar -zx cib" # die folgenden Schritte von Node1 ausführen # 1) drbd in heartbeat aufnehmen cibadmin -R -o resources -x cib/0_drbd/resources.xml # 2) ipaddr hinzufügen und miteinander verknüpfen cibadmin -R -o resources -x cib/1_ipaddr/resources.xml cibadmin -R -o constraints -x cib/1_ipaddr/constraints.xml # 3) filesystem mount cibadmin -R -o resources -x cib/2_filesystem/resources.xml # drbdlinks initialisieren scp COPY/etc/drbdlinks.conf root@node[1,2]:/etc # auf aktiven Clusterknoten: cp -a --parents /etc/exports /shared cp -a --parents /var/lib/nfs /shared # drbdlinks in cluster aufnehmen cibadmin -R -o resources -x cib/2_drbdlinks/resources.xml # 4) NFS in Cluster aufnehmen cibadmin -R -o resources -x cib/3_nfs/resources.xml # vom Client aus testen showmount -e clusterip mount -t nfs clusterip:/shared/data /mnt
Den universellen Gesetzen von Murphy folgenend, hat sich aus nicht nachvollziehbaren Gründen der Cluster nicht wie erwartet verhalten. Die Übernahme des NFS-Dienstes bei gemountetem Share hat nicht wirklich funktioniert. Um nicht allzu viel Zeit mit der Fehlersuche zu verschwenden, wurde an dieser Stelle abgebrochen.
Anschließend war noch ausreichend Zeit für eine gute Diskussionsrunde übrig, in der Erfahrungen und Tipps ausgetauscht wurden. Mir hat die Session viel Spaß gemacht, ich hoffe den Teilnehmern auch.

