Dies ist eine alte Version des Dokuments!


DRBD: Integration in Heartbeat

Im Kapitel DRBD: Raid1 über LAN (Setup) wurde ein rudimentäres Setup eines DRBD-Clusters vorgestellt und im Kapitel DRBD: Ausfall eines Nodes wurden die notwendigen Maßnahmen beschrieben, welche nötig sind, wenn ein Node im Cluster ausfällt. Nun wäre es jedoch wünschenswert, wenn der Ausfall eines Nodes (vor allem des »Primary Node«) automatisch erkannt wird und der »Secondary Node« automatisch zum »Primary Node« heraufgestuft wird und die Ressourcen auch ohne Eingriff des Administrators weiterhin zur Verfügung stehen. Letztlich ist das ja der Anspruch an einem »Hochverfügbarkeits-Cluster« (HA-Cluster). Diese Vorgabe kann mit dem Hochverfügbarkeits-Feature »heartbeat«1) unter Linux realisiert werden.

Note: Ausgangslage dieses Tutorials ist das aus dem Tutorial DRBD: RAID1 über LAN erstellte Setup, zweier »DRBD-Nodes«.

»heartbeat« testet dabei ständig über das Netzwerk, ob sein Partner noch verfügbar bzw »am Leben« ist. Bleibt der erwartete »Herzschlag« des Partners aus, geht der überlebende Partner her und übernimmt die Funktionen des ausgefallenen Partners. Dieses Tutorial demonstriert dies am Beispiel eines DRBD-Volumes.

Installation und Konfiguration von »heartbeat«

Zuerst wird auf beiden Nodes das Paket »heartbeat« aus dem Debian Repository installiert:

# aptitude update
# aptitude install heartbeat

»heartbeat« benötigt drei Konfigurationsdateien, welche Sie selbst anlegen müssen und auf beiden Nodes gleich sein müssen:

/etc/ha.d/ha.cf: Die zentrale Konfigurationsdatei von »heartbeat«:

/etc/ha.d/ha.cf

# /etc/ha.d/ha.cf Main-Config-File
 
# Disable cluster node auto-discovery.
# This requires that cluster nodes be listed explicitly, using the node options.
autojoin none
 
# Heartbeat cluster members
node server1 server2
 
# Heartbeat communication timing
keepalive 1
warntime 10
deadtime 30
initdead 120
 
# Heartbeat communication paths
udpport 694
ucast eth0 192.168.167.135
ucast eth0 192.168.167.136
 
# Don't fail back automatically
auto_failback off
 
# Monitoring of network connection to default gateway
ping 192.168.167.2

  • autojoin: Mit »none« wird die automatische Erkennung der Cluster-Node abgeschaltet, stattdessen müssen diese mit der »node« Option explizit angegeben werden. Dadurch beschleunigt den Cluster-Start bei einer festen Anzahl bekannter Cluster-Nodes.
  • node: Die Angabe der Cluster-Nodes entsprechend der Ausgabe des Kommandos »uname -a«
  • keepalive: Angabe in Sekunden definiert den Interval in dem ein »keep-alive« Paket gesendet wird.
  • warntime: Angabe in Sekunden nachdem eine Warnung geloggt wird, dass der Replikationspartner möglicherweise nicht mehr verfügbar ist.
  • deadtime: Angabe in Sekunden nachdem der nicht mehr antwortende Replikationspartner als nicht mehr verfügbar erkannt wird.
  • initdead: Angabe in Sekunden wie lange beim Booten auf andere Nodes im Cluster gewartet werden soll.
  • udpport: Gibt den »heartbeat« Kommunikationsport der Replikationspartner an.
  • ucast: Gibt die Adressen der zu überwachenden Replikationspartner an.
  • auto_failback: Auf »off« gesetzt wird das automatische Umschalten des (Master-) Primary-Nodes verhindert, nachdem dieser sich zurück meldet. Unter bestimmten Umständen kann das automatische Zurückschalten einen Ping-Pong Effekt zwischen den »heartbeat« Partnern verursachen. Die allgemeine Empfehlung lautet dieses Feature zu deaktivieren.
  • ping: Gibt eine Adresse im Netzwerk an, welche zusätzlich überprüft wird, um festzustellen ob der lokale Node noch mit dem Netzwerk verbunden ist. Hier im Beispiel wurde die Adresse des Standardgateways angegeben.

/etc/ha.d/authkeys: Die Authentifizierung-Datei, damit sich beide Partner gegenseitig authentifizieren können:

/etc/ha.d/authkeys

auth 1
1 sha1 shared_secret

  • auth: Hier wird eine fortlaufende Nummer, beginnend mit »1« als Index angegeben.
  • 1: Hier wird für den ersten Index der Verschlüsselungsalgorithmus »sha1« und das zu verwendende Passwort (Hier im Beispiel) »shared_secret« angegeben.

/etc/ha.d/haresources: Welche Ressourcen überwacht und ggf auf dem anderen Node gestartet werden müssen:

/etc/ha.d/haresources

server1 192.168.167.168 drbddisk::r0 Filesystem::/dev/drbd0::/drbd_data::ext3

  • server1: Gibt den Node an, welche standardmäßig der »Primary-Node« ist. Dieser Wert zB von der og Option »auto_failback« ausgewertet.
  • 192.168.167.168: Gibt eine virtuelle Adresse an, über welche beide Nodes angesprochen werden können. Diese darf nicht schon zB in der Datei »/etc/network/interfaces« konfiguriert werden, sondern wird durch »heartbeat« selbst bereitgestellt.
  • drbddisk::r0 Filesystem::/dev/drbd0::/drbd_data::ext3: Gibt das DRBD-Device, seinen Mountpunkt und das Dateisystem an.

Zum Schluss muss noch »heartbeat« auf beiden Rechnern gestartet werden:

# /etc/init.d/heartbeat start
Starting High-Availability services: IPaddr[3121]: INFO:  Resource is stopped
Done.

Nachdem auf beiden Servern »heartbeat« gestartet ist, werden beiden Server permanent überwacht und beim Ausfall des »Primary-Nodes« wird automatisch auf den verbliebenen Node umgeschaltet. Zu beachten ist jetzt allerdings, dass Sie die beiden Server von Ihren Clients aus mit ihrer virtuellen IP-Adresse (hier »192.168.167.168«) ansprechen müssen und nicht mehr mit ihren nativen IP-Adressen.

tux/drbd_heartbeat.1357059080.txt.gz (9213 views) · Zuletzt geändert: 2013/01/01 17:51 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0