Weekly Snap: TKmon for Servers, Puppet & Pacemaker Courses

weekly snap22 – 26 July was packed with training courses on Puppet and Pacemaker, tips for SAHI and Vagrant vboxsf, and a new monitoring software for servers to boot.
Martin presented TKmon, a simplified version of Icinga for Thomas Krenn Servers that automatically notifies Thomas Krenn for support on hardware problems.
Eva counted 92 days to the OSMC with Simon Meggle’s presentation on “End-2-End Monitoring of Web Applications with SAHI”.
She went on to introduce our Puppet training courses – the first officially certified classes in Germany for beginners, advanced users and even developers wishing to extend the configuration management software.
Continuing with courses, Lennart gave us a peek into his teaching plan on building clusters with Pacemaker as Eric shared his quick tip for delivering Javascript files and images using Vagrant vboxsf.
Lastly, Bernd lamented superficial Facebook birthday wishes while Stephanie reported on this year’s B2Run and our 17-man team of joggers.

Schulung Clusterbau mit Pacemaker

images
Ich bin dabei eine neue Schulung vorzubereiten, Clusterbau mit Pacemaker. Die Schulung wird einen Umfang von zwei oder drei Tagen haben. Sie ist soweit fertig und bietet im groben, folgende Gliederung:

  • Grundlagen
  • Installation
  • Aufbau eines Active/Passive-Clusters
  • Hinzufügen weiterer Services
  • Active/Active Cluster
  • Storage-Replikation mit DRBD
  • Fencing

Die bisher berücksichtigten Dienste sind neben einer IP-Adresse, der Apache-Webserver, MySQL und DRBD. Natürlich existiert auch schon ein Abschnitt über Icinga, ob der es allerdings in die Endfassung schafft steht noch nicht fest. Für Vorschläge bin ich allerdings offen und hoffe von euch einige per Kommentar zu erhalten.
Auch für den Fall, dass jemandem noch interessante angrenzende Themen zu Pacemaker hat, was beim Clusterbau sonst noch interessant sein könnte, einfach als Kommentar zu diesem Blockpost.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.

OSMC 2013: Der Countdown läuft – nur noch 120 Tage

Bis zum Start der OSMC 2013 verkürzen wir euch die Wartezeit mit der OSMC 2012. Heute mit Martin Gerhard Loschwitz und “Monitoring mit Pacemaker”.
 

OSMC? Was soll das denn sein und wer sind die netten Menschen in diesen Videos?
Die Open Source Monitoring Conference (kurz: OSMC) ist die internationale Plattform für alle an Open Source Monitoring Lösungen Interessierten, speziell Nagios und Icinga. Jedes Jahr gibt es hier die Möglichkeit sein Wissen über freie Monitoringsysteme zu erweitern und sich mit anderen Anwendern auszutauschen. Die Konferenz richtet sich besonders an IT-Verantwortliche aus den Bereichen System- und Netzwerkadministration, Entwicklung und IT-Management. Und die netten Menschen, die Ihr in unseren Videos zur OSMC seht, gehören dazu. 2013 wird die OSMC zum 8. Mal in Nürnberg stattfinden.

Puppet Modul für Corosync oder "Die Puppen tanzen jetzt auf mehreren Kisten"

Ziel für diesen Blog war es eigentlich, den Post selbst kürzer als die Überschrift zu halten. Dies wird mir, wie ich gerade feststelle, nicht ganz gelingen.
puppetlabsDa ich im Puppet Modul puppetlabs-corosnyc die Möglichkeiten vermisste Resourcen zu klonen, Resourcen Standards zu setzen oder mit Locations zu arbeiten, habe ich dieses Modul kurzerhand auf github geforkt und um die genannten Typen (cs_clone, cs_rsc_defaults u. cs_location) erweitert. Mit cs_location ist es nicht nur möglich eine Resource an einen Knoten zu binden, sondern die Verteilung auch regelbasiert vornehmen zu lassen.punda_github
Eine ausführliche Dokumentation befindet sich im Readme.md des Moduls und somit auch auf meiner Projektseite.
Das Schreiben eigener Typen und Provider in Ruby vermitteln wir übrigens auch in unserer nächsten Extending Puppet Schulung Anfang Juli.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.

Ja is denn schon Weihnachten? Oder wie mache ich Icinga hochverfügbar!

Wer Icinga in einer Pacemaker-Cluster-Umgebung betreiben möchte, benötigt Resource Agents. Hiermit poste ich OCF-konforme Vorschläge für icinga und ido2db.
Beide Skripte sind ähnlich aufgebaut. Die PID ist in einer Datei hinterlegt. Diese wird mit der ermittelten PID aus der Prozessliste (pgrep) und vom Commandfile bei icinga bzw. dem Socket bei ido2db verglichen. Liefern beide Vergleiche ein Wahr zurück, ist alles in Ordnung und ein Auruf mit monitor liefert ein OCF_SUCCES zurück.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.

