Heartbeat ist im der Netzwerkwelt ein Programm, welches überwacht ob ein System bzw. Dienst noch verfügbar ist. Sobald ein Heartbeat-Programm feststellt, dass das primäre System/Dienst nicht mehr verfügbar ist, könnte es das BackUp-System anweisen den ausgefallenen Dienst zu übernehmen.
Im nachfolgenden einige Scripte, welche ein simples, rudimentäres Heartbeat bieten.
#!/bin/bash IP=127.0.0.1 ping $IP -c 2 || ping $IP -c 1 || /srv/backupservice start
nc = netcat
#!/bin/bash IP=127.0.0.1 PORT=80 nc -z $IP $PORT || /srv/backupWWWstart
Heartbeat<font 9pt/Arial, sans-serif;;#000000;;inherit font-family: Arial, sans-serif; font-weight: bold; line-height: 1.2;>für einen FTP-Server:</font>
#!/bin/bash IP=localhost PORT=21 nc -z $IP $PORT || /srv/backupFTPstart
#!/bin/bash PRGNAME=apache2 ps -a | grep -w $PRGNAME || /usr/sbin/apache2
Diese Scripte müssen natürlich sinngemäß angepasst werden (über die Variablen PRGNAME,IP, PORT) und das auszuführende Kommando sollte auch existieren bzw. angepasst werden.
Bis auf das letzte Script (Heartbeat für ein Programm) müssen diese Scripte natürlich auf den Backupsystemen ausgeführt werden. Da diese Scripte ja regelmäßig laufen sollen empfiehlt sich ein Eintrag in die Crontab wie im folgenden Beispiel:
* * * * * /srv/bin/heartbeat.sh
Dafür habe ich dass entsprechende Script ausführbar gemacht (<font 9pt/courier new,courier,monospace;;#000000;;#ffffff>chmod 700</font> ) und nach <font 9pt/courier new,courier,monospace;;#000000;;#ffffff>/srv/bin/heartbeat.sh</font> kopiert. Es wird jetzt jede Minute ausgeführt. (für private Zwecke sollte dies vollkommen ausreichend sein.)
Auch das letzte Script (Heartbeat für ein Programm) sollte in die Crontab eingetragen werden, hier jedoch auf den primären System selbst.
Weitere Informationen zu Cron:
Da Cron maximal einmal in der Minute das Heartbeat-Script startet, kann man mit einen das Tool SLEEP helfen. Dieses Tool lässt wartet einfach #-Sekunden. Wenn also die Scripte nach folgenden Beispiel erweitert werden, kann auch eine höhere Überprüfungsfrequenz erreichen:
#!/bin/bash IP=127.0.0.1 ping $IP -c 2 || ping $IP -c 1 || /srv/backupservice start sleep 20 # warte ne drittel minute ping $IP -c 2 || ping $IP -c 1 || /srv/backupservice start sleep 20 # nochmal warten ping $IP -c 2 || ping $IP -c 1 || /srv/backupservice start
Bei allen Scripten machen wir uns den ODER-Operator ( || ) zu nutze. Wenn ein Programm fehlschlägt, dann wird das Programm hinter den ODER-Operator aus geführt:
false || echo "Programm fehlgeschlagen" true || echo "Dies ist nicht zu lesen"
Bei weiteren Fragen kann Ihnen in der Mailingliste: lug-talk(ät)lists(dot)lug-myk(dot)de geholfen werden.