Mission Loadbalancer Upgrade

Mission Loadbalancer Upgrade
Heute Nacht hatte das Managed Services Team die spannende Aufgabe unseren Loadbalancer Cluster auf neue Systeme umzuziehen.

Der alte Cluster lief zwar seit Jahren problemlos, allerdings erhoffen wir uns von dem neuen Setup eine gesteigerte Netzwerk Performance und durch neuere Cluster Management Pakete insgesamt auch eine bessere Wartbarkeit, wie z.B. bei unserem halbjährlichen Failovertest.

Sehr wichtig ist dabei natürlich, dass auch in der Nacht die Downtime der Services so gering wie möglich ausfällt.

Da bei uns die komplette Loadbalancer Cluster Konfiguration über Puppet provisioniert wird, war es daher auch kein Problem die Neuinstallation der Cluster Knoten sehr zügig durchzuführen.

Die tatsächliche Downtime der Services betrug daher nach der Neuprovisionierung wie erwartet auch nur wenige Sekunden und die ersten Performance Tests waren sehr vielversprechend.

Ein Beispiel für einen Service Eintrag im Puppetlabs Hiera sieht in etwa so aus (wir verwenden dafür den ldirectord aus dem Linux Virtual Server Projekt):

ldirector::member:
  "web-host1.netways.de_%{::hostname}":
    ip: "%{ipaddress_bond0_XX}"
    weight: 1
    service_name: 'web-host1.netways.de'
    ssl: true
    password: 'XXXXXXXXXX'
    ensure: 'present'

Dieser Eintrag in einer Hostname FQDN YAML Datei genügt somit, um den entsprechenden Host in den Loadbalancer Pool eines Services mit den entsprechenden Parametern (Gewichtung u.s.w.) aufzunehmen.

Im zugrundeliegenden ldirectord Puppetmodul werden zudem ausgiebig ‘Exported resources’ in Verbindung mit der PuppetDB verwendet, um am Ende die komplette Loadbalancer Konfiguration Live zu nehmen.

Wenn Sie sich für mehr Informationen zu einem redundanten, jederzeit skalierbaren Loadbalancer Setup und mehr interessieren, schauen Sie sich doch einfach ein mal unser Hosting & Services Angebot an.

Stefan Gundel

Autor: Stefan Gundel

Stefan ist ein Urgestein bei NETWAYS und arbeitet im Managed Services Team. Der internationale Durchbruch gelang Stefan als Fotomodel für den K+K Warenkorb. Nachdem er einige Jahre exklusiv für unseren Kunden StayFriends gearbeitet hat, darf er nun endlich auch wieder in anderen Projekten mitarbeiten.

Rückblick Debian Wheezy Distribution Upgrade

wheezy

Seit Anfang Mai 2013 gibt es ja nun die neue stabile Debian Distribution Wheezy.
Natürlich freut man sich auch immer darauf, dass eine neue Version kommt, weil das System im Lauf der Jahre generell immer besser geworden ist.

Aber spätestens ein paar Wochen danach wird auch jedem klar, es hilft nichts, man “muss” auch upgraden um ein Jahr nach dem Release weiterhin Security Updates zu erhalten, weil ab dann die Oldstable – in dem Fall Debian Squeeze – nicht mehr unterstützt wird.

Das Upgrade sollte man auch nicht zu lange aufschieben, weil man sich sonst Anfang nächsten Jahres nur unnötig selbst unter Druck setzt.

Ab einer gewissen Anzahl Server ist natürlich der Aufwand alle komplett neu zu installieren, und das im laufenden Serverbetrieb, trotz aller Installations Automatisierung zuviel, zumal es auch immer wieder genug Spezialfälle gibt.

Wenn man sich sicher ist, dass man die alten Konfigurationsfiles der Pakete behalten möchte, und um die Downtime der einzelnen Server möglichst kurz zu halten und nicht ständig unnötige Fragen beantworten zu müssen, kann man dann auch ein “unattended-upgrade” machen.

Falls man mehrere Server vom gleichen Typ hat empfiehlt es sich allerdings zunächst mindestens ein “normales” interaktives Upgrade zu machen.

Deshalb an dieser Stelle ein Beispiel, wie man so ein unattended-upgrade durchführen kann:

1. Zuerst alle vorhandenen Updates für Debian Squeeze einspielen, damit das System vor dem Distributionsupgrade auf einem aktuellen Stand ist.

2. Die Debian Wheezy Quellen in die /etc/apt/sources.list eintragen. Falls man noch weitere Listen im Verzeichnis /etc/apt/sources.list.d hat, müssen diese noch zusätzlich angepasst werden. Man kann die Änderung auch automatisieren mit:


