Weekly Snap: Synergy, Braintower, TypeScript & Csync2

1-5 October started the month with tips on mouse and keyboard sharing, a new JavaScript language and a whole lot on monitoring.
Georg announced a new €599 deal on the Braintower SMS Gateway for Nagios and Icinga, while Lennart showed how to create a monitoring cluster with csync2.
Continuing on the monitoring theme, Eva counted 16 days to the OSMC 2012 with Michael Lübben’s presentation on SLA Reporting. She went on to arrange extra rooms for those who hoped to defy the ticket sell-out, and offer up the last few spots in the Icinga workshop.
Finally, Marcus recommended Synergy to share keyboard and mouse between multiple screens and Gunnar played with TypeScript, a new static JavaScript based language.

Monitoring Cluster fürs Prekariat

Wenn DRBD der Cluster für arme Leute ist, stelle ich heute mit csync2 eine Möglichkeit vor, die noch unterhalb von DRBD anzusiedeln ist. Csync2 ist ein Daemon, der sich um die Synchronisation einzelner Dateien oder auch ganzer Verzeichnisse kümmert. In einer SQLite Datenbank wir über Änderungen in den zu kontrollierenden Dateien Protokoll geführt und bei Bedarf von der anderen Seite, dem anderen Cluster-Knoten, angefordert und bei sich selbst abgelegt.
Icinga darf nur auf einem unseren zwei Knoten laufen, da sonst nicht nur doppelte Host- und Service-Checks ausgeführt werden, sondern womöglich auch jeweils zwei Benachrichtigungen erzeugt werden. Auch müssten Downtimes, Acknowleges oder ähnliches doppelt gesetzt werden. Dies ist natürlich nicht im Sinn eines Clusters. Um dies zu bewerkstelligen sei hier auf corosync und pacemaker verwiesen. Wir wollen uns heute jedoch lediglich um die Datensynchronisation kümmern. Es sollen nicht nur die aktuellen Daten des Monitoring-System synchronisiert werden, sondern ebenfalls die komplette Konfiguration.
Die Konfiguration von csync2 gestaltet sich sehr einfach und liegt in der Datei /etc/csync2/csync2.cfg:

nossl node1 node2;
nossl node2 node1;
group icinga
        host node1;
        host node2;
        key /etc/csync2/csync2.key_icinga;
        include /etc/csync2/csync2.cfg;
        include /etc/apache2/conf.d;
        include /usr/local/icinga/etc;
        include /usr/local/icinga/var/retention.dat;
        include /usr/local/icinga/var/icinga.log;
        include /usr/local/icinga/var/archives;
        auto younger;
}

Die ersten zwei Zeilen besagen, dass wir zwischen beiden Knoten in beide Richtungen auf SSL verzichten. Uns genügt hier eine symmetrische Verschlüsselung. Den Schlüssel erzeugen wir durch

node1# csync2 -k /etc/csync2/csync2.key_icinga

und kopieren diesen sowie auch die Konfiguration auf node2:

node1# scp /etc/csync2/csync2.key_icinga node2:/etc/csync2/
node1# scp /etc/csync2/csync2.cfg node2:/etc/csync2/

Mit den include-Anweisungen sagen wir dem Daemon, welche Dateien bzw. Verzeichnisse überwacht werden sollen. Nun können wir csync2 über den xinetd starten lassen, nach dessen Konfiguration muss der xinetd neugestartet werden. Zum Abschluss müssen wir dafür sorgen, dass auf jedem Knoten auch der andere abgefragt und gegebenfalls synchronisiert wird. Hierfür rufen wir den csync2-Client via cron auf, natürlich auf beiden Knoten.

* * * * * root /usr/sbin/csync2 -x

Nun werden jede Minute Dateien an denen Änderungen vorgenommen worden sind, auf den anderen Knoten synchronisiert. Bei Änderungen auf beiden Knoten innerhalb dieser Minute, wird die Datei mit dem neueren Zeitstempel als aktuell angesehen. Dieser Verhalten wird durch

auto younger;

eingeschaltet. Bei einem Schwenk des Clusters, ist allerdings bedingt mit Datenverlust zu rechnen. Die Logs können in diesem Besispiel 60 Sekunden alt sein und die retention.dat, je nachdem was in icinga.cfg eingestellt ist, diese Zeitspanne plus besagter Minuten veraltet sein.

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.