Nagios auf eine HA Clusterinfrastrukur mit Clusterfilesystem- warum macht man so etwas. Vorteile und Nachteile gegenüber einer Master-/Slave- Konfiguration. Wodurch kann ein solcher Konstrukt erzwungen werden? Was ist beim Aufsetzen zu bedenken? Und was mach ich mit Cronjobs?
2. 2
Zur Person
Martin Fürstenau (martin.fuerstenau@oce.com)
Senior System Engineer bei Oce Printing Systems, Poing
Dozent VHS
Seit 20 Jahren in der IT, seit 19 Jahren Unix,
seit ca. 12 Jahren Linux, seit 3 Jahren Nagios
Administration von Mainframes, Unix/Linux, Windows,
Datenbanken, RZ-Automation, RZ-Planung, Netzwerk,E-
Learning, Aufbau einer Lernplattform...
3. 3
Oce European Data Center - Monitoring
Rechenzentrum von Océ Printing Systems, Poing
Ansiedelung von:
Lokaler IT
Netzwerk (Lokal, Corporate und Europa)
Entwicklungs Server
Großteil der unternehmensweiten IT
Zentrales Rechenzentrum für Europa
4. 4
Etwa 600 hosts
Davon 130 mit MS Windows
Über 160 Netzwerkkomponenten (Switches,
Router,Firewalls)
4400 services
Davon 1140 auf MS Windows
Der Rest ist haupsächlich Unix/Linux und Netzwerk
Verdoppelung im Lauf des nächsten Jahres
Was wir überwachen
6. 6
Und natürlich soll das 24x7 laufen
Fazit – das Monitoring muss hochverfügbar
sein
Was wir überwachen
7. 7
Also hochverfügbar – aber wie?
Der erste Gedanke – Master/Slave oder einfach 2 Server?
Vorteil:
einfach aufzusetzen
Nachteile:
Doppelte Konfigration
Manuelles Mischen der Logfiles f. Auswertungen
notwendig
Master/Slave ist Eigenschaft der Anwendung, nicht des
zugrunde liegenden Betriebssystems – was mache ich da
mit anderen Anwendungen, die benötigt werden?
Probleme mit passiven Checks wie z.B. SNMPTRAPS
Der zweite Gedanke – ein Cluster muss her
8. 8
Also Cluster – aber wie?
Randbedingungen:
Betriebssystem (SLES, RedHat, CentOS,Debian oder...)
Clustersuite (Kommerziell oder frei, LinuxHA, RedHat Clustersuite ...)
Clusterstorage
drdb (distributed replicated block device) oder
Cluster File System
drdb:
Preiswert
Evtl. hohe Netzlast
Gleiche Nachteile wie Master/Slave oder 2 Server
Clusterfilesystem
Sicher
Parallel zugreifbar, dadurch keine Downtime, kein Filesystemcheck
Aber Overhead/Serverlast durch Lockmanager
9. 9
Die Wahl – CentOS mit Clustersuite
Frei verfügbar
Identisch mit RedHat und RedHat Clustersuite
Clustermanager und Clusterfilesystem aus einer Hand
Synergien mit weiteren Clustern im Unternehmen (z.B. f. SAP)
Ausgereift
Gute Administrationstools
Alphanumerisch
Grafisch
Web
10. 10
Die Hardwareanforderungen - Server
Eine Clustersuite generiert deutlich mehr Grundlast
Insbesondere mit Clusterfilesystem durch das Lock
Management
Nagios parallelisiert Prozesse (!) sehr gut, kann also mehrere
CPUs ausnutzen.
Multicore CPUs skalieren nur bedingt. (DualCore ca. 1,6 – 1,8
CPU)
Bei intensivem File-IO und Memory Zugriff bricht bei Multicore-
CPUs die Performance ein.
Intel oder AMD? 64 Bit oder 32 Bit?
Redundanz in allen wichtigen Teilen (Strom, StorageController
(iSCSI oder FC), Netzwerk)
Netzwerk 2 Dual-Port oder 4 Single-Port Karten
Remote Management (IPMI - Outband)
11. 11
Die Hardwareauswahl - Storage
RAID-Controller im Storage und nicht im Server
Viele nicht zu große Platten
Redundante parallelisierbare Controller (Failover UND
Lastverteilung)
Grosser Cache
Möglichst RAID 6
Outband Management
Monitorbar
Bei FC integrierter Hub oder Verwendung von FC-Switches
12. 12
Redundante
Netzwerkanbindung
Das Resultat - Mission Control
LAN
Storage:
Infortrend RAID
2 x 1 TB RAID 5
3 Global Spare
Redundante Controller
Redundante Netzteile
Server:
2 x Supermicro
Quad Dual Core Opteron
16 GB Memory
(max 32 GB)
Redundante Fibre Channel
Controller
Redundante Netzteile
Remote Management
Karten (Outband)
als Fence Device
Redundante
Fibre Channel
Verbindung
Redundanter
Serverinterconnect f.
clusterinternen Traffik
Redundante Server
13. 13
Installation – Als erstes der Storage
Storage einrichten
RAID-Sets bauen
LUN-Mapping so einrichten, das beide Channel alle
RAIDs sehen können
d.h. 0,1 = 1,1 bzw. 1,0 = 0,0
Verifiziert wird später, wenn die Controller im Server laufen
14. 14
Installation – Operating System
Operating System, Clustersuite und GFS installieren
Netzwerkbonding für 2 Interfaces (bond0 und bond) jeweils
über 2 physikalischen Karten (eth0 + eth2 und eth1 + eth3)
einrichten.
bond1 ist für die clusterinterne Kommunikation.
Verwendung von Adressen nach RFC1918 (Private
Netze) möglich
Verwendung von gekreuzten Kabeln möglich
15. 15
Installation – Operating System- Bonding (CentOS/RedHat)
/etc/modprobe.conf
alias eth0 e1000
alias eth1 e1000
alias eth2 e1000
alias eth3 e1000
alias net-pf-10 off
install bond0 /sbin/modprobe -a eth0 eth2 && /sbin/modprobe bonding
alias bond0 bonding
install bond1 /sbin/modprobe -a eth1 eth3 && /sbin/modprobe bonding
alias bond1 bonding
options bond0 miimon=100 mode=1 max_bonds=2
options bond1 miimon=100 mode=1 max_bonds=2
18. 18
Installation – Operating System - Storage
fdisk -l
Anzahl auf dem Storage gefundener Geräte muss sein:
RAID-Sets x Storage Controller (bei Verwendung eines Hubs)
RAID-Sets x Storage Controller x FC Controller (bei Verwendung von
Switches und entsprechenem Zoning)
Verifizieren, dass das LUN-Mapping passt.
Bei gleich großen RAID-Sets hilf das Einrichten
einer Partition auf einem Set.
Die Reihenfolge muss auf allen Controllern gleich sein.
device-mapper-multipathd installieren und Reboot
21. 21
Installation – Remote Management Interfaces – Fence Devices
Konfiguration der IPMI basierten Managementkarten nach
Herstellerangabe.
Es muss eine Kennung mit Administratorrechten zur Verfügung
stehen, da der RedHat/CentOS-Cluster keine Rollen adressiert.
Mit ipmitool testen, ob sich die Server ab-/einschalten lassen,
sowie eine Statusüberprüfung möglich ist.
Bei IPMI V2 ist der Operand -C (Cipher - z.B. md5) wichtig. Der
verwendete Cipher hängt von der Management Karte ab.
Die Interfaces werden für das Fencing (fenced, Stonith) benötigt.
Alternativ sind auch z.B. über das Netz schaltbare Steckdosen
(z.B. APC) möglich.
Es sind weiter Fence Devices (z.B. FC-Switches) möglich.
22. 22
Installation – Die Software
Alle Pakete werden auf beiden Knoten installiert und getestet.
Pakete (z.B.)
Nagios
net-snmp (incl. Snmptrap)
snmptt
cacti
MySQL
....
23. 23
Cluster einrichten - Cluster Configuration Tool
GUI zum Clustermanagement - Aufruf durch system-config-cluster
Erstellt / Editiert die Datei
etc/cluster/cluster.conf
Einrichten von Failover-
Domains und Fence Devices
Einrichten von Services und
Zuordnung zu den Failover
Domains
24. 24
Der Kunstgriff - /cluster
Was ist ein Clusterfilesystem?
Es kann auf mehreren Knoten gleichzeitig gemountet sein
Ein Distributed Lockmanager, der als Demon auf den
beteiligten Clusterknoten läuft, und für ein
serverübergreifendes
Lockmanagement sorgt.
Erfolgt ein Mount nicht auf allen Knoten, sondern wird von
einem Knoten zum anderen geschoben, entfällt der
aufwendige
Filesystemcheck
Hier erfolgt der Mount auf beiden Maschinen auf /cluster.
Kommen weitere lastintensive Services hinzu, verteilt man die Last
über die Controller, mountet aber in einen Baum.
z.B. f. Cacti:
/cluster und /cluster/var/www/cacti
26. 26
Die Verzeichnisstruktur auf /cluster
/cluster
etc
httpd
logrotate.d
nagios
rc.d
sms
snmp
opt
bin
usr
lib lib64 share
nagios
nagios
nagios
var
lib
mysql
log
cacti
httpd
www
cacti
mysqld nagios
snmptrapd
snmptt
= /dev/VolGroup01/LogVol01
= /dev/VolGroup02/LogVol01
27. 27
clustat
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
CLMonNode1 1 Online, rgmanager
CLMonNode2 2 Online, Local, rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:smsd CLMonNode1 started
service:snmptraptt CLMonNode1 started
service:mysqld CLMonNode2 started
service:httpd CLMonNode1 started
service:nagios CLMonNode1 started
service:nfs CLMonNode2 started
28. 28
Cronjobs im Cluster
Umschreiben und als Demon laufen lassen
An die Entkopplung von stdin, stdout und stderr
denken
oder
An Knoten festmachen
oder
An Service festmachen
29. 29
start)
echo -n "Starting nagios:"
# Is a nagios running via the cluster manager?
/usr/sbin/clustat | grep nagios > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "ERROR! Start aborted."
echo "There is a running Nagios in the cluster!."
exit 1
fi
$NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
/etc/init.d/nagios – Start Modifikation
30. 30
load|force-reload)
printf "Running configuration check..."
/usr/sbin/clustat | grep nagios > /dev/null 2>&1
if [ $? -eq 0 ]
then
THIS_NODE=$(/usr/sbin/clustat | grep Local | awk '{print $1}')
RUN_NODE=$(/usr/sbin/clustat | grep nagios | awk '{print $2}')
if [ $THIS_NODE != $RUN_NODE ]
then
echo "ERROR! Reload aborted."
echo "Nagios is not running on this cluster node."
exit 1
fi
fi
$NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
/etc/init.d/nagios – Reload Modifikation
31. 31
Zusätzliche Adresse auf inaktivem Interface setzen
IP_ADDRESS=192.168.216.3
# Check that networking is configured.
[ ${NETWORKING} = "no" ] && exit 0
start() {
echo -n $"Setting interface bond1:0 to $IP_ADDRESS: "
if [ $UID -ne 0 ]; then
RETVAL=1
failure
else
ifconfig bond1:0 $IP_ADDRESS up
ifconfig | grep $IP_ADDRESS > /dev/null 2>&1
RETVAL=$?
[ $RETVAL -eq 0 ] && echo "ok"
fi;
return $RETVAL
}