High Availability Computer Center mit hacc- Teil 2
Teil 2: Einsatz von Nagios auf den Steuerknoten
In diesem Teil wird Nagios auf den Steuerknoten eingerichtet.
Die Steuerknoten
Auf den Steuerknoten wurden die Softwarepakete pxe, syslinux, atftp, kernel_sources, ncurses (devel), dhcp, rinetd, ethtool, heartbeat und nagios verwendet. Allerdings wurde Nagios V2.5 vom Internet geladen und installiert (welches zusätzliche devel-Pakete brauchte), neben zusätzlichen Paketen wie nagios-plugin. Ebenso wurde nagiosgraph über das Internet besorgt und installiert.
Einsatz von Nagios
Die Ausfallüberwachung, sowohl für die Applikationsdienste (Dienste wie Apache, MySQL, ...) als auch für die Applikationsserver, führt Nagios aus. Dazu wurde Nagios unter /usr/local/nagios (auf dieser NFS-Ressource) installiert. Die Arbeitsknoten (Nodes) mounten alle /usr/local/nagios/libexec für die Plugins. Nagios-Nutzer ist nagios. Der Nutzer muss auch auf allen Arbeitsknoten existieren. Beide Steuerknoten haben ihre Nagios-SSH-Public-Keys allen Arbeitsknoten bekannt gemacht. Ein Anmelden ohne Rückfragen ist nach einmaligem Login von beiden Steuerknoten aus (über externe und interne Schnittstelle) möglich.
Auch bei der Apache-Konfiguration für Nagios wurde der Standard-Nutzer wwwrun durch den Nutzer nagios ersetzt (/etc/apache2/uid.conf). Weiterhin wurde dem Nutzer nagios per sudo
das Ausführen privilegierter Befehle ermöglicht (Liste 4). Dazu ruft man visudo
auf.
Liste 4: sudo-Konfiguration
# allgemein User_Alias NAGIOS = nagios Cmnd_Alias REBOOT = /sbin/init 6 Cmnd_Alias HALT = /sbin/init 0 NAGIOS ALL=(ALL) NOPASSWD: REBOOT NAGIOS ALL=(ALL) NOPASSWD: HALT # für Apache2 Cmnd_Alias APACHE2 = /etc/init.d/apache2 * NAGIOS ALL=(ALL) NOPASSWD: APACHE2 # für Mysql Cmnd_Alias MYSQL = /etc/init.d/mysql * NAGIOS ALL=(ALL) NOPASSWD: MYSQL
Die prinzipielle Nagios-Konfiguration der Applikations-Server zeigt Liste 5. Plugins prüfen das Vorhandensein eines Dienstes. Ist der Dienst nicht verfügbar, dann wird der standardisierte event_handler
namens event_service
aufgerufen. Als Parameter wird der Name des Dienstes mit übergeben. Ist der Dienst der ssh-Dienst, dann wird der Knoten zurückgesetzt (Skript 5 Zeile 73 bis 92). Ansonsten wird ein Restart des Dienstes versucht, im hartnäckigen Fall ein Reboot des Knotens (Skript 5 Zeile 94 bis 120). Bei Ausfall eines Knotens wird ein neuer Knoten gesucht (Skript 6 Zeile 70 bis 112). In diesem Fall wird davon ausgegangen, dass ein Hardwareproblem vorliegt.
Liste 5: Beispiele aus der Nagios-Konfiguration
define service{ use default-service host_name hacc-n00 ... check_command self_check_http!http://hacc-n00/ event_handler event_service!apache2 } ... define host{ use default-host host_name hacc-n00 ... event_handler event_host } ... define service{ ... retry_check_interval 1 check_command check_ssh event_handler event_service!sshd }
Nach einem erfolgreich gestarteten Reboot (Skript 5 Zeile 105 bis 115 und Skript 6 Zeile 97 bis 106) wird jeweils eine Downtime für den Knoten gesetzt (Skript 7.3), damit keine überflüssigen Benachrichtigungen abgesetzt werden und keine weiteren übereilten Reaktionen des Systems ausgeführt werden (Skript 5 Zeile 57 und Skript 6 Zeile 42).