Debian hochverfügbar

Ich habe mich in den letzten Tagen etwas mit Backupsystemen für kritische Systemdienste wie z.B. unserem Proxyserver auseinandergesetzt habe hier mal ein kleines Tutorial. Und zwar geht es um die redundate Auslegung von Linux-basierten Servern mit Hilfe des Linux-HA Projekts.

Zuerst habe ich ein identisch eingerichtetes System aufgesetzt, wichtig ist vor allem das sowohl die Dienste welche später zur Verfügung gestellt werden sollen identische konfiguriert sein müssen, wie auch die Netzwerkinterfaces. Das zukünftige Backupsystem darf zu dem Zeitpunkt natürlich nicht in das Netz eingebunden sein um den vorhandenen Server nicht zu behindern. Alternativ können natürlich auch die Netzwerkinterfaces für den Zeitraum deaktiviert oder anders konfiguriert werden.

Installation der Hochverfügbarkeitsdienste

Unter Debian steht die in meinem Fall verwendete Software bereits bezugsfertig in den Paketquellen zum Download bereit. Und zwar handelt es sich dabei um das Paket heartbeat-2, welches Problemlos per

apt-get install heartbeart-2

installiert werden kann. Wichtig ist hierbei das -2, weil sich auch noch die 1.x Version in den Paketquellen befindet. Die Installation ist damit bereits abgeschlossen.

Konfiguration der Hochverfügbarkeitsdienste
Nachdem die Installation abgeschlossen ist geht es weiter mit der Konfiguration der Dienste. Hierfür müssen drei Konfigurationsdateien erstellt werden.

Hauptkonfiguration

Den Anfang machen wir mit der Hauptkonfigurationsdatei /etc/ha.d/ha.cf. Hier ein Beispiel für eine Konfiguration:

deadping 4
deadtime 4

Die Befehle ‚deadping’ und ‚deadtime’ bestimmen ab wann ein Node als tot deklariert wird. In diesem Fall steht die 4 für 4 Sekunden, die ein Node nicht erreichbar sein muss um als tot zu gelten.

serial /dev/ttyS0

‚serial /dev/ttyS0’ steht für die Nullmodemkabelverbindung die ich in meinem Versuchsaufbau verwendet habe um die Nodes zu synchronisieren. Natürlich muss man keine Nullmodemkabelverbindung verwenden sondern kann auch eine Lan Verbindung nutzen, allerdings bot es sich in meinem Fall an um nicht noch eine dritte Netzwerkkarte in jedes System einbauen zu müssen. Außerdem konnte ich so bedenkenlos die Netzwerkverbindungen deaktivieren bei den passiven Nodes.

auto_failback off

Diese Zeile regelt die Betriebsart des ‚Clusters’, in diesem Fall eine active/passiv-Konfiguration wo ein Node alle Dienste beherbergt und alle anderen passiv sind.

logfile /var/log/ha.log
debugfile /var/log/debug.log

Die Befehle ‚debugfile’ und ‚logfile’ sind nur dafür da den Speicherort der Logfiles anzugeben. Alternativ kann mit ‚logfacility syslog’ auch das Systemlog als Speicherort verwendet werden.

node deb-vw-1 deb-vw-2

Die letzte Zeile meiner Hauptkonfiguration definiert die teilnehmenden Nodes. Die Namen müssen den Hostnamen der teilnehmenden Nodes entsprechen.

Die Konfigurationsdatei /etc/ha.d/ha.cf sollte auf allen Nodes identisch sein.

Weitere Konfigurationsmöglichkeiten finden sich z.B. hier:

  • http://linux-ha.org/ha.cf

Dienstekonfiguration

Die Dienste und die Definition des primären Nodes werden im resources-File definiert.

/etc/ha.d/haresources

Dieses könnte wie folgt aussehen:

deb-vw-1 10.10.8.204 squid

Festgelegt wird hier das ‚deb-vw-1’ das primäre Node ist, alle Nodes die Dienste im Fall der Fälle über die IP 10.10.8.204 anbieten sollen und der Dienst ‚squid’ gestartet werden soll. D.h. das auf jedem Node in /etc/init.d ein Script namens ‚squid’ liegen muss, das die üblichen Parameter wie ‚start’ und ‚stop’ kennt.

Die Dienstekonfiguration kennt natürlich noch viele weitere Möglichkeiten aber zum Ausprobieren sollte diese schon reichen.

Weitere Konfigurationsmöglichkeiten finden sich z.B. hier:

  • http://linux-ha.org/haresources

Autentifizierung untereinander

Zu guter letzt fehlt nurnoch die Art wie sich die Nodes untereinander authentifizieren. Da ich meinen nodes Vertrauen kann habe ich nur eine CRC Authentifizierung gewählt.

Dazu erstellen wir eine Datei namens /etc/ha.d/authkeys mit folgendem Inhalt:

auth 1
1 crc

Diese sollte auch wie alle Konfigurationsdateien auf allen Nodes identisch sein, braucht jedoch im Gegensatz zu den anderen andere Schreib-/Leserechte. Was allerdings weniger schwierig ist. Ein

chmod 600 /etc/ha.d/authkeys

reicht aus.

Fazit

Ich persönlich bin überrascht gewesen, wie einfach es ist ein grundlegende Dienste redundant auszulegen, ein paar Schwierigkeiten sind allerdings schon aufgetreten. Ich weiß nicht ob es überhaupt möglich ist das zu beheben, jedoch dauert es bei meiner Lösung rund 10 – 15 Sekunden bis nach dem Wechsel das neue aktive Node erreichbar ist. Weitere Details und mehr Konfigurationsmöglichkeiten vieleicht in einem späteren Beitrag. Mal sehen wie sich meine Testumgebung entwickelt. Btw. ich würd mich über etwas Feedback freuen :)

1 Response to “Debian hochverfügbar”


Leave a Reply