sed -i 's/squeeze/wheezy/g' /etc/apt/sources.list

und/oder


sed -i 's/squeeze/wheezy/g' /etc/apt/sources.list.d/*.list 

3. Das eigentliche Distributions Upgrade kann man dann starten mit:


export DEBIAN_FRONTEND=noninteractive

yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

Das ganze in upgrade und danach erst dist-upgrade aufzuteilen hat den Vorteil, dass man beim “upgrade” noch sieht, ob es gravierende Probleme mit Paketabhängigkeiten gibt, und diese noch fixen kann vor dem abschliessenden endgültigen Distributions Upgrade.

Bisher haben alle Upgrades bei uns gut geklappt. Falls aber die Applikation z.B. wegen dem PHP Versionsupgrade von Squeeze 5.3.3 auf Wheezy 5.4.4 nicht mehr funktioniert, kann man sich immer noch durch ein Downgrade der PHP Version retten, um anschliessend die Fehler vor einem weiteren Upgrade in Ruhe beheben zu können.

Eine entsprechende Anleitung findet man z.B. hier.

Stefan Gundel

Autor: Stefan Gundel

Stefan ist ein Urgestein bei NETWAYS und arbeitet im Managed Services Team. Der internationale Durchbruch gelang Stefan als Fotomodel für den K+K Warenkorb. Nachdem er einige Jahre exklusiv für unseren Kunden StayFriends gearbeitet hat, darf er nun endlich auch wieder in anderen Projekten mitarbeiten.

SCP und Rsync Boost Parameter

speedy

Wer kennt es nicht: Es muss schnell etwas per scp oder rsync aus dem Backup oder einem LVM Snapshot auf einen anderen Server im internen Netz kopiert werden, weil gerade zur ungünstigsten Zeit z.B. eine Datenbank nicht korrigierbar ausgefallen ist.

Da die dabei anfallenden Datenvolumen heuzutage wohl eher beständig mehr als weniger werden, ist jedes bisschen Übertragungs-Speed, das man aus der Leitung kitzeln kann, sehr wichtig.

Was gerne übersehen wird: SSH bietet da zumindest einen Parameter an, mit dem man die Geschwindigkeit ordentlich nach oben schrauben kann durch die Wahl eines anderen Cypher Algorithmus, auch über rsync.

Das ganze bringt satte rund 30% mehr an Daten über die Leitung und spart dadurch natürlich auch entsprechend viel Zeit beim Kopieren.

Als Beispiel ein rsync Befehl, den ich in so einem Fall immer verwende:


rsync -aPHxz --delete -e 'ssh -c arcfour' root@:/foo/bar/* /foo/bar/

Wem das immer noch nicht reicht, der kann zusätzlich auch noch einen anderen ‘message authentication code’ angeben über den Parameter: ‘-m hmac-md5-96″

Stefan Gundel

Autor: Stefan Gundel

Stefan ist ein Urgestein bei NETWAYS und arbeitet im Managed Services Team. Der internationale Durchbruch gelang Stefan als Fotomodel für den K+K Warenkorb. Nachdem er einige Jahre exklusiv für unseren Kunden StayFriends gearbeitet hat, darf er nun endlich auch wieder in anderen Projekten mitarbeiten.

Batch Mode Cluster ssh mit der Distributed Shell dsh

muscheln

Auch in Zeiten von Puppet und Mcollective braucht man manchmal einfach auf die Schnelle die Möglichkeit, sich per ssh aus einem Server-Cluster bestimmte Informationen holen zu können, oder einfache Befehle ausführen zu können.

Hier bietet sich die oftmals in Vergessenheit geratene Distributed Shell dsh an, die sich für alle gängigen Distributionen einfach per Paketmanagement installieren lässt.

Ein getaggter Puppet Lauf über bestimmte Servertypen, z.B. um nur bestimmte Klassen auszuführen, ist nur eine Anwendung bei der sich die Distributed Shell geradezu aufdrängt.

Das ist eigentlich kein Problem, wenn man die Möglichkeit hat sich die entsprechenden Serverlisten entweder anhand der Namen aus dem DNS, der Icinga Konfiguration, oder auch nur anhand eines bestimmten abgetrennten Subnetzes für die Servertypen, zu generieren.

Nun hatte ich neulich den Fall, dass keiner der o.g. Punkte möglich war, und zusätzlich erschwerend nur ein einziges grosses Netz vorhanden war, in dem sich so ziemlich alle Geräte, inklusive Switches etc. befunden haben.

Man möchte ja, dass der ssh Lauf ohne manuellen Eingriff durchläuft und man nicht jedesmal abbrechen/bestätigen muss, wenn gerade ein Gerät in der Schleife erreicht wird, das eigentlich nicht abgefragt werden soll.

Unter der Voraussetzung, dass alle “normalen” Server per PublicKey Authentifizierung erreichbar sind (was ja z.B. beim Icinga Monitoring Benutzer i.d.R. der Fall ist) hat sich dabei folgende Befehlszeile bewährt (als einfaches Beispiel z.B. um sich den Distributions Namen ausgeben zu lassen):


dsh -M -o-oBatchMode=yes -o-oStrictHostKeyChecking=no -o-oConnectTimeout=3 \
-f ./serverliste.txt 'lsb_release -c' | \
tee /tmp/debian_version.txt

Gerade die Option BatchMode=yes ist hier alles andere als intuitiv, sorgt aber dafür, dass alle Server in der Liste, die für den Benutzer nicht per Key Authentifizierung erreichbar sind, sofort übersprungen werden.

Wenn man möchte, kann man zusätzlich noch die Option -F angeben, um den Befehl parallel auf der angegebenen Anzahl an Servern ausführen zu lassen.

Stefan Gundel

Autor: Stefan Gundel

Stefan ist ein Urgestein bei NETWAYS und arbeitet im Managed Services Team. Der internationale Durchbruch gelang Stefan als Fotomodel für den K+K Warenkorb. Nachdem er einige Jahre exklusiv für unseren Kunden StayFriends gearbeitet hat, darf er nun endlich auch wieder in anderen Projekten mitarbeiten.

Mac OS X CheatSheet Applikation und Tastaturübersicht

Seit letzter Woche bin ich stolzer Besitzer eines MacBook Air der neuen Generation.

Dies ist mein erster neuer Exkurs in die “Mac Welt”, nachdem ich mich vor langer langer Zeit schon mit diversen Zusatz Hardware-Emulatoren, z.B. auf dem guten alten Atari ST zum Testen herumgeschlagen habe. 🙂

Viele Sachen funktionieren natürlich auch einfach von Anfang an ohne großes Konfigurieren, gerade Anwendungen wie Apple Mail mit MS Exchange, IPSec VPN usw.

Aber es gibt neben der Umgewöhnung auf eine neue GUI und dem Suchen nach Ersatz für gewohnte Programme aus der Linux und Windows Welt vor allem das Problem mit der Tastatur…

Nun, für jemanden der hauptsächlich “normale” Texte schreibt ist die Apfel Tastatur ja vielleicht von Anfang an nicht schlecht, aber wenn man – als Admin wohl nicht sooo ungewöhnlich – oft diverse Sonderzeichen, Klammern etc. braucht, ist es zunächst nicht so einfach den richtigen Einstieg zu finden.

Um nicht jedes mal nachsehen zu müssen, wo denn jetzt welches Sonderzeichen beim Drücken von z.B. ctrl liegt, kann man aber relativ einfach in den Systemeinstellungen die Tastatur- und Zeichenübersicht einblenden lassen:

Tastatur Übersicht

Dann hat man oben im Tray ein weiteres Icon mit dem man sich die Infos einblenden lassen kann und beim Drücken der
jeweiligen Umschalttaste eine Übersicht was denn passieren würde wenn man bestimmte weitere Tasten drückt.

Ein weiteres sehr cooles Tool ist zum Einstieg zusätzlich die “CheatSheet” Applikation, die man sich kostenlos aus dem Appstore laden kann.

Einmal installiert und gestartet kann man sich damit den Umweg über diverse Menüpunkte eines Programms ersparen um herauszufinden welche Keyboard Shortcuts es gibt um das Programm effektiver zu bedienen.

Durch Drücken von cmd bzw. der Apfel Taste länger als zwei Sekunden bekommt man alle Infos zu den Tastenkombinationen, sowohl der aktuell ausgewählten Applikation, als auch der globalen Shortcuts, die in fast jeder Anwendung funktionieren.

cheatsheet

Für eingeschworene OS X Benutzer ist das sicher alles trivial, mir hat es über die ersten Tage aber gut weitergeholfen diese beiden Tools zu kennen.

Disclaimer: Dieser Artikel wurde mit einem Windows Notebook geschrieben, weil ich heute mein Macbook zuhause vergessen habe, es ist mir mangels Gewicht einfach nicht aufgefallen, dass es nicht im Rucksack ist…

Stefan Gundel

Autor: Stefan Gundel

Stefan ist ein Urgestein bei NETWAYS und arbeitet im Managed Services Team. Der internationale Durchbruch gelang Stefan als Fotomodel für den K+K Warenkorb. Nachdem er einige Jahre exklusiv für unseren Kunden StayFriends gearbeitet hat, darf er nun endlich auch wieder in anderen Projekten mitarbeiten.