OSMC 2012: Jetzt geht's loooohoooos!

Gestern waren wir schon brav gegen 16:00 im Holiday Inn, unserem Konferenzhotel, um mit dem Aufbau der Workshops zu beginnen.
Irgendwann gegen 21:00 sah es dann in den jeweiligen Räumen überall ungefär so aus:

Nach einem kleinen Schlummertrunk an der Hotelbar ging es dann für uns zum Kräfte tanken und profilaktischen schönheitsschlafen in die heimischen Betten. Da wir ja aus ( mehr oder weniger leidvoller) Erfahrung wissen, dass Schlaf in den kommenden Tagen ein seltener Luxus für uns werden könnte und wir mit dem an die OSMC anschließenden Puppet Camp dieses Jahr eine komplette Werktagswoche im Ausnahmezustand sind, musste doch wenigstens sichergestellt werden, dass wir nicht schon am Workshop-Dienstag augenberingt umherlaufen wie ein Rudel Pandabären.

Und nun, Dienstag kurz nach High Noon, sind auch alle Workshopteilnehmer und Workshoptrainer fleißig in ihren Räumen in Sachen Pacemaker, Puppet und Icinga unterwegs, haben schon das ein oder andere Frühstückshörnchen verputzt und fiebern insgeheim sicher schon den nächsten Konferenztagen entgegen. Für uns läuft inzwischen der unauffällige Aufbau weiter.

Und nun, lieber OSMC-Teilnehmer, musst Du Dich entscheiden…

Liebe Nation,
rate mal wer bei der diesjährigen OSMC unsere Workshops hält!
Okay… wenn Du hier nachgeschaut hast, war das eindeutig geschummelt – pfui!
Zurück zum Thema:
Den ersten Workshop, den Schummler hier schon gesehen haben, wird Martin Gerhard Loschwitz halten. Martin Gerhard wird lernbereites Publikum in Sachen Pacemaker fit machen
Martin ist, wie fortgeschrittene Schummler bereits hier gelesen haben werden, der Mann, wenn es um enthusiastische Linux-Verfechterei geht. Immerhin hat er mit dieser Mission schon im Alter von 9 Jahren angefangen und missioniert seitdem parallel zu seiner Tätigkeit als HA-Spezialist und Mitgliedschaft beim Debian Projekt auch als Autor einschlägiger Fachartikel.
Dann gäbe es da noch den Puppet-Workshop mit Thomas Gelf.
Auch den kennen Freunde der sorgfältigen Recherche vermutlich schon aus unserem Mitarbeiterblog oder seinem alle Besucherrekorde sprengenden Vortrag beim LinuxTag.
Toms Qualitäten in Sachen Workshopping stellt er tagtäglich in unseren Schulungen, oder als Senior Consultant auch direkt beim Kunden unter Beweis. Gerüchteweise hört man, dass ein fester Bestandteil seines Reisegepäcks dabei südtiroler Schinken (nicht Shinken), Schüttelbrot, Kaminwurz und erlesene Weine sind…. kann aber auch sein, dass ich mir das grad ausgedacht habe um Toms Heimatverbundenheit herauszustellen und dem Blogpost so eine persönliche Note zu verleihen. Endgültig klären ließe sich das, wenn man Ihn bei der OSMC mal direkt fragt.
Zu guter Letzt wäre da noch Philipp Deneu mit seinem Icinga Kickstart.
Wer nicht schon längst hier darauf gestoßen ist, mit wem er es zu tun hat, sollte sich den Namen Deneu unbedingt merken.
Als Senior Consultant und einer der Hoffnungsträger unter unseren Trainern weiß Philipp nicht nur genau wovon er spricht wenn es um Icinga geht… sondern auch sein Gegenüber. Und das Ganze wahlweise in fließendem Kölsch, oder nahezu fließendem Hochdeutsch. Ein klarer Vorteil auch bei einem Workshopbesuch!
Und nun, lieber OSMC-Teilnehmer, musst Du Dich entscheiden: nimmst Du den Pacemaker-Workshop mit Martin, dem enthusiastischen Linux-Verfechter, der seit der Grundschule in einer Liebesbeziehung mit SUSE steht, den Puppet-Workshop mit Tom, der zwischen Schüttelbrot und Schinken alle Besucherrekorde sprengt, oder schlägt Dein Herz für den Icinga Kickstart mit Philipp, unserem jäcken Hoffnungsträger aus der Domstadt der weiß wovon er spricht?
Zur Anmeldung geht es jedenfalls hier.

Cluster-Quelladresse ändern mit Pacemaker

