Kamikaze/LuCI/Watchdog

Aus wiki.freifunk.net
Wechseln zu: Navigation, Suche

Informationen zum Freifunk-Watchdog unter Kamikaze/LuCI.

Inhaltsverzeichnis

Funktionsweise

Aktuelle Versionen der Freifunk Kamikaze Builds beinhalten einen Watchdog-Prozess welcher verschiedene Aspekte des Systems überwacht. Der Daemon läuft mit einem Intervall von 30 Sekunden und hat eine Hysterese von 3, d.h. etwaige Aktionen werden nach 90 Sekunden (3 * 30 Sekunden) Fehlerkondition ausgelöst.

Zur Zeit implementiert der Watchdog folgende Funktionen:

  • BSSID- und Kanalüberwachung - für jedes in /etc/config/wireless definierte Ad-Hoc Interface werden BSSID und Kanal überwacht, stimmt entweder die BSSID oder der Kanal nicht überein, wird ein Wireless-Neustart mittels "/sbin/wifi" ausgelöst.
  • Load-Überwachung - ist die durchschnittliche Systemlast für längere Zeit höher als 5.0, erfolgt ein Geräte-Reset.
  • Cron-Überwachung - es wird geprüft ob der Cron-Daemon läuft. Falls der Prozess längere Zeit nicht verfügbar ist, löst der Watchdog einen Neustart von Cron mittels "/etc/init.d/cron restart" aus
  • SSHd-Überwachung - analog zum Cron-Daemon wird die Verfügbarkeit des "dropbear" SSH-Dienstes geprüft. Auch hier erfolgt nach längerer Nicht-Verfügbarkeit ein Neustart mittels "/etc/init.d/dropbear restart".
  • Kernel-Watchdog - sofern ein "/dev/watchdog" Device existiert, wird dieses regelmäßig beschrieben um dem Kernel die Verfügbarkeit des Systems zu signalisieren. Bleiben diese Schreib-Meldungen aus, veranlasst der Kernel einen Geräte-Reset.

Zusätzlich wird beim ersten Start (und aktiviertem Watchdog) ein Cronjob installiert welcher den Watchdog-Prozess überwacht. Auf diese Weise überwachen sich die Cron- und Watchdog-Prozesse gegenseitig.


Gründe

Verschiedene Tests haben gezeigt, dass mit Kamikaze/LuCI betriebene Geräte unter bestimmten Umständen Fehlfunktionen entwickeln welche die Erreichbarkeit des Gerätes erschweren oder gänzlich verhindern.

  • Bei sog. BSSID-Splits oder falschen Kanaleinstellungen verliert das Gerät den Kontakt zum Netz und kann daher nur noch lokal über die LAN-Ports erreicht werden, das ist bei Outdoor-Installationen meist schwer bis gar nicht möglich.
  • Bei Out-of-memory Konditionen bricht der Kernel zufällige Prozesse ab um freien Speicher zu schaffen, unter Umständen können so essentielle Dienste wie OLSR oder SSH terminert werden was einen Geräte-Reset erforderlich macht.
  • Stürzt der Cron-Prozess ab werden wichtige, sekundäre Prozesse wie Gateway-Check oder Splash-Whitelisting nicht mehr ausgeführt, das kann über einen längeren Zeitraum zu Problemen führen welche den Netzverkehr beeinträchtigen.
  • Wird durch eine Fehlfunktion eine extrem hohe Systemlast verursacht, kommt das System praktisch zum Halten, SSH-Logins und OLSR-Broadcasting werden beeinträchtigt und machen das Gerät unbrauchbar.

Die Watchdog-Implementierung versucht diese Probleme zu lösen um die Geräte zumindest erreichbar zu halten. Dies ist im Hinblick auf Outdoor-Installationen und Remote-Administration sehr wichtig um eine gewisse Netzstabilität zu garantieren. Auch lassen such Updates oder Softwarekorrekturen nur durchführen wenn die Erreichbarkeit das Gerätes gewährleistet ist.

Die Bündelung der Systemchecks in einem einzigen Prozess dient der Robustheit gegenüber Fehlfunktionen oder kaskadierten Fehlerkonditionen und bringt letztendlich Vorteile wie einen geringeren Speicherverbrauch und niedrigere Systemlast mit sich.


Source

Die aktuelle Implementierung des Watchdogs kann unter folgender Adresse eingesehen werden:
http://luci.subsignal.org/trac/browser/luci/branches/luci-0.8/contrib/package/freifunk-watchdog/src


Watchdog dauerhaft deaktivieren

Unter Umständen verursacht ein Watchdog mehr Probleme als er löst, in diesem Fall kann es wünschenswert sein, auf die bereitgestellte Funktionalität zu verzichten. Da sich Cron-Daemon und Watchdog gegenseitig überwachen, muss man zusätzlich zum Init-Script auch den entsprechenden Crontab-Eintrag entfernen. Zum Daektivieren des Watchdogs sollte folgendermaßen vorgegangen werden:

# Die Datei /etc/crontabs/root editieren und den Watchdog-Prüfjob entfernen
sed -i -e '/ffwatchd running/d' /etc/crontabs/root

# Das Init-Script dauerhaft deaktivieren 
/etc/init.d/freifunk-watchdog disable

# Anschließend den Watchdog Prozess sauber beenden
/etc/init.d/freifunk-watchdog stop

# Abschließend ggf. den Cron-Daemon neu starten
/etc/init.d/cron restart

Hinweis: Wenn ein /dev/watchdog Device vorhanden ist und der Watchdog-Prozess hart terminiert wird (killall -9), so wird der Kernel-Watchdog-Timer nicht angehalten, d.h. das System wird nach spätestens 10 Sekunden neu gestartet. Auf Atheros basierten Geräten (Fonera, DIR-300) unterstützt der Watchdog-Treiber kein Anhalten des Timers, d.h. das System bootet in jedem Fall neu!

Watchdog aktivieren

Um den Watchdog wieder zu aktivieren, reicht es folgende Kommandos auszuführen:

/etc/init.d/freifunk-watchdog enable
/etc/init.d/freifunk-watchdog boot
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Grundlagen
Freifunk
Werkzeuge