Heute möchte ich gerne eine Möglichkeit vorstellen die Quelladresse eines Clusters mit Pacemaker zu ändern.
Es gibt bereits ein vorgefertiges OCF-Resource-Agent-Skript namens IPsrcaddr, dieses hat allerdings im Test bei mir nicht zuverlässig funktioniert, sodass ich mich entschied einen eigenen Resource-Agent zu implementieren:

#!/bin/bash
#
# Resource script for source adresses
#
# Description:  This script removes and adds source addresses.
#
# Author:       Carsten Wolfrum 
# License:      GNU General Public License (GPL)
# Copyright:    (C) NETWAYS GmbH
#
# OCF parameters:
# OCF_RESKEY_srcip
# OCF_RESKEY_interface
#
##########################################################################
# Initialization:
. ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs
##########################################################################
SRCIP=$OCF_RESKEY_srcip
INTERFACE=$OCF_RESKEY_interface
usage() {
  cat <<-!
usage: $0 {start|stop|status|monitor|validate-all|meta-data}
action:
        start           sets new source IP
        stop            sets main IP as source
        status          return running if the new source IP is set, not running if main IP is set
        methods         return the set of commands we support
        monitor         return TRUE if the IP address is the default outgoing address.
        meta-data       show meta data message
        validate-all    validate the instance parameters
	!
  exit $OCF_ERR_ARGS
}
meta_data()
{
cat <


1.0

This script removes and adds source addresses.

This script removes and adds source addresses.



The new source address.

The new source address.



The interface the new source address is bound on.

The interface the new source address is bound on.










END
exit $OCF_SUCCESS
}
validate_all()
{
	INTERFACETEST=$(ip a list dev $INTERFACE)
	if [ "$?" != 0 ]; then
		echo -n $INTERFACETEST
		exit $OCF_ERR_CONFIGURED
	fi
	IPTEST=$(ip a list dev $INTERFACE | grep $SRCIP)
	if [ "$?" != 0 ]; then
		echo "IP $SRCIP is not configured on interface $INTERFACE!"
		exit $OCF_ERR_CONFIGURED
	fi
        return $OCF_SUCCESS
}
monitor()
{
	SRCTEST=$(ip route | grep $INTERFACE | grep src | grep $SRCIP)
	if [ "$?" != 0 ]; then
		return $OCF_NOT_RUNNING
	fi
	return $OCF_SUCCESS
}
status()
{
	monitor
}
start()
{
	SUBNET=$(ip route | grep $INTERFACE | grep link | grep src | cut -d " " -f 1)
	DEFAULTGW=$(ip route |grep default | cut -d " " -f 3)
	ip route replace $SUBNET dev $INTERFACE src $SRCIP
	ip route replace default via $DEFAULTGW dev $INTERFACE src $SRCIP
}
stop()
{
	MAINIP=$(ip a list $INTERFACE | grep inet | head -1 | cut -d " " -f 6 | cut -d "/" -f 1)
	SUBNET=$(ip route | grep $INTERFACE | grep link | grep src | cut -d " " -f 1)
	DEFAULTGW=$(ip route |grep default | cut -d " " -f 3)
	ip route replace $SUBNET dev $INTERFACE src $MAINIP
	ip route replace default via $DEFAULTGW dev $INTERFACE
}
case $1 in
        start)
                validate_all
                start
                ;;
        stop)
                validate_all
                stop
                ;;
        status)
                status
                ;;
        monitor)
                monitor
                ;;
        validate-all)
                validate_all
                ;;
        meta-data)
                meta_data
                ;;
        notify|promote|demote)
                exit $OCF_ERR_UNIMPLEMENTED
                ;;
        usage)  usage
                exit $OCF_SUCCESS
                ;;
        *)      usage
                exit $OCF_ERR_UNIMPLEMENTED
                ;;
esac

Dieser Resource-Agent kann z.B. dazu verwendet werden um die Quell-IP von Icinga-Checks zu setzen. Dies hat den Vorteil z.B. im Falle eines 2-Knoten-Cluster nicht beide IPs in Firewall/NRPE-Daemons eintragen zu müssen, es kann dann die Cluster-IP verwendet werden.
Der Resource-Agent muss als ausführbare Datei z.B. namens IPsrcaddr2 in ein Unterverzeichnis von /usr/lib/ocf/resource.d abgelegt werden, z.B. in /usr/lib/ocf/resource.d/custom. Die Konfiguration in Corosync/Pacemaker erfolgt dann mittels:
# crm configure primitive cluster-ip-src ocf:custom:IPsrcaddr2 srcip="QUELLIP" interface="INTERFACE_DER_QUELLIP"
Beim Schwenk auf den aktiven Knoten wird dann die angegebene IP als Quell-IP für ausgehende Verbindungen benutzt, beim Schwenk von diesem Knoten wird wieder die erste konfiguierte IP des angegebenen Interfaces als Quell-IP benutzt.